From ba5ffc258f6d58bf9d01226baea016db10cfd811 Mon Sep 17 00:00:00 2001 From: Modmuss50 Date: Wed, 7 Jun 2017 08:29:37 +0100 Subject: Added theme switcher + dark theme (#60) * Initial work on the color config * Save and read config from file.+ * Allow changing the editor colors * Remove the right margin * Move config to the user's home dir * Use Guava instead of Apache commons * Add runtime theme switching, includes example "dark" theme. * Rename dark theme as requested * Small clean up * Include suggestions from @Thog --- src/main/java/cuchaz/enigma/gui/Gui.java | 10 +++---- .../java/cuchaz/enigma/gui/MinecraftSyntaxKit.java | 32 +++++++++++----------- .../java/cuchaz/enigma/gui/elements/MenuBar.java | 31 +++++++++++++++++++++ .../highlight/DeobfuscatedHighlightPainter.java | 2 +- .../gui/highlight/ObfuscatedHighlightPainter.java | 4 +-- .../gui/highlight/OtherHighlightPainter.java | 2 +- 6 files changed, 55 insertions(+), 26 deletions(-) (limited to 'src/main/java/cuchaz/enigma/gui') diff --git a/src/main/java/cuchaz/enigma/gui/Gui.java b/src/main/java/cuchaz/enigma/gui/Gui.java index 86c97aa..4a891cf 100644 --- a/src/main/java/cuchaz/enigma/gui/Gui.java +++ b/src/main/java/cuchaz/enigma/gui/Gui.java @@ -68,13 +68,13 @@ public class Gui { public JFileChooser exportJarFileChooser; private GuiController controller; private JFrame frame; - private PanelEditor editor; + public PanelEditor editor; private JPanel classesPanel; private JSplitPane splitClasses; private PanelIdentifier infoPanel; - private ObfuscatedHighlightPainter obfuscatedHighlightPainter; - private DeobfuscatedHighlightPainter deobfuscatedHighlightPainter; - private OtherHighlightPainter otherHighlightPainter; + public ObfuscatedHighlightPainter obfuscatedHighlightPainter; + public DeobfuscatedHighlightPainter deobfuscatedHighlightPainter; + public OtherHighlightPainter otherHighlightPainter; private SelectionHighlightPainter selectionHighlightPainter; private JTree inheritanceTree; private JTree implementationsTree; @@ -134,7 +134,7 @@ public class Gui { this.editor = new PanelEditor(this); JScrollPane sourceScroller = new JScrollPane(this.editor); this.editor.setContentType("text/minecraft"); - this.editor.setBackground(new Color(Config.INSTANCE.editorBackground)); + this.editor.setBackground(new Color(Config.getInstance().editorBackground)); DefaultSyntaxKit kit = (DefaultSyntaxKit) this.editor.getEditorKit(); kit.toggleComponent(this.editor, "de.sciss.syntaxpane.components.TokenMarker"); diff --git a/src/main/java/cuchaz/enigma/gui/MinecraftSyntaxKit.java b/src/main/java/cuchaz/enigma/gui/MinecraftSyntaxKit.java index 41de035..96327ab 100644 --- a/src/main/java/cuchaz/enigma/gui/MinecraftSyntaxKit.java +++ b/src/main/java/cuchaz/enigma/gui/MinecraftSyntaxKit.java @@ -4,12 +4,8 @@ import cuchaz.enigma.config.Config; import de.sciss.syntaxpane.syntaxkits.JavaSyntaxKit; import de.sciss.syntaxpane.util.Configuration; -/** - * Created by Mark on 04/06/2017. - */ public class MinecraftSyntaxKit extends JavaSyntaxKit { - - public Configuration configuration = null; + private static Configuration configuration = null; @Override public Configuration getConfig() { @@ -22,17 +18,21 @@ public class MinecraftSyntaxKit extends JavaSyntaxKit { public void initConfig(Configuration baseConfig){ configuration = baseConfig; //See de.sciss.syntaxpane.TokenType - configuration.put("Style.KEYWORD", Config.INSTANCE.highlightColor + ", 0"); - configuration.put("Style.KEYWORD2", Config.INSTANCE.highlightColor + ", 3"); - configuration.put("Style.STRING", Config.INSTANCE.stringColor + ", 0"); - configuration.put("Style.STRING2", Config.INSTANCE.stringColor + ", 1"); - configuration.put("Style.NUMBER", Config.INSTANCE.numberColor + ", 1"); - configuration.put("Style.OPERATOR", Config.INSTANCE.operatorColor + ", 0"); - configuration.put("Style.DELIMITER", Config.INSTANCE.delimiterColor + ", 1"); - configuration.put("Style.TYPE", Config.INSTANCE.typeColor + ", 2"); - configuration.put("Style.TYPE2", Config.INSTANCE.typeColor + ", 1"); - configuration.put("Style.IDENTIFIER", Config.INSTANCE.identifierColor + ", 0"); - configuration.put("Style.DEFAULT", Config.INSTANCE.defaultTextColor + ", 0"); + configuration.put("Style.KEYWORD", Config.getInstance().highlightColor + ", 0"); + configuration.put("Style.KEYWORD2", Config.getInstance().highlightColor + ", 3"); + configuration.put("Style.STRING", Config.getInstance().stringColor + ", 0"); + configuration.put("Style.STRING2", Config.getInstance().stringColor + ", 1"); + configuration.put("Style.NUMBER", Config.getInstance().numberColor + ", 1"); + configuration.put("Style.OPERATOR", Config.getInstance().operatorColor + ", 0"); + configuration.put("Style.DELIMITER", Config.getInstance().delimiterColor + ", 1"); + configuration.put("Style.TYPE", Config.getInstance().typeColor + ", 2"); + 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("RightMarginColumn", "999"); //No need to have a right margin, if someone wants it add a config } + + public static void invalidate(){ + configuration = null; + } } diff --git a/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java b/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java index e446c5a..c0568bf 100644 --- a/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java +++ b/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java @@ -1,5 +1,7 @@ package cuchaz.enigma.gui.elements; +import cuchaz.enigma.config.Config; +import cuchaz.enigma.config.Themes; import cuchaz.enigma.gui.Gui; import cuchaz.enigma.gui.dialog.AboutDialog; import cuchaz.enigma.throwables.MappingParseException; @@ -210,6 +212,35 @@ public class MenuBar extends JMenuBar { item.addActionListener(event -> this.gui.close()); } } + { + JMenu menu = new JMenu("View"); + this.add(menu); + { + JMenu themes = new JMenu("Themes"); + menu.add(themes); + { + JMenuItem defaultTheme = new JMenuItem("Default"); + themes.add(defaultTheme); + defaultTheme.addActionListener(event -> Themes.setDefault(gui)); + JMenuItem dark = new JMenuItem("Dank"); + themes.add(dark); + dark.addActionListener(event -> Themes.setDark(gui)); + themes.addSeparator(); + JMenuItem refresh = new JMenuItem("Reload From config"); + themes.add(refresh); + refresh.addActionListener(event -> { + try { + Config.getInstance().reset(); + Config.getInstance().saveConfig(); + Themes.updateTheme(gui); + } catch (IOException e) { + e.printStackTrace(); + } + }); + } + + } + } { JMenu menu = new JMenu("Help"); this.add(menu); diff --git a/src/main/java/cuchaz/enigma/gui/highlight/DeobfuscatedHighlightPainter.java b/src/main/java/cuchaz/enigma/gui/highlight/DeobfuscatedHighlightPainter.java index ef651e3..41aa97f 100644 --- a/src/main/java/cuchaz/enigma/gui/highlight/DeobfuscatedHighlightPainter.java +++ b/src/main/java/cuchaz/enigma/gui/highlight/DeobfuscatedHighlightPainter.java @@ -16,6 +16,6 @@ import cuchaz.enigma.config.Config; public class DeobfuscatedHighlightPainter extends BoxHighlightPainter { public DeobfuscatedHighlightPainter() { - super(getColor(Config.INSTANCE.deobfuscatedColor, Config.INSTANCE.deobfuscatedHiglightAlpha), getColor(Config.INSTANCE.deobfuscatedColorOutline, Config.INSTANCE.deobfuscatedOutlineAlpha)); + super(getColor(Config.getInstance().deobfuscatedColor, Config.getInstance().deobfuscatedHiglightAlpha), getColor(Config.getInstance().deobfuscatedColorOutline, Config.getInstance().deobfuscatedOutlineAlpha)); } } diff --git a/src/main/java/cuchaz/enigma/gui/highlight/ObfuscatedHighlightPainter.java b/src/main/java/cuchaz/enigma/gui/highlight/ObfuscatedHighlightPainter.java index 7887906..d735874 100644 --- a/src/main/java/cuchaz/enigma/gui/highlight/ObfuscatedHighlightPainter.java +++ b/src/main/java/cuchaz/enigma/gui/highlight/ObfuscatedHighlightPainter.java @@ -13,11 +13,9 @@ package cuchaz.enigma.gui.highlight; import cuchaz.enigma.config.Config; -import java.awt.*; - public class ObfuscatedHighlightPainter extends BoxHighlightPainter { public ObfuscatedHighlightPainter() { - super(getColor(Config.INSTANCE.obfuscatedColor, Config.INSTANCE.obfuscatedHiglightAlpha), getColor(Config.INSTANCE.obfuscatedColorOutline, Config.INSTANCE.obfuscatedOutlineAlpha)); + super(getColor(Config.getInstance().obfuscatedColor, Config.getInstance().obfuscatedHiglightAlpha), getColor(Config.getInstance().obfuscatedColorOutline, Config.getInstance().obfuscatedOutlineAlpha)); } } diff --git a/src/main/java/cuchaz/enigma/gui/highlight/OtherHighlightPainter.java b/src/main/java/cuchaz/enigma/gui/highlight/OtherHighlightPainter.java index c5154e1..f4ae235 100644 --- a/src/main/java/cuchaz/enigma/gui/highlight/OtherHighlightPainter.java +++ b/src/main/java/cuchaz/enigma/gui/highlight/OtherHighlightPainter.java @@ -16,6 +16,6 @@ import cuchaz.enigma.config.Config; public class OtherHighlightPainter extends BoxHighlightPainter { public OtherHighlightPainter() { - super(null, getColor(Config.INSTANCE.otherColorOutline, Config.INSTANCE.otherOutlineAlpha)); + super(null, getColor(Config.getInstance().otherColorOutline, Config.getInstance().otherOutlineAlpha)); } } -- cgit v1.2.3