From e27d5967029f4f3da8889dd673ba516dcd9f3ac8 Mon Sep 17 00:00:00 2001 From: gegy1000 Date: Sun, 16 Jun 2019 23:49:25 +0200 Subject: Plugin rework along with API rework: Enigma split from EnigmaProject; plugins now provide services configurable via a profile --- src/main/java/cuchaz/enigma/gui/Gui.java | 45 ++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 20 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 a61f4dd..f5dd8a0 100644 --- a/src/main/java/cuchaz/enigma/gui/Gui.java +++ b/src/main/java/cuchaz/enigma/gui/Gui.java @@ -31,9 +31,7 @@ import cuchaz.enigma.gui.panels.PanelIdentifier; import cuchaz.enigma.gui.panels.PanelObf; import cuchaz.enigma.gui.util.History; import cuchaz.enigma.throwables.IllegalNameException; -import cuchaz.enigma.translation.mapping.AccessModifier; -import cuchaz.enigma.translation.mapping.EntryResolver; -import cuchaz.enigma.translation.mapping.ResolutionStrategy; +import cuchaz.enigma.translation.mapping.*; import cuchaz.enigma.translation.representation.entry.*; import cuchaz.enigma.utils.Utils; import de.sciss.syntaxpane.DefaultSyntaxKit; @@ -312,13 +310,8 @@ public class Gui { return this.controller; } - public void onStartOpenJar(String message) { + public void onStartOpenJar() { this.classesPanel.removeAll(); - JPanel panel = new JPanel(); - panel.setLayout(new FlowLayout()); - panel.add(new JLabel(message)); - this.classesPanel.add(panel); - redraw(); } @@ -447,7 +440,7 @@ public class Gui { this.cursorReference = reference; - EntryReference, Entry> translatedReference = controller.getDeobfuscator().deobfuscate(reference); + EntryReference, Entry> translatedReference = controller.project.getMapper().deobfuscate(reference); infoPanel.removeAll(); if (translatedReference.entry instanceof ClassEntry) { @@ -509,7 +502,7 @@ public class Gui { } private JComboBox addModifierComboBox(JPanel container, String name, Entry entry) { - if (!getController().entryIsInJar(entry)) + if (!getController().project.isRenamable(entry)) return null; JPanel panel = new JPanel(); panel.setLayout(new FlowLayout(FlowLayout.LEFT, 6, 0)); @@ -519,8 +512,16 @@ public class Gui { JComboBox combo = new JComboBox<>(AccessModifier.values()); ((JLabel) combo.getRenderer()).setHorizontalAlignment(JLabel.LEFT); combo.setPreferredSize(new Dimension(100, label.getPreferredSize().height)); - combo.setSelectedIndex(getController().getDeobfuscator().getModifier(entry).ordinal()); - combo.addItemListener(getController()::modifierChange); + + EntryMapping mapping = controller.project.getMapper().getDeobfMapping(entry); + if (mapping != null) { + combo.setSelectedIndex(mapping.getAccessModifier().ordinal()); + } else { + combo.setSelectedIndex(AccessModifier.UNCHANGED.ordinal()); + } + + combo.addItemListener(controller::modifierChange); + panel.add(combo); container.add(panel); @@ -529,6 +530,8 @@ public class Gui { } public void onCaretMove(int pos) { + EntryRemapper mapper = controller.project.getMapper(); + Token token = this.controller.getToken(pos); boolean isToken = token != null; @@ -539,7 +542,7 @@ public class Gui { shouldNavigateOnClick = false; Entry navigationEntry = referenceEntry; if (cursorReference.context == null) { - EntryResolver resolver = controller.getDeobfuscator().getMapper().getObfResolver(); + EntryResolver resolver = mapper.getObfResolver(); navigationEntry = resolver.resolveFirstEntry(referenceEntry, ResolutionStrategy.RESOLVE_ROOT); } controller.navigateTo(navigationEntry); @@ -550,8 +553,7 @@ public class Gui { 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 isRenamable = isToken && this.controller.getDeobfuscator().isRenamable(cursorReference); + boolean isRenamable = isToken && this.controller.project.isRenamable(cursorReference); if (isToken) { showCursorReference(cursorReference); @@ -564,12 +566,12 @@ public class Gui { 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.openEntryMenu.setEnabled(isRenamable && (isClassEntry || isFieldEntry || isMethodEntry || isConstructorEntry)); this.popupMenu.openPreviousMenu.setEnabled(this.controller.hasPreviousReference()); this.popupMenu.openNextMenu.setEnabled(this.controller.hasNextReference()); this.popupMenu.toggleMappingMenu.setEnabled(isRenamable); - if (isToken && this.controller.getDeobfuscator().isRemapped(referenceEntry)) { + if (isToken && !Objects.equals(referenceEntry, mapper.deobfuscate(referenceEntry))) { this.popupMenu.toggleMappingMenu.setText("Reset to obfuscated"); } else { this.popupMenu.toggleMappingMenu.setText("Mark as deobfuscated"); @@ -581,7 +583,7 @@ public class Gui { // init the text box renameTextField = new JTextField(); - EntryReference, Entry> translatedReference = controller.getDeobfuscator().deobfuscate(cursorReference); + EntryReference, Entry> translatedReference = controller.project.getMapper().deobfuscate(cursorReference); renameTextField.setText(translatedReference.getNameableName()); renameTextField.setPreferredSize(new Dimension(360, renameTextField.getPreferredSize().height)); @@ -728,7 +730,10 @@ public class Gui { } public void toggleMapping() { - if (this.controller.getDeobfuscator().isRemapped(cursorReference.entry)) { + Entry obfEntry = cursorReference.entry; + Entry deobfEntry = controller.project.getMapper().deobfuscate(obfEntry); + + if (!Objects.equals(obfEntry, deobfEntry)) { this.controller.removeMapping(cursorReference); } else { this.controller.markAsDeobfuscated(cursorReference); -- cgit v1.2.3