From c6b53f392b8f85b2197d04c95620864d209a3ae6 Mon Sep 17 00:00:00 2001 From: Yanis48 Date: Sun, 11 Oct 2020 20:10:48 +0200 Subject: Add popup menu to deobf panel to quickly rename a package/class --- .../src/main/java/cuchaz/enigma/gui/Gui.java | 20 ++++++++++--- .../enigma/gui/elements/DeobfPanelPopupMenu.java | 34 ++++++++++++++++++++++ 2 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 enigma-swing/src/main/java/cuchaz/enigma/gui/elements/DeobfPanelPopupMenu.java (limited to 'enigma-swing/src/main/java/cuchaz') diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java index 323d304a..cbc9688e 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java @@ -37,10 +37,7 @@ import cuchaz.enigma.gui.config.UiConfig; import cuchaz.enigma.gui.dialog.CrashDialog; import cuchaz.enigma.gui.dialog.JavadocDialog; import cuchaz.enigma.gui.dialog.SearchDialog; -import cuchaz.enigma.gui.elements.CollapsibleTabbedPane; -import cuchaz.enigma.gui.elements.EditorTabPopupMenu; -import cuchaz.enigma.gui.elements.MenuBar; -import cuchaz.enigma.gui.elements.ValidatableUi; +import cuchaz.enigma.gui.elements.*; import cuchaz.enigma.gui.events.EditorActionListener; import cuchaz.enigma.gui.panels.*; import cuchaz.enigma.gui.util.History; @@ -107,6 +104,7 @@ public class Gui implements LanguageChangeListener { private JLabel statusLabel; private final EditorTabPopupMenu editorTabPopupMenu; + private final DeobfPanelPopupMenu deobfPanelPopupMenu; private final JTabbedPane openFiles; private final HashBiMap editors = HashBiMap.create(); @@ -292,6 +290,19 @@ public class Gui implements LanguageChangeListener { } }); + deobfPanelPopupMenu = new DeobfPanelPopupMenu(this); + deobfPanel.deobfClasses.addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + if (SwingUtilities.isRightMouseButton(e)) { + int i = deobfPanel.deobfClasses.getRowForPath(deobfPanel.deobfClasses.getSelectionPath()); + if (i != -1) { + deobfPanelPopupMenu.show(deobfPanel.deobfClasses, e.getX(), e.getY()); + } + } + } + }); + // layout controls JPanel centerPanel = new JPanel(); centerPanel.setLayout(new BorderLayout()); @@ -893,6 +904,7 @@ public class Gui implements LanguageChangeListener { this.menuBar.retranslateUi(); this.obfPanel.retranslateUi(); this.deobfPanel.retranslateUi(); + this.deobfPanelPopupMenu.retranslateUi(); this.infoPanel.retranslateUi(); this.editors.values().forEach(EditorPanel::retranslateUi); } diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/DeobfPanelPopupMenu.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/DeobfPanelPopupMenu.java new file mode 100644 index 00000000..a4d749c2 --- /dev/null +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/DeobfPanelPopupMenu.java @@ -0,0 +1,34 @@ +package cuchaz.enigma.gui.elements; + +import cuchaz.enigma.gui.ClassSelector; +import cuchaz.enigma.gui.Gui; +import cuchaz.enigma.utils.I18n; + +import javax.swing.*; +import java.awt.*; + +public class DeobfPanelPopupMenu { + + private final JPopupMenu ui; + private final JMenuItem rename; + + public DeobfPanelPopupMenu(Gui gui) { + this.ui = new JPopupMenu(); + + ClassSelector deobfClasses = gui.getDeobfPanel().deobfClasses; + + this.rename = new JMenuItem(); + this.rename.addActionListener(a -> deobfClasses.getUI().startEditingAtPath(deobfClasses, deobfClasses.getSelectionPath())); + this.ui.add(this.rename); + + this.retranslateUi(); + } + + public void show(Component invoker, int x, int y) { + this.ui.show(invoker, x, y); + } + + public void retranslateUi() { + this.rename.setText(I18n.translate("popup_menu.deobf_panel.rename")); + } +} -- cgit v1.2.3