summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/gui/panels
diff options
context:
space:
mode:
authorGravatar Runemoro2020-06-03 13:39:42 -0400
committerGravatar GitHub2020-06-03 18:39:42 +0100
commit0f47403d0220757fed189b76e2071e25b1025cb8 (patch)
tree879bf72c4476f0a5e0d82da99d7ff2b2276bcaca /src/main/java/cuchaz/enigma/gui/panels
parentFix search dialog hanging for a short time sometimes (#250) (diff)
downloadenigma-fork-0f47403d0220757fed189b76e2071e25b1025cb8.tar.gz
enigma-fork-0f47403d0220757fed189b76e2071e25b1025cb8.tar.xz
enigma-fork-0f47403d0220757fed189b76e2071e25b1025cb8.zip
Split GUI code to separate module (#242)
* Split into modules * Post merge compile fixes Co-authored-by: modmuss50 <modmuss50@gmail.com>
Diffstat (limited to 'src/main/java/cuchaz/enigma/gui/panels')
-rw-r--r--src/main/java/cuchaz/enigma/gui/panels/PanelDeobf.java26
-rw-r--r--src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java171
-rw-r--r--src/main/java/cuchaz/enigma/gui/panels/PanelIdentifier.java32
-rw-r--r--src/main/java/cuchaz/enigma/gui/panels/PanelObf.java37
4 files changed, 0 insertions, 266 deletions
diff --git a/src/main/java/cuchaz/enigma/gui/panels/PanelDeobf.java b/src/main/java/cuchaz/enigma/gui/panels/PanelDeobf.java
deleted file mode 100644
index c24226b..0000000
--- a/src/main/java/cuchaz/enigma/gui/panels/PanelDeobf.java
+++ /dev/null
@@ -1,26 +0,0 @@
1package cuchaz.enigma.gui.panels;
2
3import cuchaz.enigma.gui.ClassSelector;
4import cuchaz.enigma.gui.Gui;
5import cuchaz.enigma.utils.I18n;
6
7import javax.swing.*;
8import java.awt.*;
9
10public class PanelDeobf extends JPanel {
11
12 public final ClassSelector deobfClasses;
13 private final Gui gui;
14
15 public PanelDeobf(Gui gui) {
16 this.gui = gui;
17
18 this.deobfClasses = new ClassSelector(gui, ClassSelector.DEOBF_CLASS_COMPARATOR, true);
19 this.deobfClasses.setSelectionListener(gui.getController()::navigateTo);
20 this.deobfClasses.setRenameSelectionListener(gui::onPanelRename);
21
22 this.setLayout(new BorderLayout());
23 this.add(new JLabel(I18n.translate("info_panel.classes.deobfuscated")), BorderLayout.NORTH);
24 this.add(new JScrollPane(this.deobfClasses), BorderLayout.CENTER);
25 }
26}
diff --git a/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java b/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java
deleted file mode 100644
index 8637afd..0000000
--- a/src/main/java/cuchaz/enigma/gui/panels/PanelEditor.java
+++ /dev/null
@@ -1,171 +0,0 @@
1package cuchaz.enigma.gui.panels;
2
3import cuchaz.enigma.EnigmaProject;
4import cuchaz.enigma.analysis.EntryReference;
5import cuchaz.enigma.config.Config;
6import cuchaz.enigma.gui.BrowserCaret;
7import cuchaz.enigma.gui.Gui;
8import cuchaz.enigma.translation.representation.entry.ClassEntry;
9import cuchaz.enigma.translation.representation.entry.Entry;
10import cuchaz.enigma.gui.util.ScaleUtil;
11
12import javax.swing.*;
13import java.awt.*;
14import java.awt.event.KeyAdapter;
15import java.awt.event.KeyEvent;
16import java.awt.event.MouseAdapter;
17import java.awt.event.MouseEvent;
18
19public class PanelEditor extends JEditorPane {
20 private boolean mouseIsPressed = false;
21 public int fontSize = 12;
22
23 public PanelEditor(Gui gui) {
24 this.setEditable(false);
25 this.setSelectionColor(new Color(31, 46, 90));
26 this.setCaret(new BrowserCaret());
27 this.setFont(ScaleUtil.getFont(this.getFont().getFontName(), Font.PLAIN, this.fontSize));
28 this.addCaretListener(event -> gui.onCaretMove(event.getDot(), mouseIsPressed));
29 final PanelEditor self = this;
30 this.addMouseListener(new MouseAdapter() {
31 @Override
32 public void mousePressed(MouseEvent mouseEvent) {
33 mouseIsPressed = true;
34 }
35
36 @Override
37 public void mouseReleased(MouseEvent e) {
38 switch (e.getButton()) {
39 case MouseEvent.BUTTON3: // Right click
40 self.setCaretPosition(self.viewToModel(e.getPoint()));
41 break;
42
43 case 4: // Back navigation
44 gui.getController().openPreviousReference();
45 break;
46
47 case 5: // Forward navigation
48 gui.getController().openNextReference();
49 break;
50 }
51 mouseIsPressed = false;
52 }
53 });
54 this.addKeyListener(new KeyAdapter() {
55 @Override
56 public void keyPressed(KeyEvent event) {
57 if (event.isControlDown()) {
58 gui.setShouldNavigateOnClick(false);
59 switch (event.getKeyCode()) {
60 case KeyEvent.VK_I:
61 gui.popupMenu.showInheritanceMenu.doClick();
62 break;
63
64 case KeyEvent.VK_M:
65 gui.popupMenu.showImplementationsMenu.doClick();
66 break;
67
68 case KeyEvent.VK_N:
69 gui.popupMenu.openEntryMenu.doClick();
70 break;
71
72 case KeyEvent.VK_P:
73 gui.popupMenu.openPreviousMenu.doClick();
74 break;
75
76 case KeyEvent.VK_E:
77 gui.popupMenu.openNextMenu.doClick();
78 break;
79
80 case KeyEvent.VK_C:
81 if (event.isShiftDown()) {
82 gui.popupMenu.showCallsSpecificMenu.doClick();
83 } else {
84 gui.popupMenu.showCallsMenu.doClick();
85 }
86 break;
87
88 case KeyEvent.VK_O:
89 gui.popupMenu.toggleMappingMenu.doClick();
90 break;
91
92 case KeyEvent.VK_R:
93 gui.popupMenu.renameMenu.doClick();
94 break;
95
96 case KeyEvent.VK_D:
97 gui.popupMenu.editJavadocMenu.doClick();
98 break;
99
100 case KeyEvent.VK_F5:
101 gui.getController().refreshCurrentClass();
102 break;
103
104 case KeyEvent.VK_F:
105 // prevent navigating on click when quick find activated
106 break;
107
108 case KeyEvent.VK_ADD:
109 case KeyEvent.VK_EQUALS:
110 case KeyEvent.VK_PLUS:
111 self.offsetEditorZoom(2);
112 break;
113 case KeyEvent.VK_SUBTRACT:
114 case KeyEvent.VK_MINUS:
115 self.offsetEditorZoom(-2);
116 break;
117
118 default:
119 gui.setShouldNavigateOnClick(true); // CTRL
120 break;
121 }
122 }
123 }
124
125 @Override
126 public void keyTyped(KeyEvent event) {
127 if (!gui.popupMenu.renameMenu.isEnabled()) return;
128
129 if (!event.isControlDown() && !event.isAltDown() && Character.isJavaIdentifierPart(event.getKeyChar())) {
130 EnigmaProject project = gui.getController().project;
131 EntryReference<Entry<?>, Entry<?>> reference = project.getMapper().deobfuscate(gui.cursorReference);
132 Entry<?> entry = reference.getNameableEntry();
133
134 String name = String.valueOf(event.getKeyChar());
135 if (entry instanceof ClassEntry && ((ClassEntry) entry).getParent() == null) {
136 String packageName = ((ClassEntry) entry).getPackageName();
137 if (packageName != null) {
138 name = packageName + "/" + name;
139 }
140 }
141
142 gui.popupMenu.renameMenu.doClick();
143 gui.renameTextField.setText(name);
144 }
145 }
146
147 @Override
148 public void keyReleased(KeyEvent event) {
149 gui.setShouldNavigateOnClick(event.isControlDown());
150 }
151 });
152 }
153
154 public void offsetEditorZoom(int zoomAmount) {
155 int newResult = this.fontSize + zoomAmount;
156 if (newResult > 8 && newResult < 72) {
157 this.fontSize = newResult;
158 this.setFont(ScaleUtil.getFont(this.getFont().getFontName(), Font.PLAIN, this.fontSize));
159 }
160 }
161
162 public void resetEditorZoom() {
163 this.fontSize = 12;
164 this.setFont(ScaleUtil.getFont(this.getFont().getFontName(), Font.PLAIN, this.fontSize));
165 }
166
167 @Override
168 public Color getCaretColor() {
169 return new Color(Config.getInstance().caretColor);
170 }
171}
diff --git a/src/main/java/cuchaz/enigma/gui/panels/PanelIdentifier.java b/src/main/java/cuchaz/enigma/gui/panels/PanelIdentifier.java
deleted file mode 100644
index de069bc..0000000
--- a/src/main/java/cuchaz/enigma/gui/panels/PanelIdentifier.java
+++ /dev/null
@@ -1,32 +0,0 @@
1package cuchaz.enigma.gui.panels;
2
3import cuchaz.enigma.gui.Gui;
4import cuchaz.enigma.utils.I18n;
5import cuchaz.enigma.gui.util.ScaleUtil;
6import cuchaz.enigma.utils.Utils;
7
8import javax.swing.*;
9import java.awt.*;
10
11public class PanelIdentifier extends JPanel {
12
13 private final Gui gui;
14
15 public PanelIdentifier(Gui gui) {
16 this.gui = gui;
17
18 this.setLayout(new GridLayout(4, 1, 0, 0));
19 this.setPreferredSize(ScaleUtil.getDimension(0, 100));
20 this.setBorder(BorderFactory.createTitledBorder(I18n.translate("info_panel.identifier")));
21 }
22
23 public void clearReference() {
24 this.removeAll();
25 JLabel label = new JLabel(I18n.translate("info_panel.identifier.none"));
26 Utils.unboldLabel(label);
27 label.setHorizontalAlignment(JLabel.CENTER);
28 this.add(label);
29
30 gui.redraw();
31 }
32}
diff --git a/src/main/java/cuchaz/enigma/gui/panels/PanelObf.java b/src/main/java/cuchaz/enigma/gui/panels/PanelObf.java
deleted file mode 100644
index dd7f9f9..0000000
--- a/src/main/java/cuchaz/enigma/gui/panels/PanelObf.java
+++ /dev/null
@@ -1,37 +0,0 @@
1package cuchaz.enigma.gui.panels;
2
3import cuchaz.enigma.gui.ClassSelector;
4import cuchaz.enigma.gui.Gui;
5import cuchaz.enigma.translation.representation.entry.ClassEntry;
6import cuchaz.enigma.utils.I18n;
7
8import javax.swing.*;
9import java.awt.*;
10import java.util.Comparator;
11
12public class PanelObf extends JPanel {
13
14 public final ClassSelector obfClasses;
15 private final Gui gui;
16
17 public PanelObf(Gui gui) {
18 this.gui = gui;
19
20 Comparator<ClassEntry> obfClassComparator = (a, b) -> {
21 String aname = a.getFullName();
22 String bname = b.getFullName();
23 if (aname.length() != bname.length()) {
24 return aname.length() - bname.length();
25 }
26 return aname.compareTo(bname);
27 };
28
29 this.obfClasses = new ClassSelector(gui, obfClassComparator, false);
30 this.obfClasses.setSelectionListener(gui.getController()::navigateTo);
31 this.obfClasses.setRenameSelectionListener(gui::onPanelRename);
32
33 this.setLayout(new BorderLayout());
34 this.add(new JLabel(I18n.translate("info_panel.classes.obfuscated")), BorderLayout.NORTH);
35 this.add(new JScrollPane(this.obfClasses), BorderLayout.CENTER);
36 }
37}