diff options
Diffstat (limited to 'src/main/java/cuchaz/enigma/config/Config.java')
| -rw-r--r-- | src/main/java/cuchaz/enigma/config/Config.java | 85 |
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 | ||
| 7 | import javax.swing.*; | 7 | import javax.swing.*; |
| 8 | import javax.swing.plaf.metal.MetalLookAndFeel; | 8 | import javax.swing.plaf.metal.MetalLookAndFeel; |
| 9 | import java.awt.*; | ||
| 9 | import java.io.File; | 10 | import java.io.File; |
| 10 | import java.io.IOException; | 11 | import java.io.IOException; |
| 11 | import java.lang.reflect.Type; | 12 | import java.lang.reflect.Type; |
| 12 | import java.nio.charset.Charset; | 13 | import java.nio.charset.Charset; |
| 13 | 14 | ||
| 14 | public class Config { | 15 | public 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 | } |