/*
* $Id$
*
* Copyright (c) 2000-2006 by Brent Easton, Rodney Kinney
*
* 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.properties;
import VASSAL.build.Buildable;
import VASSAL.build.GameModule;
import VASSAL.build.module.Map;
import VASSAL.build.module.map.boardPicker.Board;
import VASSAL.build.module.map.boardPicker.board.mapgrid.Zone;
/**
*
* @author Brent Easton
*
* A class implementing a cut-down Global property at the Zone level. Zone Properties
* do not have Toolbar butttons, but are controlled by SetGlobalProperty traits in
* counters.
*/
public class ZoneProperty extends GlobalProperty {
protected Zone parentZone;
public ZoneProperty() {
super();
}
public ZoneProperty(GlobalProperty p) {
super(p);
}
public static String getConfigureTypeName() {
return "Global Property";
}
public Class<?>[] getAllowableConfigureComponents() {
return new Class[0];
}
protected String getPropertyId() {
String zoneName = parentZone == null ? null : parentZone.getName();
Board board = parentZone == null ? null : parentZone.getBoard();
String boardName = board == null ? null : board.getName();
Map map = board == null ? null : board.getMap();
String mapName = map == null ? null : map.getConfigureName();
return getConfigureName()+"\t"+zoneName+"\t"+boardName+"\t"+mapName;
}
public void addTo(Buildable parent) {
property.addTo((MutablePropertiesContainer) parent);
GameModule.getGameModule().addCommandEncoder(this);
GameModule.getGameModule().getGameState().addGameComponent(this);
propertySource = (PropertySource) parent;
parentZone = (Zone) parent;
}
}