/* * $Id$ * * Copyright (c) 2005 by Rodney Kinney, Brent Easton * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License (LGPL) as published by the Free Software Foundation. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, copies are available * at http://www.opensource.org. */ /** * Class tht implements a named Color Swatch */ package VASSAL.build.module.gamepieceimage; import java.awt.Color; import VASSAL.build.AbstractConfigurable; import VASSAL.build.Buildable; import VASSAL.build.module.documentation.HelpFile; import VASSAL.configure.ColorConfigurer; import VASSAL.tools.SequenceEncoder; public class ColorSwatch extends AbstractConfigurable implements Comparable<ColorSwatch> { protected static final String NAME = "name"; //$NON-NLS-1$ protected static final String COLOR = "color"; //$NON-NLS-1$ public static final String BLACK = "BLACK"; //$NON-NLS-1$ public static final String WHITE = "WHITE"; //$NON-NLS-1$ public static final String CLEAR = "CLEAR"; //$NON-NLS-1$ public static final String RED = "RED"; //$NON-NLS-1$ protected Color color; public ColorSwatch() { super(); name = ""; //$NON-NLS-1$ color = null; } public ColorSwatch(String n, Color c) { this(); name = n; color = c; } public ColorSwatch(String code) { this(); decode(code); } public Color getColor() { return color; } public void setColor(Color c) { color = c; } public String[] getAttributeDescriptions() { return new String[] { "Color Name: ", "Color: " }; } public Class<?>[] getAttributeTypes() { return new Class<?>[] { String.class, Color.class }; } public String[] getAttributeNames() { return new String[] { NAME, COLOR }; } public void setAttribute(String key, Object o) { if (NAME.equals(key)) { setConfigureName((String) o); } else if (COLOR.equals(key)) { if (o instanceof String) { o = ColorConfigurer.stringToColor((String) o); } color = (Color) o; } } public String getAttributeValueString(String key) { if (NAME.equals(key)) { return getConfigureName(); } else if (COLOR.equals(key)) { return ColorConfigurer.colorToString(color); } else return null; } public void removeFrom(Buildable parent) { } public HelpFile getHelpFile() { return null; } public Class<?>[] getAllowableConfigureComponents() { return new Class[0]; } public static String getConfigureTypeName() { return "Named Color"; } public void addTo(Buildable parent) { setAllAttributesUntranslatable(); } public static ColorSwatch getBlack() { return new ColorSwatch(BLACK, Color.BLACK); } public static ColorSwatch getWhite() { return new ColorSwatch(WHITE, Color.WHITE); } public static ColorSwatch getRed() { return new ColorSwatch(RED, Color.RED); } public static ColorSwatch getClear() { return new ColorSwatch(CLEAR, null); } public String encode() { return getConfigureName(); } public void decode(String s) { SequenceEncoder.Decoder sd = new SequenceEncoder.Decoder(s, ';'); setConfigureName(sd.nextToken()); Color c = ColorManager.getColorManager().getColorByName(getConfigureName()); if (c == null && !getConfigureName().equals(CLEAR)) { c = ColorManager.getColorManager().getColorByName("BLACK"); //$NON-NLS-1$ } setColor(c); } public static ColorSwatch getDefaultSwatch() { return ColorManager.getColorManager().getColorSwatch(ColorManager.DEFAULT_COLOR); } /* (non-Javadoc) * @see java.lang.Comparable#compareTo(java.lang.Object) */ public int compareTo(ColorSwatch c) { return name.compareTo(c.name); } }