/*
* Created on 15.11.2005 by jawe
* $Id$
*/
/*
* This file is part of scriptbot.
*
* scriptbot is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* scriptbot 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with ScriptBot; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
package net.jawe.scriptbot;
import java.util.Map;
import java.util.Set;
/**
* A script module.
*
* @author jawe
*/
public interface Module {
/**
* The module name. Always corresponds to the directory the module's scripts
* are in.
*
* @return Returns the name.
*/
public String getName();
/**
* The module name. Always corresponds to the directory the module's scripts
* are in.
*
* @param name
* the name to set
*/
public void setName(String name);
/**
* The module script. This is the script that is executed when the module is
* loaded.
*
* @return the module script.
*/
public Script getModuleScript();
/**
* The module script. This is the script that is executed when the module is
* loaded.
*
* @param script
* the module script.
*/
public void setModuleScript(Script script);
/**
* The commands belonging to this module.
*
* @return Returns the commands.
*/
public Set<Command> getCommands();
/**
* Add an event handler to this module.
*
* @param event
* the event to handle.
* @param eventHandler
* the script to execute when the event fires.
*/
public void addEventHandler(String event, Script eventHandler);
/**
* Remove an event handler from this module.
*
* @param event
* the event.
* @param eventHandler
* the script.
* @return true if the event handler was successfully removed.
*/
public boolean removeEventHandler(String event, Script eventHandler);
/**
* A map of events to sets of scripts.
*
* @return the event handlers.
*/
public Map<String, Set<Script>> getEventHandlers();
/**
* Test if the module is loaded.
*
* @return the loaded status.
*/
public boolean isLoaded();
/**
* Set the loaded status.
*
* @param loaded
* the loaded status to set.
*/
public void setLoaded(boolean loaded);
/**
* The class loader used for loading classes referenced by the module's scripts.
* @return the class loader.
*/
public ClassLoader getClassLoader();
/**
* The class loader used for loading classes referenced by the module's scripts.
* @param cl the class loader.
*/
public void setClassLoader(ClassLoader cl);
/**
* A script to execute when the module is about to be unloaded. The path
* must be relative to the module script!
* @return the unload script.
*/
public String getUnloadScript();
/**
* A script to execute when the module is about to be unloaded. The path
* must be relative to the module script!
* @param filename the unload script.
*/
public void setUnloadScript(String filename);
}