diff options
| author | 2017-06-07 08:29:37 +0100 | |
|---|---|---|
| committer | 2017-06-07 08:29:37 +0100 | |
| commit | ba5ffc258f6d58bf9d01226baea016db10cfd811 (patch) | |
| tree | 4fd3b77e619198a47d95ee55a742c8057dea591a /src/main/java/cuchaz/enigma/gui | |
| parent | Add support for custom themes (#59) (diff) | |
| download | enigma-fork-ba5ffc258f6d58bf9d01226baea016db10cfd811.tar.gz enigma-fork-ba5ffc258f6d58bf9d01226baea016db10cfd811.tar.xz enigma-fork-ba5ffc258f6d58bf9d01226baea016db10cfd811.zip | |
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
Diffstat (limited to 'src/main/java/cuchaz/enigma/gui')
6 files changed, 55 insertions, 26 deletions
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 { | |||
| 68 | public JFileChooser exportJarFileChooser; | 68 | public JFileChooser exportJarFileChooser; |
| 69 | private GuiController controller; | 69 | private GuiController controller; |
| 70 | private JFrame frame; | 70 | private JFrame frame; |
| 71 | private PanelEditor editor; | 71 | public PanelEditor editor; |
| 72 | private JPanel classesPanel; | 72 | private JPanel classesPanel; |
| 73 | private JSplitPane splitClasses; | 73 | private JSplitPane splitClasses; |
| 74 | private PanelIdentifier infoPanel; | 74 | private PanelIdentifier infoPanel; |
| 75 | private ObfuscatedHighlightPainter obfuscatedHighlightPainter; | 75 | public ObfuscatedHighlightPainter obfuscatedHighlightPainter; |
| 76 | private DeobfuscatedHighlightPainter deobfuscatedHighlightPainter; | 76 | public DeobfuscatedHighlightPainter deobfuscatedHighlightPainter; |
| 77 | private OtherHighlightPainter otherHighlightPainter; | 77 | public OtherHighlightPainter otherHighlightPainter; |
| 78 | private SelectionHighlightPainter selectionHighlightPainter; | 78 | private SelectionHighlightPainter selectionHighlightPainter; |
| 79 | private JTree inheritanceTree; | 79 | private JTree inheritanceTree; |
| 80 | private JTree implementationsTree; | 80 | private JTree implementationsTree; |
| @@ -134,7 +134,7 @@ public class Gui { | |||
| 134 | this.editor = new PanelEditor(this); | 134 | this.editor = new PanelEditor(this); |
| 135 | JScrollPane sourceScroller = new JScrollPane(this.editor); | 135 | JScrollPane sourceScroller = new JScrollPane(this.editor); |
| 136 | this.editor.setContentType("text/minecraft"); | 136 | this.editor.setContentType("text/minecraft"); |
| 137 | this.editor.setBackground(new Color(Config.INSTANCE.editorBackground)); | 137 | this.editor.setBackground(new Color(Config.getInstance().editorBackground)); |
| 138 | DefaultSyntaxKit kit = (DefaultSyntaxKit) this.editor.getEditorKit(); | 138 | DefaultSyntaxKit kit = (DefaultSyntaxKit) this.editor.getEditorKit(); |
| 139 | kit.toggleComponent(this.editor, "de.sciss.syntaxpane.components.TokenMarker"); | 139 | kit.toggleComponent(this.editor, "de.sciss.syntaxpane.components.TokenMarker"); |
| 140 | 140 | ||
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; | |||
| 4 | import de.sciss.syntaxpane.syntaxkits.JavaSyntaxKit; | 4 | import de.sciss.syntaxpane.syntaxkits.JavaSyntaxKit; |
| 5 | import de.sciss.syntaxpane.util.Configuration; | 5 | import de.sciss.syntaxpane.util.Configuration; |
| 6 | 6 | ||
| 7 | /** | ||
| 8 | * Created by Mark on 04/06/2017. | ||
| 9 | */ | ||
| 10 | public class MinecraftSyntaxKit extends JavaSyntaxKit { | 7 | public class MinecraftSyntaxKit extends JavaSyntaxKit { |
| 11 | 8 | private static Configuration configuration = null; | |
| 12 | public Configuration configuration = null; | ||
| 13 | 9 | ||
| 14 | @Override | 10 | @Override |
| 15 | public Configuration getConfig() { | 11 | public Configuration getConfig() { |
| @@ -22,17 +18,21 @@ public class MinecraftSyntaxKit extends JavaSyntaxKit { | |||
| 22 | public void initConfig(Configuration baseConfig){ | 18 | public void initConfig(Configuration baseConfig){ |
| 23 | configuration = baseConfig; | 19 | configuration = baseConfig; |
| 24 | //See de.sciss.syntaxpane.TokenType | 20 | //See de.sciss.syntaxpane.TokenType |
| 25 | configuration.put("Style.KEYWORD", Config.INSTANCE.highlightColor + ", 0"); | 21 | configuration.put("Style.KEYWORD", Config.getInstance().highlightColor + ", 0"); |
| 26 | configuration.put("Style.KEYWORD2", Config.INSTANCE.highlightColor + ", 3"); | 22 | configuration.put("Style.KEYWORD2", Config.getInstance().highlightColor + ", 3"); |
| 27 | configuration.put("Style.STRING", Config.INSTANCE.stringColor + ", 0"); | 23 | configuration.put("Style.STRING", Config.getInstance().stringColor + ", 0"); |
| 28 | configuration.put("Style.STRING2", Config.INSTANCE.stringColor + ", 1"); | 24 | configuration.put("Style.STRING2", Config.getInstance().stringColor + ", 1"); |
| 29 | configuration.put("Style.NUMBER", Config.INSTANCE.numberColor + ", 1"); | 25 | configuration.put("Style.NUMBER", Config.getInstance().numberColor + ", 1"); |
| 30 | configuration.put("Style.OPERATOR", Config.INSTANCE.operatorColor + ", 0"); | 26 | configuration.put("Style.OPERATOR", Config.getInstance().operatorColor + ", 0"); |
| 31 | configuration.put("Style.DELIMITER", Config.INSTANCE.delimiterColor + ", 1"); | 27 | configuration.put("Style.DELIMITER", Config.getInstance().delimiterColor + ", 1"); |
| 32 | configuration.put("Style.TYPE", Config.INSTANCE.typeColor + ", 2"); | 28 | configuration.put("Style.TYPE", Config.getInstance().typeColor + ", 2"); |
| 33 | configuration.put("Style.TYPE2", Config.INSTANCE.typeColor + ", 1"); | 29 | configuration.put("Style.TYPE2", Config.getInstance().typeColor + ", 1"); |
| 34 | configuration.put("Style.IDENTIFIER", Config.INSTANCE.identifierColor + ", 0"); | 30 | configuration.put("Style.IDENTIFIER", Config.getInstance().identifierColor + ", 0"); |
| 35 | configuration.put("Style.DEFAULT", Config.INSTANCE.defaultTextColor + ", 0"); | 31 | configuration.put("Style.DEFAULT", Config.getInstance().defaultTextColor + ", 0"); |
| 36 | configuration.put("RightMarginColumn", "999"); //No need to have a right margin, if someone wants it add a config | 32 | configuration.put("RightMarginColumn", "999"); //No need to have a right margin, if someone wants it add a config |
| 37 | } | 33 | } |
| 34 | |||
| 35 | public static void invalidate(){ | ||
| 36 | configuration = null; | ||
| 37 | } | ||
| 38 | } | 38 | } |
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 @@ | |||
| 1 | package cuchaz.enigma.gui.elements; | 1 | package cuchaz.enigma.gui.elements; |
| 2 | 2 | ||
| 3 | import cuchaz.enigma.config.Config; | ||
| 4 | import cuchaz.enigma.config.Themes; | ||
| 3 | import cuchaz.enigma.gui.Gui; | 5 | import cuchaz.enigma.gui.Gui; |
| 4 | import cuchaz.enigma.gui.dialog.AboutDialog; | 6 | import cuchaz.enigma.gui.dialog.AboutDialog; |
| 5 | import cuchaz.enigma.throwables.MappingParseException; | 7 | import cuchaz.enigma.throwables.MappingParseException; |
| @@ -211,6 +213,35 @@ public class MenuBar extends JMenuBar { | |||
| 211 | } | 213 | } |
| 212 | } | 214 | } |
| 213 | { | 215 | { |
| 216 | JMenu menu = new JMenu("View"); | ||
| 217 | this.add(menu); | ||
| 218 | { | ||
| 219 | JMenu themes = new JMenu("Themes"); | ||
| 220 | menu.add(themes); | ||
| 221 | { | ||
| 222 | JMenuItem defaultTheme = new JMenuItem("Default"); | ||
| 223 | themes.add(defaultTheme); | ||
| 224 | defaultTheme.addActionListener(event -> Themes.setDefault(gui)); | ||
| 225 | JMenuItem dark = new JMenuItem("Dank"); | ||
| 226 | themes.add(dark); | ||
| 227 | dark.addActionListener(event -> Themes.setDark(gui)); | ||
| 228 | themes.addSeparator(); | ||
| 229 | JMenuItem refresh = new JMenuItem("Reload From config"); | ||
| 230 | themes.add(refresh); | ||
| 231 | refresh.addActionListener(event -> { | ||
| 232 | try { | ||
| 233 | Config.getInstance().reset(); | ||
| 234 | Config.getInstance().saveConfig(); | ||
| 235 | Themes.updateTheme(gui); | ||
| 236 | } catch (IOException e) { | ||
| 237 | e.printStackTrace(); | ||
| 238 | } | ||
| 239 | }); | ||
| 240 | } | ||
| 241 | |||
| 242 | } | ||
| 243 | } | ||
| 244 | { | ||
| 214 | JMenu menu = new JMenu("Help"); | 245 | JMenu menu = new JMenu("Help"); |
| 215 | this.add(menu); | 246 | this.add(menu); |
| 216 | { | 247 | { |
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; | |||
| 16 | public class DeobfuscatedHighlightPainter extends BoxHighlightPainter { | 16 | public class DeobfuscatedHighlightPainter extends BoxHighlightPainter { |
| 17 | 17 | ||
| 18 | public DeobfuscatedHighlightPainter() { | 18 | public DeobfuscatedHighlightPainter() { |
| 19 | super(getColor(Config.INSTANCE.deobfuscatedColor, Config.INSTANCE.deobfuscatedHiglightAlpha), getColor(Config.INSTANCE.deobfuscatedColorOutline, Config.INSTANCE.deobfuscatedOutlineAlpha)); | 19 | super(getColor(Config.getInstance().deobfuscatedColor, Config.getInstance().deobfuscatedHiglightAlpha), getColor(Config.getInstance().deobfuscatedColorOutline, Config.getInstance().deobfuscatedOutlineAlpha)); |
| 20 | } | 20 | } |
| 21 | } | 21 | } |
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; | |||
| 13 | 13 | ||
| 14 | import cuchaz.enigma.config.Config; | 14 | import cuchaz.enigma.config.Config; |
| 15 | 15 | ||
| 16 | import java.awt.*; | ||
| 17 | |||
| 18 | public class ObfuscatedHighlightPainter extends BoxHighlightPainter { | 16 | public class ObfuscatedHighlightPainter extends BoxHighlightPainter { |
| 19 | 17 | ||
| 20 | public ObfuscatedHighlightPainter() { | 18 | public ObfuscatedHighlightPainter() { |
| 21 | super(getColor(Config.INSTANCE.obfuscatedColor, Config.INSTANCE.obfuscatedHiglightAlpha), getColor(Config.INSTANCE.obfuscatedColorOutline, Config.INSTANCE.obfuscatedOutlineAlpha)); | 19 | super(getColor(Config.getInstance().obfuscatedColor, Config.getInstance().obfuscatedHiglightAlpha), getColor(Config.getInstance().obfuscatedColorOutline, Config.getInstance().obfuscatedOutlineAlpha)); |
| 22 | } | 20 | } |
| 23 | } | 21 | } |
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; | |||
| 16 | public class OtherHighlightPainter extends BoxHighlightPainter { | 16 | public class OtherHighlightPainter extends BoxHighlightPainter { |
| 17 | 17 | ||
| 18 | public OtherHighlightPainter() { | 18 | public OtherHighlightPainter() { |
| 19 | super(null, getColor(Config.INSTANCE.otherColorOutline, Config.INSTANCE.otherOutlineAlpha)); | 19 | super(null, getColor(Config.getInstance().otherColorOutline, Config.getInstance().otherOutlineAlpha)); |
| 20 | } | 20 | } |
| 21 | } | 21 | } |