/* * $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 java.awt.Image; import java.io.File; import VASSAL.configure.VisibilityCondition; import VASSAL.tools.SequenceEncoder; public class ImageItemInstance extends ItemInstance { protected static final String IMAGE = "image"; //$NON-NLS-1$ protected String imageName = ""; //$NON-NLS-1$ public ImageItemInstance() { super(); } public ImageItemInstance(String code, GamePieceImage defn) { super(defn); decode(code); } public ImageItemInstance(String name, String type, String location) { super(name, type, location); } public ImageItemInstance(String nam, String typ, String loc, String iName) { super(nam, typ, loc); imageName = iName; } public String encode() { final SequenceEncoder se = new SequenceEncoder(';'); se.append(getType()) .append(getName()) .append(getLocation()) .append(imageName); 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$ imageName = sd.nextToken(""); //$NON-NLS-1$ } public String getImageName() { return imageName; } public String[] getAttributeDescriptions() { return new String[] { "Image: " }; } public Class<?>[] getAttributeTypes() { return new Class<?>[] { Image.class, }; } public String[] getAttributeNames() { return new String[] { IMAGE }; } public void setAttribute(String key, Object o) { if (IMAGE.equals(key)) { if (o instanceof String) { imageName = (String) o; } else { if (o == null) { imageName = null; } else { imageName = ((File) o).getName(); } } } else { super.setAttribute(key, o); } if (myConfig != null) { myConfig.rebuildViz(); } } public String getAttributeValueString(String key) { if (IMAGE.equals(key)) { return imageName; } else { return super.getAttributeValueString(key); } } public VisibilityCondition getAttributeVisibility(String name) { if (IMAGE.equals(name)) { return imageCond; } else { return super.getAttributeVisibility(name); } } private VisibilityCondition imageCond = new VisibilityCondition() { public boolean shouldBeVisible() { return !((ImageItem) getItem()).isFixed(); } }; }