summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/gui/GuiController.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/cuchaz/enigma/gui/GuiController.java')
-rw-r--r--src/main/java/cuchaz/enigma/gui/GuiController.java64
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 }