diff options
4 files changed, 36 insertions, 7 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 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 { | |||
| 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 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; | |||
| 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 | } |
diff --git a/enigma/src/main/resources/lang/en_us.json b/enigma/src/main/resources/lang/en_us.json index 50d06a8..9db4e1f 100644 --- a/enigma/src/main/resources/lang/en_us.json +++ b/enigma/src/main/resources/lang/en_us.json | |||
| @@ -79,7 +79,8 @@ | |||
| 79 | "popup_menu.editor_tab.close_others": "Close Others", | 79 | "popup_menu.editor_tab.close_others": "Close Others", |
| 80 | "popup_menu.editor_tab.close_left": "Close All to the Left", | 80 | "popup_menu.editor_tab.close_left": "Close All to the Left", |
| 81 | "popup_menu.editor_tab.close_right": "Close All to the Right", | 81 | "popup_menu.editor_tab.close_right": "Close All to the Right", |
| 82 | "popup_menu.deobf_panel.rename": "Rename", | 82 | "popup_menu.deobf_panel.rename_package": "Rename Package", |
| 83 | "popup_menu.deobf_panel.rename_class": "Rename Class", | ||
| 83 | 84 | ||
| 84 | "editor.decompiling": "Decompiling...", | 85 | "editor.decompiling": "Decompiling...", |
| 85 | "editor.decompile_error": "An error was encountered while decompiling.", | 86 | "editor.decompile_error": "An error was encountered while decompiling.", |
diff --git a/enigma/src/main/resources/lang/fr_fr.json b/enigma/src/main/resources/lang/fr_fr.json index b2b1209..127b9c8 100644 --- a/enigma/src/main/resources/lang/fr_fr.json +++ b/enigma/src/main/resources/lang/fr_fr.json | |||
| @@ -79,7 +79,8 @@ | |||
| 79 | "popup_menu.editor_tab.close_others": "Fermer les autres", | 79 | "popup_menu.editor_tab.close_others": "Fermer les autres", |
| 80 | "popup_menu.editor_tab.close_left": "Tout fermer sur la gauche", | 80 | "popup_menu.editor_tab.close_left": "Tout fermer sur la gauche", |
| 81 | "popup_menu.editor_tab.close_right": "Tout fermer sur la droite", | 81 | "popup_menu.editor_tab.close_right": "Tout fermer sur la droite", |
| 82 | "popup_menu.deobf_panel.rename": "Renommer", | 82 | "popup_menu.deobf_panel.rename_package": "Renommer le package", |
| 83 | "popup_menu.deobf_panel.rename_class": "Renommer la classe", | ||
| 83 | 84 | ||
| 84 | "editor.decompiling": "Décompilation...", | 85 | "editor.decompiling": "Décompilation...", |
| 85 | "editor.decompile_error": "Une erreur est survenue lors de la décompilation.", | 86 | "editor.decompile_error": "Une erreur est survenue lors de la décompilation.", |