From 6235bfc5ab85cdd471e315c52c413991fb9dbddf Mon Sep 17 00:00:00 2001 From: Thog Date: Sun, 30 Oct 2016 23:37:29 +0100 Subject: BREAKING CHANGE: Implement modifier transformer Known Bugs: - Inner class modifier isn't saved to mapping - Inner class modifier isn't applied to bytecode --- src/main/java/cuchaz/enigma/gui/Gui.java | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (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 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 { private void showClassEntry(ClassEntry entry) { addNameValue(m_infoPanel, "Class", entry.getName()); + addModifierComboBox(m_infoPanel, "Modifier", entry); } private void showFieldEntry(FieldEntry entry) { addNameValue(m_infoPanel, "Field", entry.getName()); addNameValue(m_infoPanel, "Class", entry.getClassEntry().getName()); addNameValue(m_infoPanel, "Type", entry.getType().toString()); + addModifierComboBox(m_infoPanel, "Modifier", entry); } private void showMethodEntry(MethodEntry entry) { addNameValue(m_infoPanel, "Method", entry.getName()); addNameValue(m_infoPanel, "Class", entry.getClassEntry().getName()); addNameValue(m_infoPanel, "Signature", entry.getSignature().toString()); + addModifierComboBox(m_infoPanel, "Modifier", entry); + } private void showConstructorEntry(ConstructorEntry entry) { addNameValue(m_infoPanel, "Constructor", entry.getClassEntry().getName()); if (!entry.isStatic()) { addNameValue(m_infoPanel, "Signature", entry.getSignature().toString()); + addModifierComboBox(m_infoPanel, "Modifier", entry); } } @@ -501,6 +506,25 @@ public class Gui { panel.add(Utils.unboldLabel(new JLabel(value, JLabel.LEFT))); } + private JComboBox addModifierComboBox(JPanel container, String name, Entry entry) + { + if (!getController().entryIsInJar(entry)) + return null; + JPanel panel = new JPanel(); + panel.setLayout(new FlowLayout(FlowLayout.LEFT, 6, 0)); + container.add(panel); + JLabel label = new JLabel(name + ":", JLabel.RIGHT); + label.setPreferredSize(new Dimension(100, label.getPreferredSize().height)); + panel.add(label); + JComboBox combo = new JComboBox<>(Mappings.EntryModifier.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); + panel.add(combo); + return combo; + } + public void onCaretMove(int pos) { Token token = this.controller.getToken(pos); -- cgit v1.2.3