From 0934b0df5563bcf4ead6186e23bb2b719bea2797 Mon Sep 17 00:00:00 2001 From: Yanis48 Date: Sat, 31 Oct 2020 12:32:03 +0100 Subject: Improvements to deobf panel popup menu --- .../src/main/java/cuchaz/enigma/gui/Gui.java | 4 +++ .../enigma/gui/elements/DeobfPanelPopupMenu.java | 33 ++++++++++++++++++---- 2 files changed, 32 insertions(+), 5 deletions(-) (limited to 'enigma-swing/src') 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 cbc9688..9c0ff70 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java @@ -295,11 +295,15 @@ public class Gui implements LanguageChangeListener { @Override public void mousePressed(MouseEvent e) { if (SwingUtilities.isRightMouseButton(e)) { + deobfPanel.deobfClasses.setSelectionRow(deobfPanel.deobfClasses.getClosestRowForLocation(e.getX(), e.getY())); int i = deobfPanel.deobfClasses.getRowForPath(deobfPanel.deobfClasses.getSelectionPath()); if (i != -1) { deobfPanelPopupMenu.show(deobfPanel.deobfClasses, e.getX(), e.getY()); } } + + // Only enable rename class if selected path is a class + deobfPanelPopupMenu.getRenameClass().setEnabled(deobfPanel.deobfClasses.getSelectedClass() != null); } }); 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 index a4d749c..16f666d 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/DeobfPanelPopupMenu.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/DeobfPanelPopupMenu.java @@ -5,21 +5,39 @@ import cuchaz.enigma.gui.Gui; import cuchaz.enigma.utils.I18n; import javax.swing.*; +import javax.swing.tree.TreePath; import java.awt.*; public class DeobfPanelPopupMenu { private final JPopupMenu ui; - private final JMenuItem rename; + private final JMenuItem renamePackage; + private final JMenuItem renameClass; 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.renamePackage = new JMenuItem(); + this.renamePackage.addActionListener(a -> { + TreePath path; + + if (deobfClasses.getSelectedClass() != null) { + // Rename parent package if selected path is a class + path = deobfClasses.getSelectionPath().getParentPath(); + } else { + // Rename selected path if it's already a package + path = deobfClasses.getSelectionPath(); + } + + deobfClasses.getUI().startEditingAtPath(deobfClasses, path); + }); + this.ui.add(this.renamePackage); + + this.renameClass = new JMenuItem(); + this.renameClass.addActionListener(a -> deobfClasses.getUI().startEditingAtPath(deobfClasses, deobfClasses.getSelectionPath())); + this.ui.add(this.renameClass); this.retranslateUi(); } @@ -29,6 +47,11 @@ public class DeobfPanelPopupMenu { } public void retranslateUi() { - this.rename.setText(I18n.translate("popup_menu.deobf_panel.rename")); + this.renamePackage.setText(I18n.translate("popup_menu.deobf_panel.rename_package")); + this.renameClass.setText(I18n.translate("popup_menu.deobf_panel.rename_class")); + } + + public JMenuItem getRenameClass() { + return this.renameClass; } } -- cgit v1.2.3 From 5976d1471e81399a94f6afc3bef2b92bf5c81d20 Mon Sep 17 00:00:00 2001 From: Yanis48 Date: Sat, 31 Oct 2020 12:55:01 +0100 Subject: move enable to show --- enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java | 3 --- .../java/cuchaz/enigma/gui/elements/DeobfPanelPopupMenu.java | 11 +++++------ 2 files changed, 5 insertions(+), 9 deletions(-) (limited to 'enigma-swing/src') 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 9c0ff70..c56731d 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java @@ -301,9 +301,6 @@ public class Gui implements LanguageChangeListener { deobfPanelPopupMenu.show(deobfPanel.deobfClasses, e.getX(), e.getY()); } } - - // Only enable rename class if selected path is a class - deobfPanelPopupMenu.getRenameClass().setEnabled(deobfPanel.deobfClasses.getSelectedClass() != null); } }); 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 index 16f666d..c888e4f 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/DeobfPanelPopupMenu.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/DeobfPanelPopupMenu.java @@ -42,16 +42,15 @@ public class DeobfPanelPopupMenu { this.retranslateUi(); } - public void show(Component invoker, int x, int y) { - this.ui.show(invoker, x, y); + public void show(ClassSelector deobfClasses, int x, int y) { + // Only enable rename class if selected path is a class + this.renameClass.setEnabled(deobfClasses.getSelectedClass() != null); + + this.ui.show(deobfClasses, x, y); } public void retranslateUi() { this.renamePackage.setText(I18n.translate("popup_menu.deobf_panel.rename_package")); this.renameClass.setText(I18n.translate("popup_menu.deobf_panel.rename_class")); } - - public JMenuItem getRenameClass() { - return this.renameClass; - } } -- cgit v1.2.3