package processing.app.helpers; import java.awt.Color; import java.awt.Font; public abstract class PreferencesHelper { // /** // * Create a Color with the value of the specified key. The format of the color // * should be an hexadecimal number of 6 digit, eventually prefixed with a '#'. // * // * @param name // * @return A Color object or null if the key is not found or the format // * is wrong // */ // static public Color getColor(PreferencesMap prefs, String name) { // Color parsed = parseColor(prefs.get(name)); // if (parsed != null) // return parsed; // return Color.GRAY; // set a default // } // // // static public void setColor(PreferencesMap prefs, String attr, Color what) { // putColor(prefs, attr, what); // } // // // static public Font getFontWithDefault(PreferencesMap prefs, PreferencesMap defaults, String attr) { // Font font = getFont(prefs, attr); // if (font == null) { // String value = defaults.get(attr); // prefs.put(attr, value); // font = getFont(prefs, attr); // } // return font; // } // // static public SyntaxStyle getStyle(PreferencesMap prefs, String what) { // String str = prefs.get("editor." + what + ".style"); // // StringTokenizer st = new StringTokenizer(str, ","); // // String s = st.nextToken(); // if (s.indexOf("#") == 0) s = s.substring(1); // Color color = Color.DARK_GRAY; // try { // color = new Color(Integer.parseInt(s, 16)); // } catch (Exception e) { } // // s = st.nextToken(); // boolean bold = (s.indexOf("bold") != -1); // boolean italic = (s.indexOf("italic") != -1); // boolean underlined = (s.indexOf("underlined") != -1); // // return new SyntaxStyle(color, italic, bold, underlined); // } /** * Set the value of the specified key based on the Color passed as parameter. * * @param attr * @param color */ public static void putColor(PreferencesMap prefs, String attr, Color color) { prefs.put(attr, "#" + String.format("%06x", color.getRGB() & 0xffffff)); } public static Color parseColor(String v) { try { if (v.indexOf("#") == 0) v = v.substring(1); return new Color(Integer.parseInt(v, 16)); } catch (Exception e) { return null; } } public static Font getFont(PreferencesMap prefs, String key) { String value = prefs.get(key); if (value == null) return null; String[] split = value.split(","); if (split.length != 3) return null; String name = split[0]; int style = Font.PLAIN; if (split[1].contains("bold")) style |= Font.BOLD; if (split[1].contains("italic")) style |= Font.ITALIC; int size; try { // ParseDouble handle numbers with decimals too size = (int) Double.parseDouble(split[2]); if (size < 1) // Do not allow negative or zero size throw new NumberFormatException(); } catch (NumberFormatException e) { // for wrong formatted size pick the default size = 12; } return new Font(name, style, size); } }