/* * $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. */ package VASSAL.build.module.gamepieceimage; import VASSAL.build.AutoConfigurable; import VASSAL.configure.Configurer; import VASSAL.configure.ConfigurerFactory; import VASSAL.tools.SequenceEncoder; public class SymbolItemInstance extends ItemInstance { public static final String SIZE = "size"; //$NON-NLS-1$ public static final String SIZE_COLOR = "sizeColor"; //$NON-NLS-1$ public static final String SYMBOL1 = "symbol1"; //$NON-NLS-1$ public static final String SYMBOL2 = "symbol2"; //$NON-NLS-1$ protected String size; protected String symbol1; protected String symbol2; private ColorSwatch sizeColor = ColorSwatch.getBlack(); public SymbolItemInstance() { super(); } public SymbolItemInstance(String nam, String typ, String loc, String sz, String s1, String s2) { super(nam, typ, loc); setSize(sz); setSymbol1(s1); setSymbol2(s2); } public SymbolItemInstance(String code, GamePieceImage defn) { super(defn); decode(code); } public String encode() { SequenceEncoder se = new SequenceEncoder(';'); se.append(getType()); se.append(getName()); se.append(getLocation()); se.append(getFgColor().encode()); se.append(getBgColor().encode()); se.append(getSize()); se.append(getSymbol1()); se.append(getSymbol2()); se.append(getSizeColor().encode()); return se.getValue(); } public void decode(String code) { SequenceEncoder.Decoder sd = new SequenceEncoder.Decoder(code, ';'); setType(sd.nextToken("")); //$NON-NLS-1$ setName(sd.nextToken("")); //$NON-NLS-1$ setLocation(sd.nextToken("")); //$NON-NLS-1$ setFgColor(new ColorSwatch(sd.nextToken(""))); //$NON-NLS-1$ setBgColor(new ColorSwatch(sd.nextToken(""))); //$NON-NLS-1$ setSize(sd.nextToken("")); //$NON-NLS-1$ setSymbol1(sd.nextToken("")); //$NON-NLS-1$ setSymbol2(sd.nextToken("")); //$NON-NLS-1$ setSizeColor(new ColorSwatch(sd.nextToken(""))); //$NON-NLS-1$ } public void setSize(String size) { this.size = size; } public String getSize() { return size; } protected void setSizeColor(ColorSwatch sizeColor) { this.sizeColor = sizeColor; } protected ColorSwatch getSizeColor() { return sizeColor; } public void setSymbol1(String symbol1) { this.symbol1 = symbol1; } public String getSymbol1() { return symbol1; } public void setSymbol2(String symbol2) { this.symbol2 = symbol2; } public String getSymbol2() { return symbol2; } public String[] getAttributeDescriptions() { return new String[] { "Unit Size: ", "1st Symbol: ", "2nd Symbol: ", "Symbol Color: ", "Background Color: ", "Size Color: " }; } public Class<?>[] getAttributeTypes() { return new Class<?>[] { SizeConfig.class, Symbol1Config.class, Symbol2Config.class, FgColorSwatchConfig.class, BgColorSwatchConfig.class, SizeColorSwatchConfig.class }; } public String[] getAttributeNames() { return new String[] { SIZE, SYMBOL1, SYMBOL2, FG_COLOR, BG_COLOR, SIZE_COLOR }; } public void setAttribute(String key, Object value) { if (SIZE.equals(key)) { size = (String) value; } else if (SYMBOL1.equals(key)) { symbol1 = (String) value; } else if (SYMBOL2.equals(key)) { symbol2 = (String) value; } else if (FG_COLOR.equals(key)) { if (value instanceof String) { value = new ColorSwatch((String) value); } fgColor = (ColorSwatch) value; } else if (BG_COLOR.equals(key)) { if (value instanceof String) { value = new ColorSwatch((String) value); } bgColor = (ColorSwatch) value; } else if (SIZE_COLOR.equals(key)) { if (value instanceof String) { value = new ColorSwatch((String) value); } sizeColor = (ColorSwatch) value; } if (myConfig != null) { myConfig.rebuildViz(); } } public String getAttributeValueString(String key) { if (SIZE.equals(key)) { return size; } else if (SYMBOL1.equals(key)) { return symbol1; } else if (SYMBOL2.equals(key)) { return symbol2; } else if (FG_COLOR.equals(key)) { return fgColor.encode(); } else if (BG_COLOR.equals(key)) { return bgColor.encode(); } else if (SIZE_COLOR.equals(key)) { return sizeColor.encode(); } else return null; } public static class SizeConfig implements ConfigurerFactory { public Configurer getConfigurer(AutoConfigurable c, String key, String name) { return new SizeConfigurer(key, name); } } public static class Symbol1Config implements ConfigurerFactory { public Configurer getConfigurer(AutoConfigurable c, String key, String name) { return new SymbolConfigurer(key, name); } } public static class Symbol2Config implements ConfigurerFactory { public Configurer getConfigurer(AutoConfigurable c, String key, String name) { return new SymbolConfigurer(key, name); } } public static class BgColorSwatchConfig implements ConfigurerFactory { public Configurer getConfigurer(AutoConfigurable c, String key, String name) { return new ColorSwatchConfigurer(key, name, ((SymbolItemInstance) c).getBgColor()); } } public static class FgColorSwatchConfig implements ConfigurerFactory { public Configurer getConfigurer(AutoConfigurable c, String key, String name) { return new ColorSwatchConfigurer(key, name, ((SymbolItemInstance) c).getFgColor()); } } public static class SizeColorSwatchConfig implements ConfigurerFactory { public Configurer getConfigurer(AutoConfigurable c, String key, String name) { return new ColorSwatchConfigurer(key, name, ((SymbolItemInstance) c).getFgColor()); } } }