summaryrefslogtreecommitdiff
path: root/enigma-swing/src/main/java/cuchaz
diff options
context:
space:
mode:
authorGravatar Yanis482020-10-31 12:32:03 +0100
committerGravatar Yanis482020-10-31 12:32:03 +0100
commit0934b0df5563bcf4ead6186e23bb2b719bea2797 (patch)
tree1b9a248291780a78f494aeb3508c1734c39dd168 /enigma-swing/src/main/java/cuchaz
parentAdd "include synthetic parameters" to mapping stats & save options (#309) (diff)
downloadenigma-0934b0df5563bcf4ead6186e23bb2b719bea2797.tar.gz
enigma-0934b0df5563bcf4ead6186e23bb2b719bea2797.tar.xz
enigma-0934b0df5563bcf4ead6186e23bb2b719bea2797.zip
Improvements to deobf panel popup menu
Diffstat (limited to 'enigma-swing/src/main/java/cuchaz')
-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
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;
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}