summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorGravatar gegy10002019-05-11 08:50:01 +0200
committerGravatar gegy10002019-05-11 08:50:01 +0200
commit6f1648c99408d000792a23d41a6d0ba3aee008f0 (patch)
treea1745746e26307843777099c5be546ac4c77e963 /src/main
parentFix tests by properly declaring test input classes (#130) (diff)
downloadenigma-fork-6f1648c99408d000792a23d41a6d0ba3aee008f0.tar.gz
enigma-fork-6f1648c99408d000792a23d41a6d0ba3aee008f0.tar.xz
enigma-fork-6f1648c99408d000792a23d41a6d0ba3aee008f0.zip
Support navigation to declaration on ctrl+click
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/cuchaz/enigma/gui/Gui.java21
-rw-r--r--src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java12
2 files changed, 24 insertions, 9 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}
diff --git a/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java b/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java
index 9b01631..f766743 100644
--- a/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java
+++ b/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java
@@ -12,11 +12,7 @@ import java.awt.event.MouseAdapter;
12import java.awt.event.MouseEvent; 12import java.awt.event.MouseEvent;
13 13
14public class PanelEditor extends JEditorPane { 14public class PanelEditor extends JEditorPane {
15 private final Gui gui;
16
17 public PanelEditor(Gui gui) { 15 public PanelEditor(Gui gui) {
18 this.gui = gui;
19
20 this.setEditable(false); 16 this.setEditable(false);
21 this.setSelectionColor(new Color(31, 46, 90)); 17 this.setSelectionColor(new Color(31, 46, 90));
22 this.setCaret(new BrowserCaret()); 18 this.setCaret(new BrowserCaret());
@@ -66,6 +62,14 @@ public class PanelEditor extends JEditorPane {
66 default: 62 default:
67 break; 63 break;
68 } 64 }
65
66 gui.setShouldNavigateOnClick(event.isControlDown());
67 }
68
69 @Override
70 public void keyReleased(KeyEvent event) {
71 super.keyReleased(event);
72 gui.setShouldNavigateOnClick(event.isControlDown());
69 } 73 }
70 }); 74 });
71 } 75 }