summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java4
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/elements/DeobfPanelPopupMenu.java33
-rw-r--r--enigma/src/main/resources/lang/en_us.json3
-rw-r--r--enigma/src/main/resources/lang/fr_fr.json3
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 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;
5import cuchaz.enigma.utils.I18n; 5import cuchaz.enigma.utils.I18n;
6 6
7import javax.swing.*; 7import javax.swing.*;
8import javax.swing.tree.TreePath;
8import java.awt.*; 9import java.awt.*;
9 10
10public class DeobfPanelPopupMenu { 11public 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 50d06a82..9db4e1fc 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 b2b12093..127b9c88 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.",