summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar 2xsaiko2020-11-15 11:47:35 +0100
committerGravatar GitHub2020-11-15 11:47:35 +0100
commita5dae162ae354f0e8064ec795a09e9d1f1a855f1 (patch)
treec524e715c253ac3828cacfb87563091e770ba446
parentAdd "include synthetic parameters" to mapping stats & save options (#309) (diff)
parentbump minor (diff)
downloadenigma-a5dae162ae354f0e8064ec795a09e9d1f1a855f1.tar.gz
enigma-a5dae162ae354f0e8064ec795a09e9d1f1a855f1.tar.xz
enigma-a5dae162ae354f0e8064ec795a09e9d1f1a855f1.zip
Merge pull request #323 from YanisBft/various
Improvements to deobf panel popup menu
-rw-r--r--build.gradle2
-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
-rw-r--r--enigma/src/main/resources/lang/en_us.json3
-rw-r--r--enigma/src/main/resources/lang/fr_fr.json3
5 files changed, 35 insertions, 10 deletions
diff --git a/build.gradle b/build.gradle
index 81c96fb9..a2a735bd 100644
--- a/build.gradle
+++ b/build.gradle
@@ -24,7 +24,7 @@ subprojects {
24 } 24 }
25 25
26 group = 'cuchaz' 26 group = 'cuchaz'
27 version = '0.21.5' 27 version = '0.21.6'
28 28
29 def buildNumber = System.getenv("BUILD_NUMBER") 29 def buildNumber = System.getenv("BUILD_NUMBER")
30 version = version + "+" + (buildNumber ? "build.$buildNumber" : "local") 30 version = version + "+" + (buildNumber ? "build.$buildNumber" : "local")
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..c56731dc 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 a4d749c2..c888e4f7 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}
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.",