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/Gui.java | |
| 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/Gui.java')
| -rw-r--r-- | src/main/java/cuchaz/enigma/gui/Gui.java | 21 |
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 | } |