summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/gui
diff options
context:
space:
mode:
authorGravatar Thog2016-10-30 23:37:29 +0100
committerGravatar Thog2016-10-30 23:37:29 +0100
commit6235bfc5ab85cdd471e315c52c413991fb9dbddf (patch)
treef8d726850a60786176f999952c2e9f7c83e5ccbd /src/main/java/cuchaz/enigma/gui
parentFix order of packages, hanging of Enigma and classes nodes not renamed when p... (diff)
downloadenigma-fork-6235bfc5ab85cdd471e315c52c413991fb9dbddf.tar.gz
enigma-fork-6235bfc5ab85cdd471e315c52c413991fb9dbddf.tar.xz
enigma-fork-6235bfc5ab85cdd471e315c52c413991fb9dbddf.zip
BREAKING CHANGE: Implement modifier transformer
Known Bugs: - Inner class modifier isn't saved to mapping - Inner class modifier isn't applied to bytecode
Diffstat (limited to 'src/main/java/cuchaz/enigma/gui')
-rw-r--r--src/main/java/cuchaz/enigma/gui/Gui.java24
-rw-r--r--src/main/java/cuchaz/enigma/gui/GuiController.java16
2 files changed, 40 insertions, 0 deletions
diff --git a/src/main/java/cuchaz/enigma/gui/Gui.java b/src/main/java/cuchaz/enigma/gui/Gui.java
index 6d9ea1d..ed18777 100644
--- a/src/main/java/cuchaz/enigma/gui/Gui.java
+++ b/src/main/java/cuchaz/enigma/gui/Gui.java
@@ -461,24 +461,29 @@ public class Gui {
461 461
462 private void showClassEntry(ClassEntry entry) { 462 private void showClassEntry(ClassEntry entry) {
463 addNameValue(m_infoPanel, "Class", entry.getName()); 463 addNameValue(m_infoPanel, "Class", entry.getName());
464 addModifierComboBox(m_infoPanel, "Modifier", entry);
464 } 465 }
465 466
466 private void showFieldEntry(FieldEntry entry) { 467 private void showFieldEntry(FieldEntry entry) {
467 addNameValue(m_infoPanel, "Field", entry.getName()); 468 addNameValue(m_infoPanel, "Field", entry.getName());
468 addNameValue(m_infoPanel, "Class", entry.getClassEntry().getName()); 469 addNameValue(m_infoPanel, "Class", entry.getClassEntry().getName());
469 addNameValue(m_infoPanel, "Type", entry.getType().toString()); 470 addNameValue(m_infoPanel, "Type", entry.getType().toString());
471 addModifierComboBox(m_infoPanel, "Modifier", entry);
470 } 472 }
471 473
472 private void showMethodEntry(MethodEntry entry) { 474 private void showMethodEntry(MethodEntry entry) {
473 addNameValue(m_infoPanel, "Method", entry.getName()); 475 addNameValue(m_infoPanel, "Method", entry.getName());
474 addNameValue(m_infoPanel, "Class", entry.getClassEntry().getName()); 476 addNameValue(m_infoPanel, "Class", entry.getClassEntry().getName());
475 addNameValue(m_infoPanel, "Signature", entry.getSignature().toString()); 477 addNameValue(m_infoPanel, "Signature", entry.getSignature().toString());
478 addModifierComboBox(m_infoPanel, "Modifier", entry);
479
476 } 480 }
477 481
478 private void showConstructorEntry(ConstructorEntry entry) { 482 private void showConstructorEntry(ConstructorEntry entry) {
479 addNameValue(m_infoPanel, "Constructor", entry.getClassEntry().getName()); 483 addNameValue(m_infoPanel, "Constructor", entry.getClassEntry().getName());
480 if (!entry.isStatic()) { 484 if (!entry.isStatic()) {
481 addNameValue(m_infoPanel, "Signature", entry.getSignature().toString()); 485 addNameValue(m_infoPanel, "Signature", entry.getSignature().toString());
486 addModifierComboBox(m_infoPanel, "Modifier", entry);
482 } 487 }
483 } 488 }
484 489
@@ -501,6 +506,25 @@ public class Gui {
501 panel.add(Utils.unboldLabel(new JLabel(value, JLabel.LEFT))); 506 panel.add(Utils.unboldLabel(new JLabel(value, JLabel.LEFT)));
502 } 507 }
503 508
509 private JComboBox<Mappings.EntryModifier> addModifierComboBox(JPanel container, String name, Entry entry)
510 {
511 if (!getController().entryIsInJar(entry))
512 return null;
513 JPanel panel = new JPanel();
514 panel.setLayout(new FlowLayout(FlowLayout.LEFT, 6, 0));
515 container.add(panel);
516 JLabel label = new JLabel(name + ":", JLabel.RIGHT);
517 label.setPreferredSize(new Dimension(100, label.getPreferredSize().height));
518 panel.add(label);
519 JComboBox<Mappings.EntryModifier> combo = new JComboBox<>(Mappings.EntryModifier.values());
520 ((JLabel)combo.getRenderer()).setHorizontalAlignment(JLabel.LEFT);
521 combo.setPreferredSize(new Dimension(100, label.getPreferredSize().height));
522 combo.setSelectedIndex(getController().getDeobfuscator().getModifier(entry).ordinal());
523 combo.addItemListener(getController()::modifierChange);
524 panel.add(combo);
525 return combo;
526 }
527
504 public void onCaretMove(int pos) { 528 public void onCaretMove(int pos) {
505 529
506 Token token = this.controller.getToken(pos); 530 Token token = this.controller.getToken(pos);
diff --git a/src/main/java/cuchaz/enigma/gui/GuiController.java b/src/main/java/cuchaz/enigma/gui/GuiController.java
index 70fb4cf..c2e202e 100644
--- a/src/main/java/cuchaz/enigma/gui/GuiController.java
+++ b/src/main/java/cuchaz/enigma/gui/GuiController.java
@@ -20,6 +20,7 @@ import cuchaz.enigma.mapping.*;
20import cuchaz.enigma.throwables.MappingParseException; 20import cuchaz.enigma.throwables.MappingParseException;
21import cuchaz.enigma.utils.ReadableToken; 21import cuchaz.enigma.utils.ReadableToken;
22 22
23import java.awt.event.ItemEvent;
23import java.io.File; 24import java.io.File;
24import java.io.IOException; 25import java.io.IOException;
25import java.util.Collection; 26import java.util.Collection;
@@ -338,4 +339,19 @@ public class GuiController {
338 } 339 }
339 }.start(); 340 }.start();
340 } 341 }
342
343 public Deobfuscator getDeobfuscator()
344 {
345 return deobfuscator;
346 }
347
348 public void modifierChange(ItemEvent event)
349 {
350 if (event.getStateChange() == ItemEvent.SELECTED)
351 {
352 deobfuscator.changeModifier(gui.m_reference.entry, (Mappings.EntryModifier) event.getItem());
353 this.isDirty = true;
354 refreshCurrentClass();
355 }
356 }
341} 357}