diff options
Diffstat (limited to 'src/main/java/cuchaz/enigma/gui/GuiController.java')
| -rw-r--r-- | src/main/java/cuchaz/enigma/gui/GuiController.java | 64 |
1 files changed, 31 insertions, 33 deletions
diff --git a/src/main/java/cuchaz/enigma/gui/GuiController.java b/src/main/java/cuchaz/enigma/gui/GuiController.java index c2e202e..68fd484 100644 --- a/src/main/java/cuchaz/enigma/gui/GuiController.java +++ b/src/main/java/cuchaz/enigma/gui/GuiController.java | |||
| @@ -50,7 +50,7 @@ public class GuiController { | |||
| 50 | return this.isDirty; | 50 | return this.isDirty; |
| 51 | } | 51 | } |
| 52 | 52 | ||
| 53 | public void openJar(final JarFile jar) throws IOException { | 53 | public void openJar(final JarFile jar) { |
| 54 | this.gui.onStartOpenJar(); | 54 | this.gui.onStartOpenJar(); |
| 55 | this.deobfuscator = new Deobfuscator(jar); | 55 | this.deobfuscator = new Deobfuscator(jar); |
| 56 | this.gui.onFinishOpenJar(this.deobfuscator.getJarName()); | 56 | this.gui.onFinishOpenJar(this.deobfuscator.getJarName()); |
| @@ -302,42 +302,40 @@ public class GuiController { | |||
| 302 | this.gui.setSource("(deobfuscating...)"); | 302 | this.gui.setSource("(deobfuscating...)"); |
| 303 | 303 | ||
| 304 | // run the deobfuscator in a separate thread so we don't block the GUI event queue | 304 | // run the deobfuscator in a separate thread so we don't block the GUI event queue |
| 305 | new Thread() { | 305 | new Thread(() -> |
| 306 | @Override | 306 | { |
| 307 | public void run() { | 307 | // decompile,deobfuscate the bytecode |
| 308 | // decompile,deobfuscate the bytecode | 308 | CompilationUnit sourceTree = deobfuscator.getSourceTree(classEntry.getClassName()); |
| 309 | CompilationUnit sourceTree = deobfuscator.getSourceTree(classEntry.getClassName()); | 309 | if (sourceTree == null) { |
| 310 | if (sourceTree == null) { | 310 | // decompilation of this class is not supported |
| 311 | // decompilation of this class is not supported | 311 | gui.setSource("Unable to find class: " + classEntry); |
| 312 | gui.setSource("Unable to find class: " + classEntry); | 312 | return; |
| 313 | return; | 313 | } |
| 314 | } | 314 | String source = deobfuscator.getSource(sourceTree); |
| 315 | String source = deobfuscator.getSource(sourceTree); | 315 | index = deobfuscator.getSourceIndex(sourceTree, source); |
| 316 | index = deobfuscator.getSourceIndex(sourceTree, source); | 316 | gui.setSource(index.getSource()); |
| 317 | gui.setSource(index.getSource()); | 317 | if (obfReference != null) { |
| 318 | if (obfReference != null) { | 318 | showReference(obfReference); |
| 319 | showReference(obfReference); | 319 | } |
| 320 | } | ||
| 321 | 320 | ||
| 322 | // set the highlighted tokens | 321 | // set the highlighted tokens |
| 323 | List<Token> obfuscatedTokens = Lists.newArrayList(); | 322 | List<Token> obfuscatedTokens = Lists.newArrayList(); |
| 324 | List<Token> deobfuscatedTokens = Lists.newArrayList(); | 323 | List<Token> deobfuscatedTokens = Lists.newArrayList(); |
| 325 | List<Token> otherTokens = Lists.newArrayList(); | 324 | List<Token> otherTokens = Lists.newArrayList(); |
| 326 | for (Token token : index.referenceTokens()) { | 325 | for (Token token : index.referenceTokens()) { |
| 327 | EntryReference<Entry, Entry> reference = index.getDeobfReference(token); | 326 | EntryReference<Entry, Entry> reference = index.getDeobfReference(token); |
| 328 | if (referenceIsRenameable(reference)) { | 327 | if (referenceIsRenameable(reference)) { |
| 329 | if (entryHasDeobfuscatedName(reference.getNameableEntry())) { | 328 | if (entryHasDeobfuscatedName(reference.getNameableEntry())) { |
| 330 | deobfuscatedTokens.add(token); | 329 | deobfuscatedTokens.add(token); |
| 331 | } else { | ||
| 332 | obfuscatedTokens.add(token); | ||
| 333 | } | ||
| 334 | } else { | 330 | } else { |
| 335 | otherTokens.add(token); | 331 | obfuscatedTokens.add(token); |
| 336 | } | 332 | } |
| 333 | } else { | ||
| 334 | otherTokens.add(token); | ||
| 337 | } | 335 | } |
| 338 | gui.setHighlightedTokens(obfuscatedTokens, deobfuscatedTokens, otherTokens); | ||
| 339 | } | 336 | } |
| 340 | }.start(); | 337 | gui.setHighlightedTokens(obfuscatedTokens, deobfuscatedTokens, otherTokens); |
| 338 | }).start(); | ||
| 341 | } | 339 | } |
| 342 | 340 | ||
| 343 | public Deobfuscator getDeobfuscator() | 341 | public Deobfuscator getDeobfuscator() |
| @@ -349,7 +347,7 @@ public class GuiController { | |||
| 349 | { | 347 | { |
| 350 | if (event.getStateChange() == ItemEvent.SELECTED) | 348 | if (event.getStateChange() == ItemEvent.SELECTED) |
| 351 | { | 349 | { |
| 352 | deobfuscator.changeModifier(gui.m_reference.entry, (Mappings.EntryModifier) event.getItem()); | 350 | deobfuscator.changeModifier(gui.reference.entry, (Mappings.EntryModifier) event.getItem()); |
| 353 | this.isDirty = true; | 351 | this.isDirty = true; |
| 354 | refreshCurrentClass(); | 352 | refreshCurrentClass(); |
| 355 | } | 353 | } |