summaryrefslogtreecommitdiff
path: root/enigma-swing/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'enigma-swing/src/main/java')
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java1
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/elements/DeobfPanelPopupMenu.java36
2 files changed, 30 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..c56731d 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java
@@ -295,6 +295,7 @@ 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());
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..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
@@ -5,30 +5,52 @@ 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 }
26 44
27 public void show(Component invoker, int x, int y) { 45 public void show(ClassSelector deobfClasses, int x, int y) {
28 this.ui.show(invoker, x, y); 46 // Only enable rename class if selected path is a class
47 this.renameClass.setEnabled(deobfClasses.getSelectedClass() != null);
48
49 this.ui.show(deobfClasses, x, y);
29 } 50 }
30 51
31 public void retranslateUi() { 52 public void retranslateUi() {
32 this.rename.setText(I18n.translate("popup_menu.deobf_panel.rename")); 53 this.renamePackage.setText(I18n.translate("popup_menu.deobf_panel.rename_package"));
54 this.renameClass.setText(I18n.translate("popup_menu.deobf_panel.rename_class"));
33 } 55 }
34} 56}