summaryrefslogtreecommitdiff
path: root/enigma-swing
diff options
context:
space:
mode:
authorGravatar J. Fronny2025-08-21 20:11:13 +0200
committerGravatar GitHub2025-08-21 19:11:13 +0100
commit6d43730a762ed4a54321d14c8a4b5c3af2b80e23 (patch)
tree809b0e656bc28fb8997958ecca299b62c0bbf15f /enigma-swing
parentServices rework (#554) (diff)
downloadenigma-6d43730a762ed4a54321d14c8a4b5c3af2b80e23.tar.gz
enigma-6d43730a762ed4a54321d14c8a4b5c3af2b80e23.tar.xz
enigma-6d43730a762ed4a54321d14c8a4b5c3af2b80e23.zip
Get rid of Guava (#555)
* Get rid of Guava * Fix NPE * Apply suggestions from review * Checkstyle * Add braces to precondition checks * Forbid space
Diffstat (limited to 'enigma-swing')
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/EditableType.java2
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java3
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java6
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/Main.java3
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/config/OldConfigImporter.java3
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/config/Themes.java13
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/config/legacy/Config.java18
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/JavadocDialog.java5
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/elements/AbstractInheritanceTree.java3
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/elements/EditorTabbedPane.java9
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/elements/ImplementationsTree.java3
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/elements/InheritanceTree.java3
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/elements/ValidatableUi.java2
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/panels/ClosableTabTitlePane.java3
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/panels/EditorPanel.java2
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/util/GuiUtil.java4
-rw-r--r--enigma-swing/src/main/java/cuchaz/enigma/gui/util/History.java7
17 files changed, 48 insertions, 41 deletions
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/EditableType.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/EditableType.java
index 6028609f..a70c9b57 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/EditableType.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/EditableType.java
@@ -1,6 +1,6 @@
1package cuchaz.enigma.gui; 1package cuchaz.enigma.gui;
2 2
3import javax.annotation.Nullable; 3import org.jetbrains.annotations.Nullable;
4 4
5import cuchaz.enigma.translation.representation.entry.ClassEntry; 5import cuchaz.enigma.translation.representation.entry.ClassEntry;
6import cuchaz.enigma.translation.representation.entry.Entry; 6import cuchaz.enigma.translation.representation.entry.Entry;
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 21120b8a..c85c4044 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/Gui.java
@@ -23,7 +23,6 @@ import java.util.concurrent.CompletableFuture;
23import java.util.function.Consumer; 23import java.util.function.Consumer;
24import java.util.function.Function; 24import java.util.function.Function;
25 25
26import javax.annotation.Nullable;
27import javax.swing.AbstractAction; 26import javax.swing.AbstractAction;
28import javax.swing.DefaultListModel; 27import javax.swing.DefaultListModel;
29import javax.swing.JButton; 28import javax.swing.JButton;
@@ -42,6 +41,8 @@ import javax.swing.SwingUtilities;
42import javax.swing.WindowConstants; 41import javax.swing.WindowConstants;
43import javax.swing.tree.DefaultMutableTreeNode; 42import javax.swing.tree.DefaultMutableTreeNode;
44 43
44import org.jetbrains.annotations.Nullable;
45
45import cuchaz.enigma.Enigma; 46import cuchaz.enigma.Enigma;
46import cuchaz.enigma.EnigmaProfile; 47import cuchaz.enigma.EnigmaProfile;
47import cuchaz.enigma.analysis.EntryReference; 48import cuchaz.enigma.analysis.EntryReference;
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 ece11b00..e8e4dbde 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java
@@ -17,6 +17,7 @@ import java.io.FileWriter;
17import java.io.IOException; 17import java.io.IOException;
18import java.nio.charset.StandardCharsets; 18import java.nio.charset.StandardCharsets;
19import java.nio.file.Path; 19import java.nio.file.Path;
20import java.util.ArrayList;
20import java.util.Collection; 21import java.util.Collection;
21import java.util.List; 22import java.util.List;
22import java.util.Objects; 23import java.util.Objects;
@@ -29,7 +30,6 @@ import java.util.stream.Stream;
29import javax.swing.JOptionPane; 30import javax.swing.JOptionPane;
30import javax.swing.SwingUtilities; 31import javax.swing.SwingUtilities;
31 32
32import com.google.common.collect.Lists;
33import org.jetbrains.annotations.ApiStatus; 33import org.jetbrains.annotations.ApiStatus;
34 34
35import cuchaz.enigma.Enigma; 35import cuchaz.enigma.Enigma;
@@ -414,8 +414,8 @@ public class GuiController implements ClientPacketHandler {
414 return; 414 return;
415 } 415 }
416 416
417 List<ClassEntry> obfClasses = Lists.newArrayList(); 417 List<ClassEntry> obfClasses = new ArrayList<>();
418 List<ClassEntry> deobfClasses = Lists.newArrayList(); 418 List<ClassEntry> deobfClasses = new ArrayList<>();
419 this.addSeparatedClasses(obfClasses, deobfClasses); 419 this.addSeparatedClasses(obfClasses, deobfClasses);
420 this.gui.setObfClasses(obfClasses); 420 this.gui.setObfClasses(obfClasses);
421 this.gui.setDeobfClasses(deobfClasses); 421 this.gui.setDeobfClasses(deobfClasses);
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 43b16cd9..dc58464c 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/Main.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/Main.java
@@ -20,7 +20,6 @@ import java.util.EnumSet;
20import java.util.List; 20import java.util.List;
21import java.util.Set; 21import java.util.Set;
22 22
23import com.google.common.io.MoreFiles;
24import joptsimple.OptionException; 23import joptsimple.OptionException;
25import joptsimple.OptionParser; 24import joptsimple.OptionParser;
26import joptsimple.OptionSet; 25import joptsimple.OptionSet;
@@ -144,7 +143,7 @@ public class Main {
144 143
145 if (Files.isDirectory(mappingsPath)) { 144 if (Files.isDirectory(mappingsPath)) {
146 controller.openMappings(MappingFormat.ENIGMA_DIRECTORY, mappingsPath); 145 controller.openMappings(MappingFormat.ENIGMA_DIRECTORY, mappingsPath);
147 } else if ("zip".equalsIgnoreCase(MoreFiles.getFileExtension(mappingsPath))) { 146 } else if (mappingsPath.getFileName().toString().toLowerCase().endsWith(".zip")) {
148 controller.openMappings(MappingFormat.ENIGMA_ZIP, mappingsPath); 147 controller.openMappings(MappingFormat.ENIGMA_ZIP, mappingsPath);
149 } else { 148 } else {
150 controller.openMappings(MappingFormat.ENIGMA_FILE, mappingsPath); 149 controller.openMappings(MappingFormat.ENIGMA_FILE, mappingsPath);
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/config/OldConfigImporter.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/OldConfigImporter.java
index 2e84991b..181b2866 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/config/OldConfigImporter.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/OldConfigImporter.java
@@ -1,6 +1,7 @@
1package cuchaz.enigma.gui.config; 1package cuchaz.enigma.gui.config;
2 2
3import java.awt.Font; 3import java.awt.Font;
4import java.nio.file.Files;
4 5
5import cuchaz.enigma.gui.config.legacy.Config; 6import cuchaz.enigma.gui.config.legacy.Config;
6 7
@@ -10,7 +11,7 @@ public final class OldConfigImporter {
10 11
11 @SuppressWarnings("deprecation") 12 @SuppressWarnings("deprecation")
12 public static void doImport() { 13 public static void doImport() {
13 if (Config.CONFIG_FILE.exists()) { 14 if (Files.exists(Config.CONFIG_FILE)) {
14 Config config = new Config(); 15 Config config = new Config();
15 16
16 if (config.editorFont != null) { 17 if (config.editorFont != null) {
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/config/Themes.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/Themes.java
index e2db9682..d2a6608c 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/config/Themes.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/Themes.java
@@ -2,11 +2,11 @@ package cuchaz.enigma.gui.config;
2 2
3import java.awt.Font; 3import java.awt.Font;
4import java.util.HashSet; 4import java.util.HashSet;
5import java.util.Map;
5import java.util.Set; 6import java.util.Set;
6 7
7import javax.swing.UIManager; 8import javax.swing.UIManager;
8 9
9import com.google.common.collect.ImmutableMap;
10import de.sciss.syntaxpane.DefaultSyntaxKit; 10import de.sciss.syntaxpane.DefaultSyntaxKit;
11 11
12import cuchaz.enigma.gui.EnigmaSyntaxKit; 12import cuchaz.enigma.gui.EnigmaSyntaxKit;
@@ -30,7 +30,7 @@ public class Themes {
30 EnigmaSyntaxKit.invalidate(); 30 EnigmaSyntaxKit.invalidate();
31 DefaultSyntaxKit.initKit(); 31 DefaultSyntaxKit.initKit();
32 DefaultSyntaxKit.registerContentType("text/enigma-sources", EnigmaSyntaxKit.class.getName()); 32 DefaultSyntaxKit.registerContentType("text/enigma-sources", EnigmaSyntaxKit.class.getName());
33 ImmutableMap<RenamableTokenType, BoxHighlightPainter> boxHighlightPainters = getBoxHighlightPainters(); 33 Map<RenamableTokenType, BoxHighlightPainter> boxHighlightPainters = getBoxHighlightPainters();
34 listeners.forEach(l -> l.onThemeChanged(laf, boxHighlightPainters)); 34 listeners.forEach(l -> l.onThemeChanged(laf, boxHighlightPainters));
35 ScaleUtil.applyScaling(); 35 ScaleUtil.applyScaling();
36 UiConfig.save(); 36 UiConfig.save();
@@ -85,9 +85,12 @@ public class Themes {
85 } 85 }
86 } 86 }
87 87
88 public static ImmutableMap<RenamableTokenType, BoxHighlightPainter> getBoxHighlightPainters() { 88 public static Map<RenamableTokenType, BoxHighlightPainter> getBoxHighlightPainters() {
89 return ImmutableMap.of(RenamableTokenType.OBFUSCATED, BoxHighlightPainter.create(UiConfig.getObfuscatedColor(), UiConfig.getObfuscatedOutlineColor()), RenamableTokenType.PROPOSED, BoxHighlightPainter.create(UiConfig.getProposedColor(), UiConfig.getProposedOutlineColor()), 89 return Map.of(
90 RenamableTokenType.DEOBFUSCATED, BoxHighlightPainter.create(UiConfig.getDeobfuscatedColor(), UiConfig.getDeobfuscatedOutlineColor())); 90 RenamableTokenType.OBFUSCATED, BoxHighlightPainter.create(UiConfig.getObfuscatedColor(), UiConfig.getObfuscatedOutlineColor()),
91 RenamableTokenType.PROPOSED, BoxHighlightPainter.create(UiConfig.getProposedColor(), UiConfig.getProposedOutlineColor()),
92 RenamableTokenType.DEOBFUSCATED, BoxHighlightPainter.create(UiConfig.getDeobfuscatedColor(), UiConfig.getDeobfuscatedOutlineColor())
93 );
91 } 94 }
92 95
93 public static void addListener(ThemeChangeListener listener) { 96 public static void addListener(ThemeChangeListener listener) {
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/config/legacy/Config.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/legacy/Config.java
index 2f7cf19b..9955a6b0 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/config/legacy/Config.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/legacy/Config.java
@@ -1,11 +1,11 @@
1package cuchaz.enigma.gui.config.legacy; 1package cuchaz.enigma.gui.config.legacy;
2 2
3import java.awt.Color; 3import java.awt.Color;
4import java.io.File; 4import java.io.BufferedReader;
5import java.lang.reflect.Type; 5import java.lang.reflect.Type;
6import java.nio.charset.Charset; 6import java.nio.file.Files;
7import java.nio.file.Path;
7 8
8import com.google.common.io.Files;
9import com.google.gson.Gson; 9import com.google.gson.Gson;
10import com.google.gson.GsonBuilder; 10import com.google.gson.GsonBuilder;
11import com.google.gson.InstanceCreator; 11import com.google.gson.InstanceCreator;
@@ -40,9 +40,9 @@ public class Config {
40 } 40 }
41 } 41 }
42 42
43 private static final File DIR_HOME = new File(System.getProperty("user.home")); 43 private static final Path DIR_HOME = Path.of(System.getProperty("user.home"));
44 private static final File ENIGMA_DIR = new File(DIR_HOME, ".enigma"); 44 private static final Path ENIGMA_DIR = DIR_HOME.resolve(".enigma");
45 public static final File CONFIG_FILE = new File(ENIGMA_DIR, "config.json"); 45 public static final Path CONFIG_FILE = ENIGMA_DIR.resolve("config.json");
46 46
47 private final transient Gson gson; // transient to exclude it from being exposed 47 private final transient Gson gson; // transient to exclude it from being exposed
48 48
@@ -86,9 +86,9 @@ public class Config {
86 } 86 }
87 87
88 public void loadConfig() { 88 public void loadConfig() {
89 if (CONFIG_FILE.exists()) { 89 if (Files.exists(CONFIG_FILE)) {
90 try { 90 try (BufferedReader reader = Files.newBufferedReader(CONFIG_FILE)) {
91 gson.fromJson(Files.asCharSource(CONFIG_FILE, Charset.defaultCharset()).read(), Config.class); 91 gson.fromJson(reader, Config.class);
92 } catch (Exception e) { 92 } catch (Exception e) {
93 e.printStackTrace(); 93 e.printStackTrace();
94 } 94 }
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/JavadocDialog.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/JavadocDialog.java
index 0ecec6c0..05b7dfbe 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/JavadocDialog.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/dialog/JavadocDialog.java
@@ -17,6 +17,7 @@ import java.awt.Dimension;
17import java.awt.FlowLayout; 17import java.awt.FlowLayout;
18import java.awt.event.KeyAdapter; 18import java.awt.event.KeyAdapter;
19import java.awt.event.KeyEvent; 19import java.awt.event.KeyEvent;
20import java.util.Objects;
20 21
21import javax.swing.JButton; 22import javax.swing.JButton;
22import javax.swing.JComboBox; 23import javax.swing.JComboBox;
@@ -29,8 +30,6 @@ import javax.swing.JScrollPane;
29import javax.swing.WindowConstants; 30import javax.swing.WindowConstants;
30import javax.swing.text.html.HTML; 31import javax.swing.text.html.HTML;
31 32
32import com.google.common.base.Strings;
33
34import cuchaz.enigma.analysis.EntryReference; 33import cuchaz.enigma.analysis.EntryReference;
35import cuchaz.enigma.gui.GuiController; 34import cuchaz.enigma.gui.GuiController;
36import cuchaz.enigma.gui.config.UiConfig; 35import cuchaz.enigma.gui.config.UiConfig;
@@ -198,7 +197,7 @@ public class JavadocDialog {
198 public static void show(JFrame parent, GuiController controller, EntryReference<Entry<?>, Entry<?>> entry) { 197 public static void show(JFrame parent, GuiController controller, EntryReference<Entry<?>, Entry<?>> entry) {
199 // Get the existing text through the mapping as it works for all entries, including constructors. 198 // Get the existing text through the mapping as it works for all entries, including constructors.
200 EntryMapping mapping = controller.project.getMapper().getDeobfMapping(entry.entry); 199 EntryMapping mapping = controller.project.getMapper().getDeobfMapping(entry.entry);
201 String text = Strings.nullToEmpty(mapping.javadoc()); 200 String text = Objects.requireNonNullElse(mapping.javadoc(), "");
202 201
203 // Note: entry.entry is used instead of getNameableEntry() to include constructors, 202 // Note: entry.entry is used instead of getNameableEntry() to include constructors,
204 // which can be documented. 203 // which can be documented.
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/AbstractInheritanceTree.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/AbstractInheritanceTree.java
index 8acfcfe6..6194aa56 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/AbstractInheritanceTree.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/AbstractInheritanceTree.java
@@ -3,7 +3,6 @@ package cuchaz.enigma.gui.elements;
3import java.awt.BorderLayout; 3import java.awt.BorderLayout;
4import java.awt.event.MouseEvent; 4import java.awt.event.MouseEvent;
5 5
6import javax.annotation.Nullable;
7import javax.swing.JPanel; 6import javax.swing.JPanel;
8import javax.swing.JScrollPane; 7import javax.swing.JScrollPane;
9import javax.swing.JTree; 8import javax.swing.JTree;
@@ -13,6 +12,8 @@ import javax.swing.tree.TreeCellRenderer;
13import javax.swing.tree.TreeNode; 12import javax.swing.tree.TreeNode;
14import javax.swing.tree.TreePath; 13import javax.swing.tree.TreePath;
15 14
15import org.jetbrains.annotations.Nullable;
16
16import cuchaz.enigma.analysis.ClassTreeNode; 17import cuchaz.enigma.analysis.ClassTreeNode;
17import cuchaz.enigma.analysis.MethodInheritanceTreeNode; 18import cuchaz.enigma.analysis.MethodInheritanceTreeNode;
18import cuchaz.enigma.analysis.MethodTreeNode; 19import cuchaz.enigma.analysis.MethodTreeNode;
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/EditorTabbedPane.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/EditorTabbedPane.java
index 7a6290ea..65b57af3 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/EditorTabbedPane.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/EditorTabbedPane.java
@@ -4,13 +4,14 @@ import java.awt.Component;
4import java.awt.event.KeyAdapter; 4import java.awt.event.KeyAdapter;
5import java.awt.event.KeyEvent; 5import java.awt.event.KeyEvent;
6import java.awt.event.MouseEvent; 6import java.awt.event.MouseEvent;
7import java.util.HashMap;
7import java.util.Iterator; 8import java.util.Iterator;
9import java.util.Map;
8 10
9import javax.annotation.Nullable;
10import javax.swing.JTabbedPane; 11import javax.swing.JTabbedPane;
11import javax.swing.SwingUtilities; 12import javax.swing.SwingUtilities;
12 13
13import com.google.common.collect.HashBiMap; 14import org.jetbrains.annotations.Nullable;
14 15
15import cuchaz.enigma.analysis.EntryReference; 16import cuchaz.enigma.analysis.EntryReference;
16import cuchaz.enigma.classhandle.ClassHandle; 17import cuchaz.enigma.classhandle.ClassHandle;
@@ -24,7 +25,7 @@ import cuchaz.enigma.translation.representation.entry.Entry;
24 25
25public class EditorTabbedPane { 26public class EditorTabbedPane {
26 private final JTabbedPane openFiles = new JTabbedPane(JTabbedPane.TOP, JTabbedPane.SCROLL_TAB_LAYOUT); 27 private final JTabbedPane openFiles = new JTabbedPane(JTabbedPane.TOP, JTabbedPane.SCROLL_TAB_LAYOUT);
27 private final HashBiMap<ClassEntry, EditorPanel> editors = HashBiMap.create(); 28 private final Map<ClassEntry, EditorPanel> editors = new HashMap<>();
28 29
29 private final EditorTabPopupMenu editorTabPopupMenu; 30 private final EditorTabPopupMenu editorTabPopupMenu;
30 private final Gui gui; 31 private final Gui gui;
@@ -95,7 +96,7 @@ public class EditorTabbedPane {
95 96
96 public void closeEditor(EditorPanel ed) { 97 public void closeEditor(EditorPanel ed) {
97 this.openFiles.remove(ed.getUi()); 98 this.openFiles.remove(ed.getUi());
98 this.editors.inverse().remove(ed); 99 this.editors.values().remove(ed);
99 this.gui.showStructure(this.getActiveEditor()); 100 this.gui.showStructure(this.getActiveEditor());
100 ed.destroy(); 101 ed.destroy();
101 } 102 }
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/ImplementationsTree.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/ImplementationsTree.java
index 962cf273..2500ec8d 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/ImplementationsTree.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/ImplementationsTree.java
@@ -1,8 +1,9 @@
1package cuchaz.enigma.gui.elements; 1package cuchaz.enigma.gui.elements;
2 2
3import javax.annotation.Nullable;
4import javax.swing.tree.DefaultMutableTreeNode; 3import javax.swing.tree.DefaultMutableTreeNode;
5 4
5import org.jetbrains.annotations.Nullable;
6
6import cuchaz.enigma.gui.Gui; 7import cuchaz.enigma.gui.Gui;
7import cuchaz.enigma.gui.renderer.ImplementationsTreeCellRenderer; 8import cuchaz.enigma.gui.renderer.ImplementationsTreeCellRenderer;
8import cuchaz.enigma.translation.representation.entry.ClassEntry; 9import cuchaz.enigma.translation.representation.entry.ClassEntry;
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/InheritanceTree.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/InheritanceTree.java
index aeb173ba..513fa1b9 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/InheritanceTree.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/InheritanceTree.java
@@ -1,8 +1,9 @@
1package cuchaz.enigma.gui.elements; 1package cuchaz.enigma.gui.elements;
2 2
3import javax.annotation.Nullable;
4import javax.swing.tree.DefaultMutableTreeNode; 3import javax.swing.tree.DefaultMutableTreeNode;
5 4
5import org.jetbrains.annotations.Nullable;
6
6import cuchaz.enigma.gui.Gui; 7import cuchaz.enigma.gui.Gui;
7import cuchaz.enigma.gui.renderer.InheritanceTreeCellRenderer; 8import cuchaz.enigma.gui.renderer.InheritanceTreeCellRenderer;
8import cuchaz.enigma.translation.representation.entry.ClassEntry; 9import cuchaz.enigma.translation.representation.entry.ClassEntry;
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/ValidatableUi.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/ValidatableUi.java
index b8b8431b..6ef5fbe9 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/ValidatableUi.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/ValidatableUi.java
@@ -7,7 +7,7 @@ import java.util.ArrayList;
7import java.util.Arrays; 7import java.util.Arrays;
8import java.util.List; 8import java.util.List;
9 9
10import javax.annotation.Nullable; 10import org.jetbrains.annotations.Nullable;
11 11
12import cuchaz.enigma.gui.util.ScaleUtil; 12import cuchaz.enigma.gui.util.ScaleUtil;
13import cuchaz.enigma.utils.validation.ParameterizedMessage; 13import cuchaz.enigma.utils.validation.ParameterizedMessage;
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/ClosableTabTitlePane.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/ClosableTabTitlePane.java
index dca714dd..24ec233d 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/ClosableTabTitlePane.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/ClosableTabTitlePane.java
@@ -8,7 +8,6 @@ import java.awt.event.MouseAdapter;
8import java.awt.event.MouseEvent; 8import java.awt.event.MouseEvent;
9 9
10import javax.accessibility.AccessibleContext; 10import javax.accessibility.AccessibleContext;
11import javax.annotation.Nullable;
12import javax.swing.JButton; 11import javax.swing.JButton;
13import javax.swing.JComponent; 12import javax.swing.JComponent;
14import javax.swing.JLabel; 13import javax.swing.JLabel;
@@ -19,6 +18,8 @@ import javax.swing.UIManager;
19import javax.swing.border.EmptyBorder; 18import javax.swing.border.EmptyBorder;
20import javax.swing.event.ChangeListener; 19import javax.swing.event.ChangeListener;
21 20
21import org.jetbrains.annotations.Nullable;
22
22public class ClosableTabTitlePane { 23public class ClosableTabTitlePane {
23 private final JPanel ui; 24 private final JPanel ui;
24 private final JButton closeButton; 25 private final JButton closeButton;
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/EditorPanel.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/EditorPanel.java
index e0a299f5..fb30f87a 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/EditorPanel.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/panels/EditorPanel.java
@@ -18,7 +18,6 @@ import java.util.Collection;
18import java.util.List; 18import java.util.List;
19import java.util.Map; 19import java.util.Map;
20 20
21import javax.annotation.Nullable;
22import javax.swing.JButton; 21import javax.swing.JButton;
23import javax.swing.JComponent; 22import javax.swing.JComponent;
24import javax.swing.JEditorPane; 23import javax.swing.JEditorPane;
@@ -36,6 +35,7 @@ import javax.swing.text.Highlighter.HighlightPainter;
36 35
37import de.sciss.syntaxpane.DefaultSyntaxKit; 36import de.sciss.syntaxpane.DefaultSyntaxKit;
38import de.sciss.syntaxpane.SyntaxDocument; 37import de.sciss.syntaxpane.SyntaxDocument;
38import org.jetbrains.annotations.Nullable;
39 39
40import cuchaz.enigma.EnigmaProject; 40import cuchaz.enigma.EnigmaProject;
41import cuchaz.enigma.analysis.EntryReference; 41import cuchaz.enigma.analysis.EntryReference;
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/util/GuiUtil.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/util/GuiUtil.java
index da1a2474..7cc0bfe1 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/util/GuiUtil.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/util/GuiUtil.java
@@ -18,6 +18,7 @@ import java.awt.font.TextAttribute;
18import java.io.IOException; 18import java.io.IOException;
19import java.net.URI; 19import java.net.URI;
20import java.net.URISyntaxException; 20import java.net.URISyntaxException;
21import java.util.ArrayList;
21import java.util.Collections; 22import java.util.Collections;
22import java.util.List; 23import java.util.List;
23import java.util.Map; 24import java.util.Map;
@@ -36,7 +37,6 @@ import javax.swing.tree.TreeNode;
36import javax.swing.tree.TreePath; 37import javax.swing.tree.TreePath;
37 38
38import com.formdev.flatlaf.extras.FlatSVGIcon; 39import com.formdev.flatlaf.extras.FlatSVGIcon;
39import com.google.common.collect.Lists;
40 40
41import cuchaz.enigma.analysis.index.EntryIndex; 41import cuchaz.enigma.analysis.index.EntryIndex;
42import cuchaz.enigma.gui.Gui; 42import cuchaz.enigma.gui.Gui;
@@ -172,7 +172,7 @@ public class GuiUtil {
172 } 172 }
173 173
174 public static TreePath getPathToRoot(TreeNode node) { 174 public static TreePath getPathToRoot(TreeNode node) {
175 List<TreeNode> nodes = Lists.newArrayList(); 175 List<TreeNode> nodes = new ArrayList<>();
176 TreeNode n = node; 176 TreeNode n = node;
177 177
178 do { 178 do {
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/util/History.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/util/History.java
index f1a8a7a9..6ce8c831 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/util/History.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/util/History.java
@@ -1,12 +1,11 @@
1package cuchaz.enigma.gui.util; 1package cuchaz.enigma.gui.util;
2 2
3import java.util.ArrayDeque;
3import java.util.Deque; 4import java.util.Deque;
4 5
5import com.google.common.collect.Queues;
6
7public class History<T> { 6public class History<T> {
8 private final Deque<T> previous = Queues.newArrayDeque(); 7 private final Deque<T> previous = new ArrayDeque<>();
9 private final Deque<T> next = Queues.newArrayDeque(); 8 private final Deque<T> next = new ArrayDeque<>();
10 private T current; 9 private T current;
11 10
12 public History(T initial) { 11 public History(T initial) {