summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/gui/Gui.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/cuchaz/enigma/gui/Gui.java')
-rw-r--r--src/main/java/cuchaz/enigma/gui/Gui.java21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/main/java/cuchaz/enigma/gui/Gui.java b/src/main/java/cuchaz/enigma/gui/Gui.java
index 4784448..92c68ac 100644
--- a/src/main/java/cuchaz/enigma/gui/Gui.java
+++ b/src/main/java/cuchaz/enigma/gui/Gui.java
@@ -55,6 +55,8 @@ public class Gui {
55 private final MenuBar menuBar; 55 private final MenuBar menuBar;
56 // state 56 // state
57 public EntryReference<Entry<?>, Entry<?>> reference; 57 public EntryReference<Entry<?>, Entry<?>> reference;
58 private boolean shouldNavigateOnClick;
59
58 public FileDialog jarFileChooser; 60 public FileDialog jarFileChooser;
59 public FileDialog tinyMappingsFileChooser; 61 public FileDialog tinyMappingsFileChooser;
60 public JFileChooser enigmaMappingsFileChooser; 62 public JFileChooser enigmaMappingsFileChooser;
@@ -521,19 +523,24 @@ public class Gui {
521 } 523 }
522 524
523 public void onCaretMove(int pos) { 525 public void onCaretMove(int pos) {
524
525 Token token = this.controller.getToken(pos); 526 Token token = this.controller.getToken(pos);
526 boolean isToken = token != null; 527 boolean isToken = token != null;
527 528
528 reference = this.controller.getReference(token); 529 reference = this.controller.getReference(token);
529
530 Entry<?> referenceEntry = reference != null ? reference.entry : null; 530 Entry<?> referenceEntry = reference != null ? reference.entry : null;
531
532 if (referenceEntry != null && shouldNavigateOnClick) {
533 shouldNavigateOnClick = false;
534 navigateTo(referenceEntry);
535 return;
536 }
537
531 boolean isClassEntry = isToken && referenceEntry instanceof ClassEntry; 538 boolean isClassEntry = isToken && referenceEntry instanceof ClassEntry;
532 boolean isFieldEntry = isToken && referenceEntry instanceof FieldEntry; 539 boolean isFieldEntry = isToken && referenceEntry instanceof FieldEntry;
533 boolean isMethodEntry = isToken && referenceEntry instanceof MethodEntry && !((MethodEntry) referenceEntry).isConstructor(); 540 boolean isMethodEntry = isToken && referenceEntry instanceof MethodEntry && !((MethodEntry) referenceEntry).isConstructor();
534 boolean isConstructorEntry = isToken && referenceEntry instanceof MethodEntry && ((MethodEntry) referenceEntry).isConstructor(); 541 boolean isConstructorEntry = isToken && referenceEntry instanceof MethodEntry && ((MethodEntry) referenceEntry).isConstructor();
535 boolean isInJar = isToken && this.controller.entryIsInJar(referenceEntry); 542 boolean isInJar = isToken && this.controller.entryIsInJar(referenceEntry);
536 boolean isRenameable = isToken && this.controller.getDeobfuscator().isRenamable(reference); 543 boolean isRenamable = isToken && this.controller.getDeobfuscator().isRenamable(reference);
537 544
538 if (isToken) { 545 if (isToken) {
539 showReference(reference); 546 showReference(reference);
@@ -541,14 +548,14 @@ public class Gui {
541 infoPanel.clearReference(); 548 infoPanel.clearReference();
542 } 549 }
543 550
544 this.popupMenu.renameMenu.setEnabled(isRenameable); 551 this.popupMenu.renameMenu.setEnabled(isRenamable);
545 this.popupMenu.showInheritanceMenu.setEnabled(isClassEntry || isMethodEntry || isConstructorEntry); 552 this.popupMenu.showInheritanceMenu.setEnabled(isClassEntry || isMethodEntry || isConstructorEntry);
546 this.popupMenu.showImplementationsMenu.setEnabled(isClassEntry || isMethodEntry); 553 this.popupMenu.showImplementationsMenu.setEnabled(isClassEntry || isMethodEntry);
547 this.popupMenu.showCallsMenu.setEnabled(isClassEntry || isFieldEntry || isMethodEntry || isConstructorEntry); 554 this.popupMenu.showCallsMenu.setEnabled(isClassEntry || isFieldEntry || isMethodEntry || isConstructorEntry);
548 this.popupMenu.showCallsSpecificMenu.setEnabled(isMethodEntry); 555 this.popupMenu.showCallsSpecificMenu.setEnabled(isMethodEntry);
549 this.popupMenu.openEntryMenu.setEnabled(isInJar && (isClassEntry || isFieldEntry || isMethodEntry || isConstructorEntry)); 556 this.popupMenu.openEntryMenu.setEnabled(isInJar && (isClassEntry || isFieldEntry || isMethodEntry || isConstructorEntry));
550 this.popupMenu.openPreviousMenu.setEnabled(this.controller.hasPreviousLocation()); 557 this.popupMenu.openPreviousMenu.setEnabled(this.controller.hasPreviousLocation());
551 this.popupMenu.toggleMappingMenu.setEnabled(isRenameable); 558 this.popupMenu.toggleMappingMenu.setEnabled(isRenamable);
552 559
553 if (isToken && this.controller.getDeobfuscator().isRemapped(referenceEntry)) { 560 if (isToken && this.controller.getDeobfuscator().isRemapped(referenceEntry)) {
554 this.popupMenu.toggleMappingMenu.setText("Reset to obfuscated"); 561 this.popupMenu.toggleMappingMenu.setText("Reset to obfuscated");
@@ -843,4 +850,8 @@ public class Gui {
843 public PanelDeobf getDeobfPanel() { 850 public PanelDeobf getDeobfPanel() {
844 return deobfPanel; 851 return deobfPanel;
845 } 852 }
853
854 public void setShouldNavigateOnClick(boolean shouldNavigateOnClick) {
855 this.shouldNavigateOnClick = shouldNavigateOnClick;
856 }
846} 857}