/*
* Created on 15.11.2005 by jawe
* $Id: Module.java 69 2005-11-27 22:24:52Z jawe $
*/
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);
}