package com.limegroup.gnutella.settings; import java.awt.Color; import java.util.Properties; /** * Class for an <tt>Color</tt> setting. */ public final class ColorSetting extends Setting { private Color value; /** * Creates a new <tt>ColorSetting</tt> instance with the specified * key and defualt value. * * @param key the constant key to use for the setting * @param defaultColor the default value to use for the setting */ static ColorSetting createColorSetting(Properties defaultProps, Properties props, String key, Color defaultColor ) { return new ColorSetting(defaultProps, props, key, formatColor(defaultColor)); } static ColorSetting createColorSetting(Properties defaultProps, Properties props, String key, Color defaultColor, String simppKey) { return new ColorSetting(defaultProps, props, key, formatColor(defaultColor), simppKey); } /** * Creates a new <tt>ColorSetting</tt> instance with the specified * key and default value. * * @param defaultProps the <tt>Properties</tt> file that stores the * defaults * @param props the <tt>Properties</tt> file to store this color * @param key the constant key to use for the setting * @param value the default value to use for the setting */ private ColorSetting(Properties defaultProps, Properties props, String key, String value) { super(defaultProps, props, key, value, null); } private ColorSetting(Properties defaultProps, Properties props, String key, String value, String simppKey) { super(defaultProps, props, key, value, simppKey); } /** * Accessor for the value of this setting. * * @return the value of this setting */ public Color getValue() { return value; } /** * Mutator for this setting. * * @param value the value to store */ public void setValue(Color value) { super.setValue(formatColor(value)); this.value = value; } /** * Accessor for the value of this setting. * * @return the value of this setting */ protected void loadValue(String sValue) { sValue = sValue.trim(); try { int r = Integer.parseInt(sValue.substring(1, 3), 16); int g = Integer.parseInt(sValue.substring(3, 5), 16); int b = Integer.parseInt(sValue.substring(5, 7), 16); value = new Color(r,g,b); } catch(NumberFormatException nfe) { revertToDefault(); } catch(StringIndexOutOfBoundsException sioobe) { revertToDefault(); } } /** * Converot color to string property value * @param color color * @return the string property value */ private static String formatColor(Color color) { String red = Integer.toHexString(color.getRed()); String green = Integer.toHexString(color.getGreen()); String blue = Integer.toHexString(color.getBlue()); if(red.length() == 1) red = "0" + red; if(green.length() == 1) green = "0" + green; if(blue.length() == 1) blue = "0" + blue; return "#" + red + green + blue; } }