diff options
| author | 2019-05-11 08:50:01 +0200 | |
|---|---|---|
| committer | 2019-05-11 08:50:01 +0200 | |
| commit | 6f1648c99408d000792a23d41a6d0ba3aee008f0 (patch) | |
| tree | a1745746e26307843777099c5be546ac4c77e963 /src/main/java/cuchaz/enigma/gui | |
| parent | Fix tests by properly declaring test input classes (#130) (diff) | |
| download | enigma-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/java/cuchaz/enigma/gui')
| -rw-r--r-- | src/main/java/cuchaz/enigma/gui/Gui.java | 21 | ||||
| -rw-r--r-- | src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java | 12 |
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; | |||
| 12 | import java.awt.event.MouseEvent; | 12 | import java.awt.event.MouseEvent; |
| 13 | 13 | ||
| 14 | public class PanelEditor extends JEditorPane { | 14 | public 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 | } |