package multimonster.common.plugin;
import multimonster.common.setting.SettingListener;
/**
* In normal cases the managing class of an component, like
* resourcemanager or transporter, implements the <code>Pluggable</code>
* interface, so the component is enabled to be extended with plugins
*
* @author Holger Velke (sihovelk)
*/
public interface Pluggable extends SettingListener {
/**
* addPlugin is called when an new PlugIn is inserted in
* the system or if a released plugin in reattached.
*
* @param plugInInformation containing the plugin-specific
* information and the plugin-id
*/
void addPlugIn(PlugInInformation plugInInformation);
/**
* releasePlugIn is called if a PlugIn is removed but the settings
* of the plugin are keept in the system.
*
* @param plugInId the ID of the released plugin
*/
void releasePlugIn(PlugInIdentifier plugInId);
/**
* removePlugIn is called if a plugin is removed and the settings
* of the plugin are not keept in the system.
*
* @param plugInId the ID of the removed plugin
*/
void removePlugIn(PlugInIdentifier plugInId);
}