diff options
| author | 2016-08-23 13:49:24 +0200 | |
|---|---|---|
| committer | 2016-08-23 13:49:24 +0200 | |
| commit | 3a50fea029b9f0355cba1bf8f9c5bb941298bc4a (patch) | |
| tree | 8e5abd22e8aaf4082b7e24d02f559a12c12c8714 /src/main/java | |
| parent | Don't trust Procyon for arguments positions (Fix #7) (diff) | |
| download | enigma-3a50fea029b9f0355cba1bf8f9c5bb941298bc4a.tar.gz enigma-3a50fea029b9f0355cba1bf8f9c5bb941298bc4a.tar.xz enigma-3a50fea029b9f0355cba1bf8f9c5bb941298bc4a.zip | |
Add the ability to rename package and classes in panels
Diffstat (limited to 'src/main/java')
9 files changed, 165 insertions, 37 deletions
diff --git a/src/main/java/cuchaz/enigma/Main.java b/src/main/java/cuchaz/enigma/Main.java index a1007cfe..9dad5015 100644 --- a/src/main/java/cuchaz/enigma/Main.java +++ b/src/main/java/cuchaz/enigma/Main.java | |||
| @@ -33,7 +33,7 @@ public class Main { | |||
| 33 | } | 33 | } |
| 34 | 34 | ||
| 35 | // DEBUG | 35 | // DEBUG |
| 36 | //gui.getController().openDeclaration(new ClassEntry("none/asj")); | 36 | //gui.getController().openDeclaration(new ClassEntry("net/minecraft/item/Item")); |
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | private static File getFile(String path) { | 39 | private static File getFile(String path) { |
diff --git a/src/main/java/cuchaz/enigma/gui/ClassMatchingGui.java b/src/main/java/cuchaz/enigma/gui/ClassMatchingGui.java index ec639001..3cd1705a 100644 --- a/src/main/java/cuchaz/enigma/gui/ClassMatchingGui.java +++ b/src/main/java/cuchaz/enigma/gui/ClassMatchingGui.java | |||
| @@ -131,8 +131,8 @@ public class ClassMatchingGui { | |||
| 131 | sourceTypePanel.add(button); | 131 | sourceTypePanel.add(button); |
| 132 | } | 132 | } |
| 133 | 133 | ||
| 134 | m_sourceClasses = new ClassSelector(ClassSelector.DEOBF_CLASS_COMPARATOR); | 134 | m_sourceClasses = new ClassSelector(null, ClassSelector.DEOBF_CLASS_COMPARATOR); |
| 135 | m_sourceClasses.setListener(classEntry -> setSourceClass(classEntry)); | 135 | m_sourceClasses.setSelectionListener(this::setSourceClass); |
| 136 | JScrollPane sourceScroller = new JScrollPane(m_sourceClasses); | 136 | JScrollPane sourceScroller = new JScrollPane(m_sourceClasses); |
| 137 | sourcePanel.add(sourceScroller); | 137 | sourcePanel.add(sourceScroller); |
| 138 | 138 | ||
| @@ -147,8 +147,8 @@ public class ClassMatchingGui { | |||
| 147 | destPanel.add(m_top10Matches); | 147 | destPanel.add(m_top10Matches); |
| 148 | m_top10Matches.addActionListener(event -> toggleTop10Matches()); | 148 | m_top10Matches.addActionListener(event -> toggleTop10Matches()); |
| 149 | 149 | ||
| 150 | m_destClasses = new ClassSelector(ClassSelector.DEOBF_CLASS_COMPARATOR); | 150 | m_destClasses = new ClassSelector(null, ClassSelector.DEOBF_CLASS_COMPARATOR); |
| 151 | m_destClasses.setListener(this::setDestClass); | 151 | m_destClasses.setSelectionListener(this::setDestClass); |
| 152 | JScrollPane destScroller = new JScrollPane(m_destClasses); | 152 | JScrollPane destScroller = new JScrollPane(m_destClasses); |
| 153 | destPanel.add(destScroller); | 153 | destPanel.add(destScroller); |
| 154 | 154 | ||
diff --git a/src/main/java/cuchaz/enigma/gui/ClassSelector.java b/src/main/java/cuchaz/enigma/gui/ClassSelector.java index 3df90420..ed0f6c8d 100644 --- a/src/main/java/cuchaz/enigma/gui/ClassSelector.java +++ b/src/main/java/cuchaz/enigma/gui/ClassSelector.java | |||
| @@ -14,35 +14,42 @@ import com.google.common.collect.ArrayListMultimap; | |||
| 14 | import com.google.common.collect.Lists; | 14 | import com.google.common.collect.Lists; |
| 15 | import com.google.common.collect.Maps; | 15 | import com.google.common.collect.Maps; |
| 16 | import com.google.common.collect.Multimap; | 16 | import com.google.common.collect.Multimap; |
| 17 | import cuchaz.enigma.gui.node.ClassSelectorClassNode; | ||
| 18 | import cuchaz.enigma.gui.node.ClassSelectorPackageNode; | ||
| 19 | import cuchaz.enigma.mapping.ClassEntry; | ||
| 20 | import cuchaz.enigma.throwables.IllegalNameException; | ||
| 17 | 21 | ||
| 22 | import javax.swing.*; | ||
| 23 | import javax.swing.event.CellEditorListener; | ||
| 24 | import javax.swing.event.ChangeEvent; | ||
| 25 | import javax.swing.event.TreeSelectionEvent; | ||
| 26 | import javax.swing.tree.*; | ||
| 18 | import java.awt.event.MouseAdapter; | 27 | import java.awt.event.MouseAdapter; |
| 19 | import java.awt.event.MouseEvent; | 28 | import java.awt.event.MouseEvent; |
| 20 | import java.util.*; | 29 | import java.util.*; |
| 21 | 30 | ||
| 22 | import javax.swing.JTree; | ||
| 23 | import javax.swing.tree.DefaultMutableTreeNode; | ||
| 24 | import javax.swing.tree.DefaultTreeModel; | ||
| 25 | import javax.swing.tree.TreePath; | ||
| 26 | |||
| 27 | import cuchaz.enigma.gui.node.ClassSelectorClassNode; | ||
| 28 | import cuchaz.enigma.gui.node.ClassSelectorPackageNode; | ||
| 29 | import cuchaz.enigma.mapping.ClassEntry; | ||
| 30 | |||
| 31 | public class ClassSelector extends JTree { | 31 | public class ClassSelector extends JTree { |
| 32 | 32 | ||
| 33 | public static final Comparator<ClassEntry> DEOBF_CLASS_COMPARATOR = (a, b) -> a.getName().compareTo(b.getName()); | 33 | public static final Comparator<ClassEntry> DEOBF_CLASS_COMPARATOR = (a, b) -> a.getName().compareTo(b.getName()); |
| 34 | private DefaultMutableTreeNode rootNodes; | ||
| 34 | 35 | ||
| 35 | public interface ClassSelectionListener { | 36 | public interface ClassSelectionListener { |
| 36 | void onSelectClass(ClassEntry classEntry); | 37 | void onSelectClass(ClassEntry classEntry); |
| 37 | } | 38 | } |
| 38 | 39 | ||
| 39 | private ClassSelectionListener listener; | 40 | public interface RenameSelectionListener { |
| 41 | void onSelectionRename(Object prevData, Object data, DefaultMutableTreeNode node); | ||
| 42 | } | ||
| 43 | |||
| 44 | private ClassSelectionListener selectionListener; | ||
| 45 | private RenameSelectionListener renameSelectionListener; | ||
| 40 | private Comparator<ClassEntry> comparator; | 46 | private Comparator<ClassEntry> comparator; |
| 41 | 47 | ||
| 42 | public ClassSelector(Comparator<ClassEntry> comparator) { | 48 | public ClassSelector(Gui gui, Comparator<ClassEntry> comparator) { |
| 43 | this.comparator = comparator; | 49 | this.comparator = comparator; |
| 44 | 50 | ||
| 45 | // configure the tree control | 51 | // configure the tree control |
| 52 | setEditable(gui != null); | ||
| 46 | setRootVisible(false); | 53 | setRootVisible(false); |
| 47 | setShowsRootHandles(false); | 54 | setShowsRootHandles(false); |
| 48 | setModel(null); | 55 | setModel(null); |
| @@ -51,23 +58,109 @@ public class ClassSelector extends JTree { | |||
| 51 | addMouseListener(new MouseAdapter() { | 58 | addMouseListener(new MouseAdapter() { |
| 52 | @Override | 59 | @Override |
| 53 | public void mouseClicked(MouseEvent event) { | 60 | public void mouseClicked(MouseEvent event) { |
| 54 | if (listener != null && event.getClickCount() == 2) { | 61 | if (selectionListener != null && event.getClickCount() == 2) { |
| 55 | // get the selected node | 62 | // get the selected node |
| 56 | TreePath path = getSelectionPath(); | 63 | TreePath path = getSelectionPath(); |
| 57 | if (path != null && path.getLastPathComponent() instanceof ClassSelectorClassNode) { | 64 | if (path != null && path.getLastPathComponent() instanceof ClassSelectorClassNode) { |
| 58 | ClassSelectorClassNode node = (ClassSelectorClassNode) path.getLastPathComponent(); | 65 | ClassSelectorClassNode node = (ClassSelectorClassNode) path.getLastPathComponent(); |
| 59 | listener.onSelectClass(node.getClassEntry()); | 66 | selectionListener.onSelectClass(node.getClassEntry()); |
| 60 | } | 67 | } |
| 61 | } | 68 | } |
| 62 | } | 69 | } |
| 63 | }); | 70 | }); |
| 64 | 71 | ||
| 72 | if (gui != null) | ||
| 73 | { | ||
| 74 | final JTree tree = this; | ||
| 75 | |||
| 76 | final DefaultTreeCellEditor editor = new DefaultTreeCellEditor(tree, | ||
| 77 | (DefaultTreeCellRenderer) tree.getCellRenderer()) | ||
| 78 | { | ||
| 79 | @Override public boolean isCellEditable(EventObject event) | ||
| 80 | { | ||
| 81 | return !(event instanceof MouseEvent) && super.isCellEditable(event); | ||
| 82 | } | ||
| 83 | }; | ||
| 84 | this.setCellEditor(editor); | ||
| 85 | editor.addCellEditorListener(new CellEditorListener() | ||
| 86 | { | ||
| 87 | @Override public void editingStopped(ChangeEvent e) | ||
| 88 | { | ||
| 89 | String data = editor.getCellEditorValue().toString(); | ||
| 90 | TreePath path = getSelectionPath(); | ||
| 91 | |||
| 92 | Object realPath = path.getLastPathComponent(); | ||
| 93 | if (realPath != null && realPath instanceof DefaultMutableTreeNode && data != null) | ||
| 94 | { | ||
| 95 | DefaultMutableTreeNode node = (DefaultMutableTreeNode) realPath; | ||
| 96 | TreeNode parentNode = node.getParent(); | ||
| 97 | if (parentNode == null) | ||
| 98 | return; | ||
| 99 | boolean allowEdit = true; | ||
| 100 | for (int i = 0; i < parentNode.getChildCount(); i++) | ||
| 101 | { | ||
| 102 | TreeNode childNode = parentNode.getChildAt(i); | ||
| 103 | if (childNode != null && childNode.toString().equals(data) && childNode != node) | ||
| 104 | { | ||
| 105 | allowEdit = false; | ||
| 106 | break; | ||
| 107 | } | ||
| 108 | } | ||
| 109 | if (allowEdit && renameSelectionListener != null) | ||
| 110 | { | ||
| 111 | Object prevData = node.getUserObject(); | ||
| 112 | Object objectData = node.getUserObject() instanceof ClassEntry ? new ClassEntry(((ClassEntry)prevData).getPackageName() + "/" + data) : data; | ||
| 113 | try | ||
| 114 | { | ||
| 115 | renameSelectionListener.onSelectionRename(node.getUserObject(), objectData, node); | ||
| 116 | node.setUserObject(objectData); | ||
| 117 | } catch (IllegalNameException ex) | ||
| 118 | { | ||
| 119 | JOptionPane.showOptionDialog(gui.getFrame(), ex.getMessage(), "Enigma - Error", JOptionPane.OK_OPTION, | ||
| 120 | JOptionPane.ERROR_MESSAGE, null, new String[] {"Ok"}, "OK"); | ||
| 121 | editor.cancelCellEditing(); | ||
| 122 | } | ||
| 123 | } | ||
| 124 | else | ||
| 125 | editor.cancelCellEditing(); | ||
| 126 | } | ||
| 127 | |||
| 128 | } | ||
| 129 | |||
| 130 | @Override public void editingCanceled(ChangeEvent e) | ||
| 131 | { | ||
| 132 | // NOP | ||
| 133 | } | ||
| 134 | }); | ||
| 135 | } | ||
| 65 | // init defaults | 136 | // init defaults |
| 66 | this.listener = null; | 137 | this.selectionListener = null; |
| 138 | this.renameSelectionListener = null; | ||
| 139 | } | ||
| 140 | |||
| 141 | public boolean isDuplicate(Object[] nodes, String data) | ||
| 142 | { | ||
| 143 | int count = 0; | ||
| 144 | |||
| 145 | for (Object node : nodes) | ||
| 146 | { | ||
| 147 | if (node.toString().equals(data)) | ||
| 148 | { | ||
| 149 | count++; | ||
| 150 | if (count == 2) | ||
| 151 | return true; | ||
| 152 | } | ||
| 153 | } | ||
| 154 | return false; | ||
| 155 | } | ||
| 156 | |||
| 157 | public void setSelectionListener(ClassSelectionListener val) { | ||
| 158 | this.selectionListener = val; | ||
| 67 | } | 159 | } |
| 68 | 160 | ||
| 69 | public void setListener(ClassSelectionListener val) { | 161 | public void setRenameSelectionListener(RenameSelectionListener renameSelectionListener) |
| 70 | this.listener = val; | 162 | { |
| 163 | this.renameSelectionListener = renameSelectionListener; | ||
| 71 | } | 164 | } |
| 72 | 165 | ||
| 73 | public void setClasses(Collection<ClassEntry> classEntries) { | 166 | public void setClasses(Collection<ClassEntry> classEntries) { |
| @@ -105,12 +198,12 @@ public class ClassSelector extends JTree { | |||
| 105 | } | 198 | } |
| 106 | }); | 199 | }); |
| 107 | 200 | ||
| 108 | // create the root node and the package nodes | 201 | // create the rootNodes node and the package nodes |
| 109 | DefaultMutableTreeNode root = new DefaultMutableTreeNode(); | 202 | rootNodes = new DefaultMutableTreeNode(); |
| 110 | for (String packageName : sortedPackageNames) { | 203 | for (String packageName : sortedPackageNames) { |
| 111 | ClassSelectorPackageNode node = new ClassSelectorPackageNode(packageName); | 204 | ClassSelectorPackageNode node = new ClassSelectorPackageNode(packageName); |
| 112 | packages.put(packageName, node); | 205 | packages.put(packageName, node); |
| 113 | root.add(node); | 206 | rootNodes.add(node); |
| 114 | } | 207 | } |
| 115 | 208 | ||
| 116 | // put the classes into packages | 209 | // put the classes into packages |
| @@ -133,7 +226,7 @@ public class ClassSelector extends JTree { | |||
| 133 | } | 226 | } |
| 134 | 227 | ||
| 135 | // finally, update the tree control | 228 | // finally, update the tree control |
| 136 | setModel(new DefaultTreeModel(root)); | 229 | setModel(new DefaultTreeModel(rootNodes)); |
| 137 | 230 | ||
| 138 | restoreExpanstionState(this, 0, state); | 231 | restoreExpanstionState(this, 0, state); |
| 139 | } | 232 | } |
diff --git a/src/main/java/cuchaz/enigma/gui/Gui.java b/src/main/java/cuchaz/enigma/gui/Gui.java index fd59a816..bc49a3ff 100644 --- a/src/main/java/cuchaz/enigma/gui/Gui.java +++ b/src/main/java/cuchaz/enigma/gui/Gui.java | |||
| @@ -36,6 +36,7 @@ import de.sciss.syntaxpane.DefaultSyntaxKit; | |||
| 36 | import javax.swing.*; | 36 | import javax.swing.*; |
| 37 | import javax.swing.text.BadLocationException; | 37 | import javax.swing.text.BadLocationException; |
| 38 | import javax.swing.text.Highlighter; | 38 | import javax.swing.text.Highlighter; |
| 39 | import javax.swing.tree.DefaultMutableTreeNode; | ||
| 39 | import javax.swing.tree.DefaultTreeModel; | 40 | import javax.swing.tree.DefaultTreeModel; |
| 40 | import javax.swing.tree.TreeNode; | 41 | import javax.swing.tree.TreeNode; |
| 41 | import javax.swing.tree.TreePath; | 42 | import javax.swing.tree.TreePath; |
| @@ -750,4 +751,22 @@ public class Gui { | |||
| 750 | this.frame.validate(); | 751 | this.frame.validate(); |
| 751 | this.frame.repaint(); | 752 | this.frame.repaint(); |
| 752 | } | 753 | } |
| 754 | |||
| 755 | public void onPanelRename(Object prevData, Object data, DefaultMutableTreeNode node) throws IllegalNameException | ||
| 756 | { | ||
| 757 | // package rename | ||
| 758 | if (data instanceof String) | ||
| 759 | { | ||
| 760 | for (int i = 0; i < node.getChildCount(); i++) | ||
| 761 | { | ||
| 762 | DefaultMutableTreeNode childNode = (DefaultMutableTreeNode) node.getChildAt(i); | ||
| 763 | ClassEntry prevDataChild = (ClassEntry) childNode.getUserObject(); | ||
| 764 | ClassEntry dataChild = new ClassEntry(data + "/" + prevDataChild.getSimpleName()); | ||
| 765 | this.controller.rename(new EntryReference<>(prevDataChild, prevDataChild.getName()), dataChild.getName()); | ||
| 766 | } | ||
| 767 | } | ||
| 768 | // class rename | ||
| 769 | else if (data instanceof ClassEntry) | ||
| 770 | this.controller.rename(new EntryReference<>((ClassEntry) prevData, ((ClassEntry) prevData).getName()), ((ClassEntry) data).getName()); | ||
| 771 | } | ||
| 753 | } | 772 | } |
diff --git a/src/main/java/cuchaz/enigma/gui/MemberMatchingGui.java b/src/main/java/cuchaz/enigma/gui/MemberMatchingGui.java index 60c6d8e8..30902c44 100644 --- a/src/main/java/cuchaz/enigma/gui/MemberMatchingGui.java +++ b/src/main/java/cuchaz/enigma/gui/MemberMatchingGui.java | |||
| @@ -35,7 +35,6 @@ import cuchaz.enigma.analysis.SourceIndex; | |||
| 35 | import cuchaz.enigma.analysis.Token; | 35 | import cuchaz.enigma.analysis.Token; |
| 36 | import cuchaz.enigma.convert.ClassMatches; | 36 | import cuchaz.enigma.convert.ClassMatches; |
| 37 | import cuchaz.enigma.convert.MemberMatches; | 37 | import cuchaz.enigma.convert.MemberMatches; |
| 38 | import cuchaz.enigma.gui.ClassSelector.ClassSelectionListener; | ||
| 39 | import cuchaz.enigma.gui.highlight.DeobfuscatedHighlightPainter; | 38 | import cuchaz.enigma.gui.highlight.DeobfuscatedHighlightPainter; |
| 40 | import cuchaz.enigma.gui.highlight.ObfuscatedHighlightPainter; | 39 | import cuchaz.enigma.gui.highlight.ObfuscatedHighlightPainter; |
| 41 | import cuchaz.enigma.mapping.ClassEntry; | 40 | import cuchaz.enigma.mapping.ClassEntry; |
| @@ -139,13 +138,8 @@ public class MemberMatchingGui<T extends Entry> { | |||
| 139 | sourceTypePanel.add(button); | 138 | sourceTypePanel.add(button); |
| 140 | } | 139 | } |
| 141 | 140 | ||
| 142 | m_sourceClasses = new ClassSelector(ClassSelector.DEOBF_CLASS_COMPARATOR); | 141 | m_sourceClasses = new ClassSelector(null, ClassSelector.DEOBF_CLASS_COMPARATOR); |
| 143 | m_sourceClasses.setListener(new ClassSelectionListener() { | 142 | m_sourceClasses.setSelectionListener(this::setSourceClass); |
| 144 | @Override | ||
| 145 | public void onSelectClass(ClassEntry classEntry) { | ||
| 146 | setSourceClass(classEntry); | ||
| 147 | } | ||
| 148 | }); | ||
| 149 | JScrollPane sourceScroller = new JScrollPane(m_sourceClasses); | 143 | JScrollPane sourceScroller = new JScrollPane(m_sourceClasses); |
| 150 | classesPanel.add(sourceScroller); | 144 | classesPanel.add(sourceScroller); |
| 151 | 145 | ||
diff --git a/src/main/java/cuchaz/enigma/gui/node/ClassSelectorClassNode.java b/src/main/java/cuchaz/enigma/gui/node/ClassSelectorClassNode.java index e0835725..1c9dad4b 100644 --- a/src/main/java/cuchaz/enigma/gui/node/ClassSelectorClassNode.java +++ b/src/main/java/cuchaz/enigma/gui/node/ClassSelectorClassNode.java | |||
| @@ -20,6 +20,7 @@ public class ClassSelectorClassNode extends DefaultMutableTreeNode { | |||
| 20 | 20 | ||
| 21 | public ClassSelectorClassNode(ClassEntry classEntry) { | 21 | public ClassSelectorClassNode(ClassEntry classEntry) { |
| 22 | this.classEntry = classEntry; | 22 | this.classEntry = classEntry; |
| 23 | this.setUserObject(classEntry); | ||
| 23 | } | 24 | } |
| 24 | 25 | ||
| 25 | public ClassEntry getClassEntry() { | 26 | public ClassEntry getClassEntry() { |
| @@ -36,6 +37,18 @@ public class ClassSelectorClassNode extends DefaultMutableTreeNode { | |||
| 36 | return other instanceof ClassSelectorClassNode && equals((ClassSelectorClassNode) other); | 37 | return other instanceof ClassSelectorClassNode && equals((ClassSelectorClassNode) other); |
| 37 | } | 38 | } |
| 38 | 39 | ||
| 40 | @Override public void setUserObject(Object userObject) | ||
| 41 | { | ||
| 42 | String packageName = ""; | ||
| 43 | if (classEntry.getPackageName() != null) | ||
| 44 | packageName = classEntry.getPackageName() + "/"; | ||
| 45 | if (userObject instanceof String) | ||
| 46 | this.classEntry = new ClassEntry(packageName + userObject); | ||
| 47 | else if (userObject instanceof ClassEntry) | ||
| 48 | this.classEntry = (ClassEntry) userObject; | ||
| 49 | super.setUserObject(classEntry); | ||
| 50 | } | ||
| 51 | |||
| 39 | public boolean equals(ClassSelectorClassNode other) { | 52 | public boolean equals(ClassSelectorClassNode other) { |
| 40 | return this.classEntry.equals(other.classEntry); | 53 | return this.classEntry.equals(other.classEntry); |
| 41 | } | 54 | } |
diff --git a/src/main/java/cuchaz/enigma/gui/node/ClassSelectorPackageNode.java b/src/main/java/cuchaz/enigma/gui/node/ClassSelectorPackageNode.java index dfdc765b..ee3009ae 100644 --- a/src/main/java/cuchaz/enigma/gui/node/ClassSelectorPackageNode.java +++ b/src/main/java/cuchaz/enigma/gui/node/ClassSelectorPackageNode.java | |||
| @@ -24,6 +24,13 @@ public class ClassSelectorPackageNode extends DefaultMutableTreeNode { | |||
| 24 | return packageName; | 24 | return packageName; |
| 25 | } | 25 | } |
| 26 | 26 | ||
| 27 | @Override public void setUserObject(Object userObject) | ||
| 28 | { | ||
| 29 | if (userObject instanceof String) | ||
| 30 | this.packageName = (String) userObject; | ||
| 31 | super.setUserObject(userObject); | ||
| 32 | } | ||
| 33 | |||
| 27 | @Override | 34 | @Override |
| 28 | public String toString() { | 35 | public String toString() { |
| 29 | return this.packageName; | 36 | return this.packageName; |
diff --git a/src/main/java/cuchaz/enigma/gui/panels/PanelDeobf.java b/src/main/java/cuchaz/enigma/gui/panels/PanelDeobf.java index bba71327..447c51af 100644 --- a/src/main/java/cuchaz/enigma/gui/panels/PanelDeobf.java +++ b/src/main/java/cuchaz/enigma/gui/panels/PanelDeobf.java | |||
| @@ -17,8 +17,9 @@ public class PanelDeobf extends JPanel { | |||
| 17 | public PanelDeobf(Gui gui) { | 17 | public PanelDeobf(Gui gui) { |
| 18 | this.gui = gui; | 18 | this.gui = gui; |
| 19 | 19 | ||
| 20 | this.deobfClasses = new ClassSelector(ClassSelector.DEOBF_CLASS_COMPARATOR); | 20 | this.deobfClasses = new ClassSelector(gui, ClassSelector.DEOBF_CLASS_COMPARATOR); |
| 21 | this.deobfClasses.setListener(gui::navigateTo); | 21 | this.deobfClasses.setSelectionListener(gui::navigateTo); |
| 22 | this.deobfClasses.setRenameSelectionListener(gui::onPanelRename); | ||
| 22 | 23 | ||
| 23 | this.setLayout(new BorderLayout()); | 24 | this.setLayout(new BorderLayout()); |
| 24 | this.add(new JLabel("De-obfuscated Classes"), BorderLayout.NORTH); | 25 | this.add(new JLabel("De-obfuscated Classes"), BorderLayout.NORTH); |
diff --git a/src/main/java/cuchaz/enigma/gui/panels/PanelObf.java b/src/main/java/cuchaz/enigma/gui/panels/PanelObf.java index 94b384fd..74772a5f 100644 --- a/src/main/java/cuchaz/enigma/gui/panels/PanelObf.java +++ b/src/main/java/cuchaz/enigma/gui/panels/PanelObf.java | |||
| @@ -28,8 +28,9 @@ public class PanelObf extends JPanel { | |||
| 28 | return aname.compareTo(bname); | 28 | return aname.compareTo(bname); |
| 29 | }; | 29 | }; |
| 30 | 30 | ||
| 31 | this.obfClasses = new ClassSelector(obfClassComparator); | 31 | this.obfClasses = new ClassSelector(gui, obfClassComparator); |
| 32 | this.obfClasses.setListener(gui::navigateTo); | 32 | this.obfClasses.setSelectionListener(gui::navigateTo); |
| 33 | this.obfClasses.setRenameSelectionListener(gui::onPanelRename); | ||
| 33 | 34 | ||
| 34 | this.setLayout(new BorderLayout()); | 35 | this.setLayout(new BorderLayout()); |
| 35 | this.add(new JLabel("Obfuscated Classes"), BorderLayout.NORTH); | 36 | this.add(new JLabel("Obfuscated Classes"), BorderLayout.NORTH); |