summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/config/Config.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/cuchaz/enigma/config/Config.java')
-rw-r--r--src/main/java/cuchaz/enigma/config/Config.java85
1 files changed, 53 insertions, 32 deletions
diff --git a/src/main/java/cuchaz/enigma/config/Config.java b/src/main/java/cuchaz/enigma/config/Config.java
index 8c16c47..47bd0a7 100644
--- a/src/main/java/cuchaz/enigma/config/Config.java
+++ b/src/main/java/cuchaz/enigma/config/Config.java
@@ -6,12 +6,32 @@ import com.google.gson.*;
6 6
7import javax.swing.*; 7import javax.swing.*;
8import javax.swing.plaf.metal.MetalLookAndFeel; 8import javax.swing.plaf.metal.MetalLookAndFeel;
9import java.awt.*;
9import java.io.File; 10import java.io.File;
10import java.io.IOException; 11import java.io.IOException;
11import java.lang.reflect.Type; 12import java.lang.reflect.Type;
12import java.nio.charset.Charset; 13import java.nio.charset.Charset;
13 14
14public class Config { 15public class Config {
16 public static class AlphaColorEntry {
17 public Integer rgb;
18 public float alpha = 1.0f;
19
20 public AlphaColorEntry(Integer rgb, float alpha) {
21 this.rgb = rgb;
22 this.alpha = alpha;
23 }
24
25 public Color get() {
26 if (rgb == null) {
27 return new Color(0, 0, 0, 0);
28 }
29
30 Color baseColor = new Color(rgb);
31 return new Color(baseColor.getRed(), baseColor.getGreen(), baseColor.getBlue(), (int)(255 * alpha));
32 }
33 }
34
15 public enum LookAndFeel { 35 public enum LookAndFeel {
16 DEFAULT("Default"), 36 DEFAULT("Default"),
17 DARCULA("Dank"); 37 DARCULA("Dank");
@@ -47,16 +67,13 @@ public class Config {
47 config.lineNumbersForeground = 0x333300; 67 config.lineNumbersForeground = 0x333300;
48 config.lineNumbersBackground = 0xEEEEFF; 68 config.lineNumbersBackground = 0xEEEEFF;
49 config.lineNumbersSelected = 0xCCCCEE; 69 config.lineNumbersSelected = 0xCCCCEE;
50 config.obfuscatedColor = 0xFFDCDC; 70 config.obfuscatedColor = new AlphaColorEntry(0xFFDCDC, 1.0f);
51 config.obfuscatedHiglightAlpha = 1.0F; 71 config.obfuscatedColorOutline = new AlphaColorEntry(0xA05050, 1.0f);
52 config.obfuscatedColorOutline = 0xA05050; 72 config.proposedColor = new AlphaColorEntry(0x000000, 0.075f);
53 config.obfuscatedOutlineAlpha = 1.0F; 73 config.proposedColorOutline = new AlphaColorEntry(0x000000, 0.15f);
54 config.deobfuscatedColor = 0xDCFFDC; 74 config.deobfuscatedColor = new AlphaColorEntry(0xDCFFDC, 1.0f);
55 config.deobfuscatedHiglightAlpha = 1.0F; 75 config.deobfuscatedColorOutline = new AlphaColorEntry(0x50A050, 1.0f);
56 config.deobfuscatedColorOutline = 0x50A050; 76 config.otherColorOutline = new AlphaColorEntry(0xB4B4B4, 1.0f);
57 config.deobfuscatedOutlineAlpha = 1.0F;
58 config.otherColorOutline = 0xB4B4B4;
59 config.otherOutlineAlpha = 1.0F;
60 config.editorBackground = 0xFFFFFF; 77 config.editorBackground = 0xFFFFFF;
61 config.highlightColor = 0x3333EE; 78 config.highlightColor = 0x3333EE;
62 config.stringColor = 0xCC6600; 79 config.stringColor = 0xCC6600;
@@ -72,16 +89,13 @@ public class Config {
72 config.lineNumbersForeground = 0xA4A4A3; 89 config.lineNumbersForeground = 0xA4A4A3;
73 config.lineNumbersBackground = 0x313335; 90 config.lineNumbersBackground = 0x313335;
74 config.lineNumbersSelected = 0x606366; 91 config.lineNumbersSelected = 0x606366;
75 config.obfuscatedColor = 0xFF5555; 92 config.obfuscatedColor = new AlphaColorEntry(0xFF5555, 0.3f);
76 config.obfuscatedHiglightAlpha = 0.3F; 93 config.obfuscatedColorOutline = new AlphaColorEntry(0xFF5555, 0.5f);
77 config.obfuscatedColorOutline = 0xFF5555; 94 config.deobfuscatedColor = new AlphaColorEntry(0x50FA7B, 0.3f);
78 config.obfuscatedOutlineAlpha = 0.5F; 95 config.deobfuscatedColorOutline = new AlphaColorEntry(0x50FA7B, 0.5f);
79 config.deobfuscatedColor = 0x50FA7B; 96 config.proposedColor = new AlphaColorEntry(0x606366, 0.3f);
80 config.deobfuscatedHiglightAlpha = 0.3F; 97 config.proposedColorOutline = new AlphaColorEntry(0x606366, 0.5f);
81 config.deobfuscatedColorOutline = 0x50FA7B; 98 config.otherColorOutline = new AlphaColorEntry(0xB4B4B4, 0.0f);
82 config.deobfuscatedOutlineAlpha = 0.5F;
83 config.otherColorOutline = 0xB4B4B4;
84 config.otherOutlineAlpha = 0.0F;
85 config.editorBackground = 0x282A36; 99 config.editorBackground = 0x282A36;
86 config.highlightColor = 0xFF79C6; 100 config.highlightColor = 0xFF79C6;
87 config.stringColor = 0xF1FA8C; 101 config.stringColor = 0xF1FA8C;
@@ -103,16 +117,13 @@ public class Config {
103 117
104 private final transient Gson gson; // transient to exclude it from being exposed 118 private final transient Gson gson; // transient to exclude it from being exposed
105 119
106 public Integer obfuscatedColor; 120 public AlphaColorEntry obfuscatedColor;
107 public float obfuscatedHiglightAlpha; 121 public AlphaColorEntry obfuscatedColorOutline;
108 public Integer obfuscatedColorOutline; 122 public AlphaColorEntry proposedColor;
109 public float obfuscatedOutlineAlpha; 123 public AlphaColorEntry proposedColorOutline;
110 public Integer deobfuscatedColor; 124 public AlphaColorEntry deobfuscatedColor;
111 public float deobfuscatedHiglightAlpha; 125 public AlphaColorEntry deobfuscatedColorOutline;
112 public Integer deobfuscatedColorOutline; 126 public AlphaColorEntry otherColorOutline;
113 public float deobfuscatedOutlineAlpha;
114 public Integer otherColorOutline;
115 public float otherOutlineAlpha;
116 127
117 //Defaults found here: https://github.com/Sciss/SyntaxPane/blob/122da367ff7a5d31627a70c62a48a9f0f4f85a0a/src/main/resources/de/sciss/syntaxpane/defaultsyntaxkit/config.properties#L139 128 //Defaults found here: https://github.com/Sciss/SyntaxPane/blob/122da367ff7a5d31627a70c62a48a9f0f4f85a0a/src/main/resources/de/sciss/syntaxpane/defaultsyntaxkit/config.properties#L139
118 public Integer editorBackground; 129 public Integer editorBackground;
@@ -152,8 +163,18 @@ public class Config {
152 public void loadConfig() throws IOException { 163 public void loadConfig() throws IOException {
153 if (!ENIGMA_DIR.exists()) ENIGMA_DIR.mkdirs(); 164 if (!ENIGMA_DIR.exists()) ENIGMA_DIR.mkdirs();
154 File configFile = new File(ENIGMA_DIR, "config.json"); 165 File configFile = new File(ENIGMA_DIR, "config.json");
155 if (configFile.exists()) gson.fromJson(Files.asCharSource(configFile, Charset.defaultCharset()).read(), Config.class); 166 boolean loaded = false;
156 else { 167
168 if (configFile.exists()) {
169 try {
170 gson.fromJson(Files.asCharSource(configFile, Charset.defaultCharset()).read(), Config.class);
171 loaded = true;
172 } catch (Exception e) {
173 e.printStackTrace();
174 }
175 }
176
177 if (!loaded) {
157 this.reset(); 178 this.reset();
158 Files.touch(configFile); 179 Files.touch(configFile);
159 } 180 }