ColorTheme load/save
authorKevin Lamonte <kevin.lamonte@gmail.com>
Mon, 9 Mar 2015 01:21:48 +0000 (21:21 -0400)
committerKevin Lamonte <kevin.lamonte@gmail.com>
Mon, 9 Mar 2015 01:21:48 +0000 (21:21 -0400)
demos/Demo1.java
src/jexer/bits/CellAttributes.java
src/jexer/bits/ColorTheme.java

index 94f0e9f22ce2ebfdc1cc63593adcb50075b372c7..6f4869ae6c8100644b0fac8ae6c9d45ae227acc6 100644 (file)
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA
  */
+
+import jexer.bits.*;
 import jexer.TApplication;
 
 /**
  * The demo application itself.
  */
 class DemoApplication extends TApplication {
+    /**
+     * Public constructor
+     */
+    public DemoApplication() {
+       try {
+           ColorTheme theme = new ColorTheme();
+       } catch (Exception e) {
+           e.printStackTrace();
+       }
+    }
 }
 
 /**
index 5bfa847e8cbe57c3dda6ff8e169e998a4693cbcb..7dce699468562bf3b9f776a79a58eb66ada3f9bd 100644 (file)
@@ -160,7 +160,7 @@ public class CellAttributes {
      * @param color "red", "blue", etc.
      * @return Color.RED, Color.BLUE, etc.
      */
-    static private Color colorFromString(String color) {
+    static public Color colorFromString(String color) {
        switch (color.toLowerCase()) {
        case "black":
            return Color.BLACK;
index e1f5b77bc0971ae6c8af8925790fee0180e2a265..ff78af454d5744e34eb3c5f6173e0f00b7a56e14 100644 (file)
  */
 package jexer.bits;
 
-import java.util.HashMap;
-import java.util.Map;
-
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.SortedMap;
+import java.util.StringTokenizer;
+import java.util.TreeMap;
 
 /**
  * ColorTheme is a collection of colors keyed by string.
@@ -44,7 +48,15 @@ public class ColorTheme {
     /**
      * The current theme colors
      */
-    private Map<String, CellAttributes> colors;
+    private SortedMap<String, CellAttributes> colors;
+
+    /**
+     * Public constructor.
+     */
+    public ColorTheme() {
+       colors = new TreeMap<String, CellAttributes>();
+       setDefaultTheme();
+    }
 
     /**
      * Retrieve the CellAttributes by name.
@@ -62,14 +74,13 @@ public class ColorTheme {
      *
      * @param filename file to write to
      */
-    public void save(String filename) {
-       /*
-       auto file = File(filename, "wt");
-       foreach (string key; colors.keys.sort) {
-           CellAttributes color = colors[key];
-           file.writefln("%s = %s", key, color);
+    public void save(String filename) throws IOException {
+       FileWriter file = new FileWriter(filename);
+       for (String key: colors.keySet()) {
+           CellAttributes color = getColor(key);
+           file.write(String.format("%s = %s\n", key, color));
        }
-        */
+       file.close();
     }
 
     /**
@@ -77,45 +88,51 @@ public class ColorTheme {
      *
      * @param filename file to read from
      */
-    public void load(String filename) {
-       /*
-       string text = std.file.readText!(string)(filename);
-       foreach (line; std.string.splitLines!(string)(text)) {
-           string key;
-           string bold;
-           string foreColor;
-           string on;
-           string backColor;
-           auto tokenCount = formattedRead(line, "%s = %s %s %s %s",
-               &key, &bold, &foreColor, &on, &backColor);
-           if (tokenCount == 4) {
-               std.stdio.stderr.writefln("1 %s = %s %s %s %s",
-                   key, bold, foreColor, on, backColor);
-
+    public void load(String filename) throws IOException {
+       BufferedReader reader = new BufferedReader(new FileReader(filename));
+       String line = reader.readLine();
+       for (; line != null; line = reader.readLine()) {
+           String key;
+           String bold;
+           String foreColor;
+           String backColor;
+
+           // Look for lines that resemble:
+           //     "key = blah on blah"
+           //     "key = bold blah on blah"
+           StringTokenizer tokenizer = new StringTokenizer(line);
+           key = tokenizer.nextToken();
+           if (!tokenizer.nextToken().equals("=")) {
+               // Skip this line
+               continue;
+           }
+           bold = tokenizer.nextToken();
+           if (!bold.toLowerCase().equals("bold")) {
                // "key = blah on blah"
                foreColor = bold;
-               backColor = on;
-               bold = "";
-           } else if (tokenCount == 5) {
-               // "key = bold blah on blah"
-               std.stdio.stderr.writefln("2 %s = %s %s %s %s",
-                   key, bold, foreColor, on, backColor);
            } else {
-               // Unknown line, skip this one
+               // "key = bold blah on blah"
+               foreColor = tokenizer.nextToken().toLowerCase();
+           }
+           if (!tokenizer.nextToken().toLowerCase().equals("on")) {
+               // Skip this line
                continue;
            }
+           backColor = tokenizer.nextToken().toLowerCase();
+
            CellAttributes color = new CellAttributes();
-           if (bold == "bold") {
+           if (bold.equals("bold")) {
                color.bold = true;
            }
            color.foreColor = CellAttributes.colorFromString(foreColor);
            color.backColor = CellAttributes.colorFromString(backColor);
-           colors[key] = color;
+           colors.put(key, color);
        }
-        */
     }
 
-    /// Sets to defaults that resemble the Borland IDE colors.
+    /**
+     * Sets to defaults that resemble the Borland IDE colors.
+     */
     public void setDefaultTheme() {
        CellAttributes color;
 
@@ -400,14 +417,6 @@ public class ColorTheme {
        color.bold = false;
        colors.put("teditor", color);
 
-
     }
 
-    /**
-     * Public constructor.
-     */
-    public ColorTheme() {
-       setDefaultTheme();
-    }
 }
-