/*
* $Id$
*
* Copyright (c) 2000-2007 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;
import VASSAL.build.AbstractConfigurable;
import VASSAL.build.Buildable;
import VASSAL.build.GameModule;
import VASSAL.build.module.documentation.HelpFile;
import VASSAL.command.CommandEncoder;
import VASSAL.configure.ConfigureTree;
import VASSAL.counters.GamePiece;
import VASSAL.counters.PieceDefiner;
/**
* Plugin is a general purpose component for use by Module Plugins that
* require some sort of initialisation. Module Plugins do not need
* to include a Plugin component if they consist only of code and
* image resources used by other parts of the module.
*
* Plugin should be subclassed and added to the Module Plugin.
*
*/
public class Plugin extends AbstractConfigurable implements PluginsLoader.PluginElement {
/*
* The module has not been built yet, so only minimal
* initialisation should be performed in the constructor
*/
public Plugin() {
}
/**
* init() is called by the GameModule when the build of the module and
* all extensions is complete. Any initialisation that depends
* on other parts of the module should be implemented here
*/
public void init() {
}
/**
* Utility routine to register a GamePiece with the PieceDefiner
* so that it appears as an option in the list of traits
* @param p GamePiece to register
*/
public void registerGamePiece(GamePiece p) {
PieceDefiner.addDefinition(p);
}
/**
* Utility routine to register a CommandEncoder with the module
* @param encoder
*/
public void registerCommandEncoder(CommandEncoder encoder) {
GameModule.getGameModule().addCommandEncoder(encoder);
}
/**
* Utility routine to register a new component with the module
* editor so that it appears in the right-click popup menu. To add
* components to the top module level, use BasicModule.class, not
* GameModule.class as the parent.
* @param parent parent of the new component
* @param child new component
*/
public void registerComponent(Class<? extends Buildable> parent, Class<? extends Buildable> child) {
ConfigureTree.addAdditionalComponent(parent, child);
}
public String[] getAttributeDescriptions() {
return new String[0];
}
public Class<?>[] getAttributeTypes() {
return new Class<?>[0];
}
public String[] getAttributeNames() {
return new String[0];
}
public String getAttributeValueString(String key) {
return null;
}
public void setAttribute(String key, Object value) {
}
public Class<?>[] getAllowableConfigureComponents() {
return new Class<?>[0];
}
public HelpFile getHelpFile() {
return null;
}
public void removeFrom(Buildable parent) {
}
public void addTo(Buildable parent) {
}
}