From 6f1648c99408d000792a23d41a6d0ba3aee008f0 Mon Sep 17 00:00:00 2001 From: gegy1000 Date: Sat, 11 May 2019 08:50:01 +0200 Subject: Support navigation to declaration on ctrl+click --- src/main/java/cuchaz/enigma/gui/Gui.java | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'src/main/java/cuchaz/enigma/gui/Gui.java') 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 { private final MenuBar menuBar; // state public EntryReference, Entry> reference; + private boolean shouldNavigateOnClick; + public FileDialog jarFileChooser; public FileDialog tinyMappingsFileChooser; public JFileChooser enigmaMappingsFileChooser; @@ -521,19 +523,24 @@ public class Gui { } public void onCaretMove(int pos) { - Token token = this.controller.getToken(pos); boolean isToken = token != null; reference = this.controller.getReference(token); - Entry referenceEntry = reference != null ? reference.entry : null; + + if (referenceEntry != null && shouldNavigateOnClick) { + shouldNavigateOnClick = false; + navigateTo(referenceEntry); + return; + } + boolean isClassEntry = isToken && referenceEntry instanceof ClassEntry; boolean isFieldEntry = isToken && referenceEntry instanceof FieldEntry; boolean isMethodEntry = isToken && referenceEntry instanceof MethodEntry && !((MethodEntry) referenceEntry).isConstructor(); boolean isConstructorEntry = isToken && referenceEntry instanceof MethodEntry && ((MethodEntry) referenceEntry).isConstructor(); boolean isInJar = isToken && this.controller.entryIsInJar(referenceEntry); - boolean isRenameable = isToken && this.controller.getDeobfuscator().isRenamable(reference); + boolean isRenamable = isToken && this.controller.getDeobfuscator().isRenamable(reference); if (isToken) { showReference(reference); @@ -541,14 +548,14 @@ public class Gui { infoPanel.clearReference(); } - this.popupMenu.renameMenu.setEnabled(isRenameable); + this.popupMenu.renameMenu.setEnabled(isRenamable); this.popupMenu.showInheritanceMenu.setEnabled(isClassEntry || isMethodEntry || isConstructorEntry); this.popupMenu.showImplementationsMenu.setEnabled(isClassEntry || isMethodEntry); this.popupMenu.showCallsMenu.setEnabled(isClassEntry || isFieldEntry || isMethodEntry || isConstructorEntry); this.popupMenu.showCallsSpecificMenu.setEnabled(isMethodEntry); this.popupMenu.openEntryMenu.setEnabled(isInJar && (isClassEntry || isFieldEntry || isMethodEntry || isConstructorEntry)); this.popupMenu.openPreviousMenu.setEnabled(this.controller.hasPreviousLocation()); - this.popupMenu.toggleMappingMenu.setEnabled(isRenameable); + this.popupMenu.toggleMappingMenu.setEnabled(isRenamable); if (isToken && this.controller.getDeobfuscator().isRemapped(referenceEntry)) { this.popupMenu.toggleMappingMenu.setText("Reset to obfuscated"); @@ -843,4 +850,8 @@ public class Gui { public PanelDeobf getDeobfPanel() { return deobfPanel; } + + public void setShouldNavigateOnClick(boolean shouldNavigateOnClick) { + this.shouldNavigateOnClick = shouldNavigateOnClick; + } } -- cgit v1.2.3