package org.intellimate.izou.addon;
import org.intellimate.izou.identification.Identifiable;
import org.intellimate.izou.system.Context;
import ro.fortsoft.pf4j.AddonAccessible;
import ro.fortsoft.pf4j.ExtensionPoint;
import ro.fortsoft.pf4j.PluginWrapper;
/**
* All AddOns must implement this Class.
*
* It will be instantiated and its registering-methods will be called by the PluginManager.
* This class has method for a properties-file named addOnID.properties (AddOnsID in the form: package.class)
*/
@AddonAccessible
public interface AddOnModel extends ExtensionPoint, Identifiable {
/**
* Internal initiation of addOn - fake constructor, comes before prepare
* @param context the context to initialize with
*/
void initAddOn(Context context);
/**
* Use this method to register your Modules.
* It will time out after 3 seconds!
*/
void register();
/**
* Gets the associated Plugin.
*
* @return the Plugin.
*/
PluginWrapper getPlugin();
/**
* Sets the Plugin IF it is not already set.
*
* @param plugin the plugin
*/
void setPlugin(PluginWrapper plugin);
}