diff options
| author | 2019-06-16 23:49:25 +0200 | |
|---|---|---|
| committer | 2019-06-16 23:49:25 +0200 | |
| commit | e27d5967029f4f3da8889dd673ba516dcd9f3ac8 (patch) | |
| tree | 71c98afad01cafdb2884da288e494e8761c2a8ff /src/main/java/cuchaz/enigma/gui/Gui.java | |
| parent | Merge remote-tracking branch 'origin/master' into proposal-tweak (diff) | |
| download | enigma-fork-e27d5967029f4f3da8889dd673ba516dcd9f3ac8.tar.gz enigma-fork-e27d5967029f4f3da8889dd673ba516dcd9f3ac8.tar.xz enigma-fork-e27d5967029f4f3da8889dd673ba516dcd9f3ac8.zip | |
Plugin rework along with API rework: Enigma split from EnigmaProject; plugins now provide services configurable via a profile
Diffstat (limited to 'src/main/java/cuchaz/enigma/gui/Gui.java')
| -rw-r--r-- | src/main/java/cuchaz/enigma/gui/Gui.java | 45 |
1 files changed, 25 insertions, 20 deletions
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; | |||
| 31 | import cuchaz.enigma.gui.panels.PanelObf; | 31 | import cuchaz.enigma.gui.panels.PanelObf; |
| 32 | import cuchaz.enigma.gui.util.History; | 32 | import cuchaz.enigma.gui.util.History; |
| 33 | import cuchaz.enigma.throwables.IllegalNameException; | 33 | import cuchaz.enigma.throwables.IllegalNameException; |
| 34 | import cuchaz.enigma.translation.mapping.AccessModifier; | 34 | import cuchaz.enigma.translation.mapping.*; |
| 35 | import cuchaz.enigma.translation.mapping.EntryResolver; | ||
| 36 | import cuchaz.enigma.translation.mapping.ResolutionStrategy; | ||
| 37 | import cuchaz.enigma.translation.representation.entry.*; | 35 | import cuchaz.enigma.translation.representation.entry.*; |
| 38 | import cuchaz.enigma.utils.Utils; | 36 | import cuchaz.enigma.utils.Utils; |
| 39 | import de.sciss.syntaxpane.DefaultSyntaxKit; | 37 | import de.sciss.syntaxpane.DefaultSyntaxKit; |
| @@ -312,13 +310,8 @@ public class Gui { | |||
| 312 | return this.controller; | 310 | return this.controller; |
| 313 | } | 311 | } |
| 314 | 312 | ||
| 315 | public void onStartOpenJar(String message) { | 313 | public void onStartOpenJar() { |
| 316 | this.classesPanel.removeAll(); | 314 | this.classesPanel.removeAll(); |
| 317 | JPanel panel = new JPanel(); | ||
| 318 | panel.setLayout(new FlowLayout()); | ||
| 319 | panel.add(new JLabel(message)); | ||
| 320 | this.classesPanel.add(panel); | ||
| 321 | |||
| 322 | redraw(); | 315 | redraw(); |
| 323 | } | 316 | } |
| 324 | 317 | ||
| @@ -447,7 +440,7 @@ public class Gui { | |||
| 447 | 440 | ||
| 448 | this.cursorReference = reference; | 441 | this.cursorReference = reference; |
| 449 | 442 | ||
| 450 | EntryReference<Entry<?>, Entry<?>> translatedReference = controller.getDeobfuscator().deobfuscate(reference); | 443 | EntryReference<Entry<?>, Entry<?>> translatedReference = controller.project.getMapper().deobfuscate(reference); |
| 451 | 444 | ||
| 452 | infoPanel.removeAll(); | 445 | infoPanel.removeAll(); |
| 453 | if (translatedReference.entry instanceof ClassEntry) { | 446 | if (translatedReference.entry instanceof ClassEntry) { |
| @@ -509,7 +502,7 @@ public class Gui { | |||
| 509 | } | 502 | } |
| 510 | 503 | ||
| 511 | private JComboBox<AccessModifier> addModifierComboBox(JPanel container, String name, Entry entry) { | 504 | private JComboBox<AccessModifier> addModifierComboBox(JPanel container, String name, Entry entry) { |
| 512 | if (!getController().entryIsInJar(entry)) | 505 | if (!getController().project.isRenamable(entry)) |
| 513 | return null; | 506 | return null; |
| 514 | JPanel panel = new JPanel(); | 507 | JPanel panel = new JPanel(); |
| 515 | panel.setLayout(new FlowLayout(FlowLayout.LEFT, 6, 0)); | 508 | panel.setLayout(new FlowLayout(FlowLayout.LEFT, 6, 0)); |
| @@ -519,8 +512,16 @@ public class Gui { | |||
| 519 | JComboBox<AccessModifier> combo = new JComboBox<>(AccessModifier.values()); | 512 | JComboBox<AccessModifier> combo = new JComboBox<>(AccessModifier.values()); |
| 520 | ((JLabel) combo.getRenderer()).setHorizontalAlignment(JLabel.LEFT); | 513 | ((JLabel) combo.getRenderer()).setHorizontalAlignment(JLabel.LEFT); |
| 521 | combo.setPreferredSize(new Dimension(100, label.getPreferredSize().height)); | 514 | combo.setPreferredSize(new Dimension(100, label.getPreferredSize().height)); |
| 522 | combo.setSelectedIndex(getController().getDeobfuscator().getModifier(entry).ordinal()); | 515 | |
| 523 | combo.addItemListener(getController()::modifierChange); | 516 | EntryMapping mapping = controller.project.getMapper().getDeobfMapping(entry); |
| 517 | if (mapping != null) { | ||
| 518 | combo.setSelectedIndex(mapping.getAccessModifier().ordinal()); | ||
| 519 | } else { | ||
| 520 | combo.setSelectedIndex(AccessModifier.UNCHANGED.ordinal()); | ||
| 521 | } | ||
| 522 | |||
| 523 | combo.addItemListener(controller::modifierChange); | ||
| 524 | |||
| 524 | panel.add(combo); | 525 | panel.add(combo); |
| 525 | 526 | ||
| 526 | container.add(panel); | 527 | container.add(panel); |
| @@ -529,6 +530,8 @@ public class Gui { | |||
| 529 | } | 530 | } |
| 530 | 531 | ||
| 531 | public void onCaretMove(int pos) { | 532 | public void onCaretMove(int pos) { |
| 533 | EntryRemapper mapper = controller.project.getMapper(); | ||
| 534 | |||
| 532 | Token token = this.controller.getToken(pos); | 535 | Token token = this.controller.getToken(pos); |
| 533 | boolean isToken = token != null; | 536 | boolean isToken = token != null; |
| 534 | 537 | ||
| @@ -539,7 +542,7 @@ public class Gui { | |||
| 539 | shouldNavigateOnClick = false; | 542 | shouldNavigateOnClick = false; |
| 540 | Entry<?> navigationEntry = referenceEntry; | 543 | Entry<?> navigationEntry = referenceEntry; |
| 541 | if (cursorReference.context == null) { | 544 | if (cursorReference.context == null) { |
| 542 | EntryResolver resolver = controller.getDeobfuscator().getMapper().getObfResolver(); | 545 | EntryResolver resolver = mapper.getObfResolver(); |
| 543 | navigationEntry = resolver.resolveFirstEntry(referenceEntry, ResolutionStrategy.RESOLVE_ROOT); | 546 | navigationEntry = resolver.resolveFirstEntry(referenceEntry, ResolutionStrategy.RESOLVE_ROOT); |
| 544 | } | 547 | } |
| 545 | controller.navigateTo(navigationEntry); | 548 | controller.navigateTo(navigationEntry); |
| @@ -550,8 +553,7 @@ public class Gui { | |||
| 550 | boolean isFieldEntry = isToken && referenceEntry instanceof FieldEntry; | 553 | boolean isFieldEntry = isToken && referenceEntry instanceof FieldEntry; |
| 551 | boolean isMethodEntry = isToken && referenceEntry instanceof MethodEntry && !((MethodEntry) referenceEntry).isConstructor(); | 554 | boolean isMethodEntry = isToken && referenceEntry instanceof MethodEntry && !((MethodEntry) referenceEntry).isConstructor(); |
| 552 | boolean isConstructorEntry = isToken && referenceEntry instanceof MethodEntry && ((MethodEntry) referenceEntry).isConstructor(); | 555 | boolean isConstructorEntry = isToken && referenceEntry instanceof MethodEntry && ((MethodEntry) referenceEntry).isConstructor(); |
| 553 | boolean isInJar = isToken && this.controller.entryIsInJar(referenceEntry); | 556 | boolean isRenamable = isToken && this.controller.project.isRenamable(cursorReference); |
| 554 | boolean isRenamable = isToken && this.controller.getDeobfuscator().isRenamable(cursorReference); | ||
| 555 | 557 | ||
| 556 | if (isToken) { | 558 | if (isToken) { |
| 557 | showCursorReference(cursorReference); | 559 | showCursorReference(cursorReference); |
| @@ -564,12 +566,12 @@ public class Gui { | |||
| 564 | this.popupMenu.showImplementationsMenu.setEnabled(isClassEntry || isMethodEntry); | 566 | this.popupMenu.showImplementationsMenu.setEnabled(isClassEntry || isMethodEntry); |
| 565 | this.popupMenu.showCallsMenu.setEnabled(isClassEntry || isFieldEntry || isMethodEntry || isConstructorEntry); | 567 | this.popupMenu.showCallsMenu.setEnabled(isClassEntry || isFieldEntry || isMethodEntry || isConstructorEntry); |
| 566 | this.popupMenu.showCallsSpecificMenu.setEnabled(isMethodEntry); | 568 | this.popupMenu.showCallsSpecificMenu.setEnabled(isMethodEntry); |
| 567 | this.popupMenu.openEntryMenu.setEnabled(isInJar && (isClassEntry || isFieldEntry || isMethodEntry || isConstructorEntry)); | 569 | this.popupMenu.openEntryMenu.setEnabled(isRenamable && (isClassEntry || isFieldEntry || isMethodEntry || isConstructorEntry)); |
| 568 | this.popupMenu.openPreviousMenu.setEnabled(this.controller.hasPreviousReference()); | 570 | this.popupMenu.openPreviousMenu.setEnabled(this.controller.hasPreviousReference()); |
| 569 | this.popupMenu.openNextMenu.setEnabled(this.controller.hasNextReference()); | 571 | this.popupMenu.openNextMenu.setEnabled(this.controller.hasNextReference()); |
| 570 | this.popupMenu.toggleMappingMenu.setEnabled(isRenamable); | 572 | this.popupMenu.toggleMappingMenu.setEnabled(isRenamable); |
| 571 | 573 | ||
| 572 | if (isToken && this.controller.getDeobfuscator().isRemapped(referenceEntry)) { | 574 | if (isToken && !Objects.equals(referenceEntry, mapper.deobfuscate(referenceEntry))) { |
| 573 | this.popupMenu.toggleMappingMenu.setText("Reset to obfuscated"); | 575 | this.popupMenu.toggleMappingMenu.setText("Reset to obfuscated"); |
| 574 | } else { | 576 | } else { |
| 575 | this.popupMenu.toggleMappingMenu.setText("Mark as deobfuscated"); | 577 | this.popupMenu.toggleMappingMenu.setText("Mark as deobfuscated"); |
| @@ -581,7 +583,7 @@ public class Gui { | |||
| 581 | // init the text box | 583 | // init the text box |
| 582 | renameTextField = new JTextField(); | 584 | renameTextField = new JTextField(); |
| 583 | 585 | ||
| 584 | EntryReference<Entry<?>, Entry<?>> translatedReference = controller.getDeobfuscator().deobfuscate(cursorReference); | 586 | EntryReference<Entry<?>, Entry<?>> translatedReference = controller.project.getMapper().deobfuscate(cursorReference); |
| 585 | renameTextField.setText(translatedReference.getNameableName()); | 587 | renameTextField.setText(translatedReference.getNameableName()); |
| 586 | 588 | ||
| 587 | renameTextField.setPreferredSize(new Dimension(360, renameTextField.getPreferredSize().height)); | 589 | renameTextField.setPreferredSize(new Dimension(360, renameTextField.getPreferredSize().height)); |
| @@ -728,7 +730,10 @@ public class Gui { | |||
| 728 | } | 730 | } |
| 729 | 731 | ||
| 730 | public void toggleMapping() { | 732 | public void toggleMapping() { |
| 731 | if (this.controller.getDeobfuscator().isRemapped(cursorReference.entry)) { | 733 | Entry<?> obfEntry = cursorReference.entry; |
| 734 | Entry<?> deobfEntry = controller.project.getMapper().deobfuscate(obfEntry); | ||
| 735 | |||
| 736 | if (!Objects.equals(obfEntry, deobfEntry)) { | ||
| 732 | this.controller.removeMapping(cursorReference); | 737 | this.controller.removeMapping(cursorReference); |
| 733 | } else { | 738 | } else { |
| 734 | this.controller.markAsDeobfuscated(cursorReference); | 739 | this.controller.markAsDeobfuscated(cursorReference); |