summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java21
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java9
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/Main.java6
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/panels/DeobfPanel.java2
-rw-r--r--enigma/src/main/resources/lang/en_us.json1
5 files changed, 32 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 30bf4d3e..a657d171 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java
@@ -75,6 +75,7 @@ public class Gui implements LanguageChangeListener {
75 private ConnectionState connectionState; 75 private ConnectionState connectionState;
76 private boolean isJarOpen; 76 private boolean isJarOpen;
77 private final Set<EditableType> editableTypes; 77 private final Set<EditableType> editableTypes;
78 private boolean singleClassTree;
78 79
79 public JFileChooser jarFileChooser; 80 public JFileChooser jarFileChooser;
80 public JFileChooser tinyMappingsFileChooser; 81 public JFileChooser tinyMappingsFileChooser;
@@ -424,7 +425,19 @@ public class Gui implements LanguageChangeListener {
424 public GuiController getController() { 425 public GuiController getController() {
425 return this.controller; 426 return this.controller;
426 } 427 }
427 428
429 public void setSingleClassTree(boolean singleClassTree) {
430 this.singleClassTree = singleClassTree;
431 this.classesPanel.removeAll();
432 this.classesPanel.add(isSingleClassTree() ? deobfPanel : splitClasses);
433 getController().refreshClasses();
434 retranslateUi();
435 }
436
437 public boolean isSingleClassTree() {
438 return singleClassTree;
439 }
440
428 public void onStartOpenJar() { 441 public void onStartOpenJar() {
429 this.classesPanel.removeAll(); 442 this.classesPanel.removeAll();
430 redraw(); 443 redraw();
@@ -434,7 +447,7 @@ public class Gui implements LanguageChangeListener {
434 // update gui 447 // update gui
435 this.frame.setTitle(Enigma.NAME + " - " + jarName); 448 this.frame.setTitle(Enigma.NAME + " - " + jarName);
436 this.classesPanel.removeAll(); 449 this.classesPanel.removeAll();
437 this.classesPanel.add(splitClasses); 450 this.classesPanel.add(isSingleClassTree() ? deobfPanel : splitClasses);
438 closeAllEditorTabs(); 451 closeAllEditorTabs();
439 452
440 // update menu 453 // update menu
@@ -816,8 +829,6 @@ public class Gui implements LanguageChangeListener {
816 } else if (data instanceof ClassEntry) { 829 } else if (data instanceof ClassEntry) {
817 // class rename 830 // class rename
818 831
819 // assume this is deobf since the obf tree doesn't allow renaming in
820 // the first place
821 // TODO optimize reverse class lookup, although it looks like it's 832 // TODO optimize reverse class lookup, although it looks like it's
822 // fast enough for now 833 // fast enough for now
823 EntryRemapper mapper = this.controller.project.getMapper(); 834 EntryRemapper mapper = this.controller.project.getMapper();
@@ -826,7 +837,7 @@ public class Gui implements LanguageChangeListener {
826 .filter(e -> e instanceof ClassEntry) 837 .filter(e -> e instanceof ClassEntry)
827 .map(e -> (ClassEntry) e) 838 .map(e -> (ClassEntry) e)
828 .filter(e -> mapper.deobfuscate(e).equals(deobf)) 839 .filter(e -> mapper.deobfuscate(e).equals(deobf))
829 .findAny().get(); 840 .findAny().orElse(deobf);
830 841
831 this.controller.rename(vc, new EntryReference<>(obf, obf.getFullName()), ((ClassEntry) data).getFullName(), false); 842 this.controller.rename(vc, new EntryReference<>(obf, obf.getFullName()), ((ClassEntry) data).getFullName(), false);
832 if (!vc.canProceed()) return; 843 if (!vc.canProceed()) return;
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java
index e28271e7..2b75655a 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java
@@ -359,7 +359,9 @@ public class GuiController implements ClientPacketHandler {
359 openReference(reference); 359 openReference(reference);
360 } 360 }
361 361
362 private void refreshClasses() { 362 public void refreshClasses() {
363 if (project == null) return;
364
363 List<ClassEntry> obfClasses = Lists.newArrayList(); 365 List<ClassEntry> obfClasses = Lists.newArrayList();
364 List<ClassEntry> deobfClasses = Lists.newArrayList(); 366 List<ClassEntry> deobfClasses = Lists.newArrayList();
365 this.addSeparatedClasses(obfClasses, deobfClasses); 367 this.addSeparatedClasses(obfClasses, deobfClasses);
@@ -375,6 +377,11 @@ public class GuiController implements ClientPacketHandler {
375 .filter(entry -> !entry.isInnerClass()); 377 .filter(entry -> !entry.isInnerClass());
376 378
377 visibleClasses.forEach(entry -> { 379 visibleClasses.forEach(entry -> {
380 if (gui.isSingleClassTree()) {
381 deobfClasses.add(entry);
382 return;
383 }
384
378 ClassEntry deobfEntry = mapper.deobfuscate(entry); 385 ClassEntry deobfEntry = mapper.deobfuscate(entry);
379 386
380 List<ObfuscationTestService> obfService = enigma.getServices().get(ObfuscationTestService.TYPE); 387 List<ObfuscationTestService> obfService = enigma.getServices().get(ObfuscationTestService.TYPE);
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/Main.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/Main.java
index cd968fce..f6a03f54 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/Main.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/Main.java
@@ -60,6 +60,8 @@ public class Main {
60 parser.acceptsAll(List.of("edit-javadocs", "d"), "Enable editing Javadocs"); 60 parser.acceptsAll(List.of("edit-javadocs", "d"), "Enable editing Javadocs");
61 parser.acceptsAll(List.of("no-edit-javadocs", "D"), "Disable editing Javadocs"); 61 parser.acceptsAll(List.of("no-edit-javadocs", "D"), "Disable editing Javadocs");
62 62
63 parser.accepts("single-class-tree", "Unify the deobfuscated and obfuscated class panels");
64
63 parser.accepts("help", "Displays help information"); 65 parser.accepts("help", "Displays help information");
64 66
65 try { 67 try {
@@ -107,6 +109,10 @@ public class Main {
107 109
108 Gui gui = new Gui(parsedProfile, editables); 110 Gui gui = new Gui(parsedProfile, editables);
109 GuiController controller = gui.getController(); 111 GuiController controller = gui.getController();
112
113 if (options.has("single-class-tree")) {
114 gui.setSingleClassTree(true);
115 }
110 116
111 if (options.has(jar)) { 117 if (options.has(jar)) {
112 Path jarPath = options.valueOf(jar); 118 Path jarPath = options.valueOf(jar);
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/DeobfPanel.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/DeobfPanel.java
index 3e357cbd..5b7882b0 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/DeobfPanel.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/DeobfPanel.java
@@ -32,7 +32,7 @@ public class DeobfPanel extends JPanel {
32 } 32 }
33 33
34 public void retranslateUi() { 34 public void retranslateUi() {
35 this.title.setText(I18n.translate("info_panel.classes.deobfuscated")); 35 this.title.setText(I18n.translate(gui.isSingleClassTree() ? "info_panel.classes" : "info_panel.classes.deobfuscated"));
36 } 36 }
37 37
38} 38}
diff --git a/enigma/src/main/resources/lang/en_us.json b/enigma/src/main/resources/lang/en_us.json
index b3085be0..4488bb2e 100644
--- a/enigma/src/main/resources/lang/en_us.json
+++ b/enigma/src/main/resources/lang/en_us.json
@@ -92,6 +92,7 @@
92 "editor.decompile_error": "An error was encountered while decompiling.", 92 "editor.decompile_error": "An error was encountered while decompiling.",
93 "editor.remap_error": "An error was encountered while remapping.", 93 "editor.remap_error": "An error was encountered while remapping.",
94 94
95 "info_panel.classes": "Classes",
95 "info_panel.classes.obfuscated": "Obfuscated Classes", 96 "info_panel.classes.obfuscated": "Obfuscated Classes",
96 "info_panel.classes.deobfuscated": "De-obfuscated Classes", 97 "info_panel.classes.deobfuscated": "De-obfuscated Classes",
97 "info_panel.identifier": "Identifier Info", 98 "info_panel.identifier": "Identifier Info",