diff options
| author | 2020-10-31 12:32:03 +0100 | |
|---|---|---|
| committer | 2020-10-31 12:32:03 +0100 | |
| commit | 0934b0df5563bcf4ead6186e23bb2b719bea2797 (patch) | |
| tree | 1b9a248291780a78f494aeb3508c1734c39dd168 /enigma-swing | |
| parent | Add "include synthetic parameters" to mapping stats & save options (#309) (diff) | |
| download | enigma-0934b0df5563bcf4ead6186e23bb2b719bea2797.tar.gz enigma-0934b0df5563bcf4ead6186e23bb2b719bea2797.tar.xz enigma-0934b0df5563bcf4ead6186e23bb2b719bea2797.zip | |
Improvements to deobf panel popup menu
Diffstat (limited to 'enigma-swing')
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java | 4 | ||||
| -rw-r--r-- | enigma-swing/src/main/java/cuchaz/enigma/gui/elements/DeobfPanelPopupMenu.java | 33 |
2 files changed, 32 insertions, 5 deletions
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 cbc9688e..9c0ff704 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 { | |||
| 295 | @Override | 295 | @Override |
| 296 | public void mousePressed(MouseEvent e) { | 296 | public void mousePressed(MouseEvent e) { |
| 297 | if (SwingUtilities.isRightMouseButton(e)) { | 297 | if (SwingUtilities.isRightMouseButton(e)) { |
| 298 | deobfPanel.deobfClasses.setSelectionRow(deobfPanel.deobfClasses.getClosestRowForLocation(e.getX(), e.getY())); | ||
| 298 | int i = deobfPanel.deobfClasses.getRowForPath(deobfPanel.deobfClasses.getSelectionPath()); | 299 | int i = deobfPanel.deobfClasses.getRowForPath(deobfPanel.deobfClasses.getSelectionPath()); |
| 299 | if (i != -1) { | 300 | if (i != -1) { |
| 300 | deobfPanelPopupMenu.show(deobfPanel.deobfClasses, e.getX(), e.getY()); | 301 | deobfPanelPopupMenu.show(deobfPanel.deobfClasses, e.getX(), e.getY()); |
| 301 | } | 302 | } |
| 302 | } | 303 | } |
| 304 | |||
| 305 | // Only enable rename class if selected path is a class | ||
| 306 | deobfPanelPopupMenu.getRenameClass().setEnabled(deobfPanel.deobfClasses.getSelectedClass() != null); | ||
| 303 | } | 307 | } |
| 304 | }); | 308 | }); |
| 305 | 309 | ||
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 a4d749c2..16f666d0 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; | |||
| 5 | import cuchaz.enigma.utils.I18n; | 5 | import cuchaz.enigma.utils.I18n; |
| 6 | 6 | ||
| 7 | import javax.swing.*; | 7 | import javax.swing.*; |
| 8 | import javax.swing.tree.TreePath; | ||
| 8 | import java.awt.*; | 9 | import java.awt.*; |
| 9 | 10 | ||
| 10 | public class DeobfPanelPopupMenu { | 11 | public class DeobfPanelPopupMenu { |
| 11 | 12 | ||
| 12 | private final JPopupMenu ui; | 13 | private final JPopupMenu ui; |
| 13 | private final JMenuItem rename; | 14 | private final JMenuItem renamePackage; |
| 15 | private final JMenuItem renameClass; | ||
| 14 | 16 | ||
| 15 | public DeobfPanelPopupMenu(Gui gui) { | 17 | public DeobfPanelPopupMenu(Gui gui) { |
| 16 | this.ui = new JPopupMenu(); | 18 | this.ui = new JPopupMenu(); |
| 17 | 19 | ||
| 18 | ClassSelector deobfClasses = gui.getDeobfPanel().deobfClasses; | 20 | ClassSelector deobfClasses = gui.getDeobfPanel().deobfClasses; |
| 19 | 21 | ||
| 20 | this.rename = new JMenuItem(); | 22 | this.renamePackage = new JMenuItem(); |
| 21 | this.rename.addActionListener(a -> deobfClasses.getUI().startEditingAtPath(deobfClasses, deobfClasses.getSelectionPath())); | 23 | this.renamePackage.addActionListener(a -> { |
| 22 | this.ui.add(this.rename); | 24 | TreePath path; |
| 25 | |||
| 26 | if (deobfClasses.getSelectedClass() != null) { | ||
| 27 | // Rename parent package if selected path is a class | ||
| 28 | path = deobfClasses.getSelectionPath().getParentPath(); | ||
| 29 | } else { | ||
| 30 | // Rename selected path if it's already a package | ||
| 31 | path = deobfClasses.getSelectionPath(); | ||
| 32 | } | ||
| 33 | |||
| 34 | deobfClasses.getUI().startEditingAtPath(deobfClasses, path); | ||
| 35 | }); | ||
| 36 | this.ui.add(this.renamePackage); | ||
| 37 | |||
| 38 | this.renameClass = new JMenuItem(); | ||
| 39 | this.renameClass.addActionListener(a -> deobfClasses.getUI().startEditingAtPath(deobfClasses, deobfClasses.getSelectionPath())); | ||
| 40 | this.ui.add(this.renameClass); | ||
| 23 | 41 | ||
| 24 | this.retranslateUi(); | 42 | this.retranslateUi(); |
| 25 | } | 43 | } |
| @@ -29,6 +47,11 @@ public class DeobfPanelPopupMenu { | |||
| 29 | } | 47 | } |
| 30 | 48 | ||
| 31 | public void retranslateUi() { | 49 | public void retranslateUi() { |
| 32 | this.rename.setText(I18n.translate("popup_menu.deobf_panel.rename")); | 50 | this.renamePackage.setText(I18n.translate("popup_menu.deobf_panel.rename_package")); |
| 51 | this.renameClass.setText(I18n.translate("popup_menu.deobf_panel.rename_class")); | ||
| 52 | } | ||
| 53 | |||
| 54 | public JMenuItem getRenameClass() { | ||
| 55 | return this.renameClass; | ||
| 33 | } | 56 | } |
| 34 | } | 57 | } |