From ec03792398d1b78ab5af20dbf5a2d171871396ce Mon Sep 17 00:00:00 2001 From: asie Date: Wed, 28 Nov 2018 10:54:38 +0100 Subject: add line number coloring, bugfixes --- src/main/java/cuchaz/enigma/Main.java | 2 +- src/main/java/cuchaz/enigma/config/Config.java | 12 +++++- src/main/java/cuchaz/enigma/config/Themes.java | 6 +-- src/main/java/cuchaz/enigma/gui/ClassSelector.java | 2 + src/main/java/cuchaz/enigma/gui/Gui.java | 43 +++++++++++----------- src/main/java/cuchaz/enigma/gui/GuiController.java | 3 ++ .../java/cuchaz/enigma/gui/MinecraftSyntaxKit.java | 4 ++ 7 files changed, 44 insertions(+), 28 deletions(-) diff --git a/src/main/java/cuchaz/enigma/Main.java b/src/main/java/cuchaz/enigma/Main.java index 8c5d813b..0f151934 100644 --- a/src/main/java/cuchaz/enigma/Main.java +++ b/src/main/java/cuchaz/enigma/Main.java @@ -15,6 +15,7 @@ import cuchaz.enigma.config.Config; import cuchaz.enigma.config.Themes; import cuchaz.enigma.gui.Gui; +import javax.swing.*; import java.io.File; import java.util.jar.JarFile; @@ -22,7 +23,6 @@ public class Main { public static void main(String[] args) throws Exception { Gui gui = new Gui(); - Config.LookAndFeel.DEFAULT.setGlobalLAF(); // parse command-line args if (args.length >= 1) { diff --git a/src/main/java/cuchaz/enigma/config/Config.java b/src/main/java/cuchaz/enigma/config/Config.java index 034d077c..8c16c47b 100644 --- a/src/main/java/cuchaz/enigma/config/Config.java +++ b/src/main/java/cuchaz/enigma/config/Config.java @@ -12,7 +12,7 @@ import java.lang.reflect.Type; import java.nio.charset.Charset; public class Config { - public enum LookAndFeel { + public enum LookAndFeel { DEFAULT("Default"), DARCULA("Dank"); @@ -44,6 +44,9 @@ public class Config { public void apply(Config config) { switch (this) { case DEFAULT: + config.lineNumbersForeground = 0x333300; + config.lineNumbersBackground = 0xEEEEFF; + config.lineNumbersSelected = 0xCCCCEE; config.obfuscatedColor = 0xFFDCDC; config.obfuscatedHiglightAlpha = 1.0F; config.obfuscatedColorOutline = 0xA05050; @@ -66,6 +69,9 @@ public class Config { break; case DARCULA: //Based off colors found here: https://github.com/dracula/dracula-theme/ + config.lineNumbersForeground = 0xA4A4A3; + config.lineNumbersBackground = 0x313335; + config.lineNumbersSelected = 0x606366; config.obfuscatedColor = 0xFF5555; config.obfuscatedHiglightAlpha = 0.3F; config.obfuscatedColorOutline = 0xFF5555; @@ -120,6 +126,10 @@ public class Config { public Integer identifierColor; public Integer defaultTextColor; + public Integer lineNumbersBackground; + public Integer lineNumbersSelected; + public Integer lineNumbersForeground; + public LookAndFeel lookAndFeel = LookAndFeel.DEFAULT; private Config() { diff --git a/src/main/java/cuchaz/enigma/config/Themes.java b/src/main/java/cuchaz/enigma/config/Themes.java index b3132f24..8a4c3417 100644 --- a/src/main/java/cuchaz/enigma/config/Themes.java +++ b/src/main/java/cuchaz/enigma/config/Themes.java @@ -33,9 +33,7 @@ public class Themes { gui.obfuscatedHighlightPainter = new ObfuscatedHighlightPainter(); gui.deobfuscatedHighlightPainter = new DeobfuscatedHighlightPainter(); gui.otherHighlightPainter = new OtherHighlightPainter(); - gui.editor.updateUI(); - gui.editor.setBackground(new Color(Config.getInstance().editorBackground)); - SwingUtilities.updateComponentTreeUI(gui.getFrame()); - gui.getController().refreshCurrentClass(); + gui.setEditorTheme(Config.getInstance().lookAndFeel); + SwingUtilities.updateComponentTreeUI(gui.getFrame()); } } diff --git a/src/main/java/cuchaz/enigma/gui/ClassSelector.java b/src/main/java/cuchaz/enigma/gui/ClassSelector.java index b032526f..974a7b2b 100644 --- a/src/main/java/cuchaz/enigma/gui/ClassSelector.java +++ b/src/main/java/cuchaz/enigma/gui/ClassSelector.java @@ -24,9 +24,11 @@ import javax.swing.*; import javax.swing.event.CellEditorListener; import javax.swing.event.ChangeEvent; import javax.swing.tree.*; +import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.*; +import java.util.List; public class ClassSelector extends JTree { diff --git a/src/main/java/cuchaz/enigma/gui/Gui.java b/src/main/java/cuchaz/enigma/gui/Gui.java index 95fde436..06e78420 100644 --- a/src/main/java/cuchaz/enigma/gui/Gui.java +++ b/src/main/java/cuchaz/enigma/gui/Gui.java @@ -70,6 +70,7 @@ public class Gui { public FileDialog exportJarFileChooser; private GuiController controller; private JFrame frame; + public Config.LookAndFeel editorFeel; public PanelEditor editor; private JPanel classesPanel; private JSplitPane splitClasses; @@ -84,13 +85,26 @@ public class Gui { private JList tokens; private JTabbedPane tabs; - public Gui() { + public void setEditorTheme(Config.LookAndFeel feel) { + if (editor != null && (editorFeel == null || editorFeel != feel)) { + editor.updateUI(); + editor.setBackground(new Color(Config.getInstance().editorBackground)); + if (editorFeel != null) { + getController().refreshCurrentClass(); + } + + editorFeel = feel; + } + } + public Gui() { // init frame this.frame = new JFrame(Constants.NAME); final Container pane = this.frame.getContentPane(); pane.setLayout(new BorderLayout()); + Config.getInstance().lookAndFeel.setGlobalLAF(); + if (Boolean.parseBoolean(System.getProperty("enigma.catchExceptions", "true"))) { // install a global exception handler to the event thread CrashDialog.init(this.frame); @@ -127,11 +141,7 @@ public class Gui { infoPanel.clearReference(); // init editor - DefaultSyntaxKit.initKit(); - DefaultSyntaxKit.registerContentType("text/minecraft", MinecraftSyntaxKit.class.getName()); - obfuscatedHighlightPainter = new ObfuscatedHighlightPainter(); - deobfuscatedHighlightPainter = new DeobfuscatedHighlightPainter(); - otherHighlightPainter = new OtherHighlightPainter(); + Themes.updateTheme(this); selectionHighlightPainter = new SelectionHighlightPainter(); this.editor = new PanelEditor(this); JScrollPane sourceScroller = new JScrollPane(this.editor); @@ -308,8 +318,6 @@ public class Gui { panel.add(new JLabel("Loading...")); this.classesPanel.add(panel); - Themes.updateTheme(this); - redraw(); } @@ -332,8 +340,6 @@ public class Gui { this.menuBar.exportSourceMenu.setEnabled(true); this.menuBar.exportJarMenu.setEnabled(true); - Themes.updateTheme(this); - redraw(); } @@ -357,8 +363,6 @@ public class Gui { this.menuBar.exportSourceMenu.setEnabled(false); this.menuBar.exportJarMenu.setEnabled(false); - Themes.updateTheme(this); - redraw(); } @@ -489,13 +493,14 @@ public class Gui { private void addNameValue(JPanel container, String name, String value) { JPanel panel = new JPanel(); panel.setLayout(new FlowLayout(FlowLayout.LEFT, 6, 0)); - container.add(panel); JLabel label = new JLabel(name + ":", JLabel.RIGHT); label.setPreferredSize(new Dimension(100, label.getPreferredSize().height)); panel.add(label); panel.add(Utils.unboldLabel(new JLabel(value, JLabel.LEFT))); + + container.add(panel); } private JComboBox addModifierComboBox(JPanel container, String name, Entry entry) { @@ -503,7 +508,6 @@ public class Gui { return null; JPanel panel = new JPanel(); panel.setLayout(new FlowLayout(FlowLayout.LEFT, 6, 0)); - container.add(panel); JLabel label = new JLabel(name + ":", JLabel.RIGHT); label.setPreferredSize(new Dimension(100, label.getPreferredSize().height)); panel.add(label); @@ -513,6 +517,9 @@ public class Gui { combo.setSelectedIndex(getController().getDeobfuscator().getModifier(entry).ordinal()); combo.addItemListener(getController()::modifierChange); panel.add(combo); + + container.add(panel); + return combo; } @@ -607,8 +614,6 @@ public class Gui { else text.selectAll(); - Themes.updateTheme(this); - redraw(); } @@ -665,8 +670,6 @@ public class Gui { tabs.setSelectedIndex(0); - Themes.updateTheme(this); - redraw(); } @@ -697,8 +700,6 @@ public class Gui { tabs.setSelectedIndex(1); - Themes.updateTheme(this); - redraw(); } @@ -720,8 +721,6 @@ public class Gui { tabs.setSelectedIndex(2); - Themes.updateTheme(this); - redraw(); } diff --git a/src/main/java/cuchaz/enigma/gui/GuiController.java b/src/main/java/cuchaz/enigma/gui/GuiController.java index 653f0244..6e15bb02 100644 --- a/src/main/java/cuchaz/enigma/gui/GuiController.java +++ b/src/main/java/cuchaz/enigma/gui/GuiController.java @@ -16,6 +16,8 @@ import com.google.common.collect.Queues; import com.strobel.decompiler.languages.java.ast.CompilationUnit; import cuchaz.enigma.Deobfuscator; import cuchaz.enigma.analysis.*; +import cuchaz.enigma.config.Config; +import cuchaz.enigma.config.Themes; import cuchaz.enigma.gui.dialog.ProgressDialog; import cuchaz.enigma.mapping.*; import cuchaz.enigma.mapping.entry.ClassEntry; @@ -353,6 +355,7 @@ public class GuiController { otherTokens.add(token); } } + gui.setEditorTheme(Config.getInstance().lookAndFeel); gui.setHighlightedTokens(obfuscatedTokens, deobfuscatedTokens, otherTokens); }).start(); } diff --git a/src/main/java/cuchaz/enigma/gui/MinecraftSyntaxKit.java b/src/main/java/cuchaz/enigma/gui/MinecraftSyntaxKit.java index 96327abd..d9fcee53 100644 --- a/src/main/java/cuchaz/enigma/gui/MinecraftSyntaxKit.java +++ b/src/main/java/cuchaz/enigma/gui/MinecraftSyntaxKit.java @@ -1,6 +1,7 @@ package cuchaz.enigma.gui; import cuchaz.enigma.config.Config; +import de.sciss.syntaxpane.components.LineNumbersRuler; import de.sciss.syntaxpane.syntaxkits.JavaSyntaxKit; import de.sciss.syntaxpane.util.Configuration; @@ -29,6 +30,9 @@ public class MinecraftSyntaxKit extends JavaSyntaxKit { configuration.put("Style.TYPE2", Config.getInstance().typeColor + ", 1"); configuration.put("Style.IDENTIFIER", Config.getInstance().identifierColor + ", 0"); configuration.put("Style.DEFAULT", Config.getInstance().defaultTextColor + ", 0"); + configuration.put(LineNumbersRuler.PROPERTY_BACKGROUND, Config.getInstance().lineNumbersBackground + ""); + configuration.put(LineNumbersRuler.PROPERTY_FOREGROUND, Config.getInstance().lineNumbersForeground + ""); + configuration.put(LineNumbersRuler.PROPERTY_CURRENT_BACK, Config.getInstance().lineNumbersSelected + ""); configuration.put("RightMarginColumn", "999"); //No need to have a right margin, if someone wants it add a config } -- cgit v1.2.3