// GraphTea Project: http://github.com/graphtheorysoftware/GraphTea
// Copyright (C) 2012 Graph Theory Software Foundation: http://GraphTheorySoftware.com
// Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology
// Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/
package graphtea.platform.extension;
import graphtea.platform.core.AbstractAction;
import graphtea.platform.core.BlackBoard;
/**
* The base class to create new types of extensions. It can be done by this:
* <pre>
* class MyExtensionHandler implements ExtensionHandler{
* ...
* }
*
* and in you plugin Init file:
*
* public class Init{
* static{
* ExtensionLoader.registerExtensionHandler(new MyExtensionHandler());
* }
* }
* @author azin azadi
*/
public interface ExtensionHandler {
/**
* tries to handle the given Object as a known Extension,...
* normally, Extensions are interfaces that can be sandwiched in an AbstractAction Automatically,
* there is options for generating menus automatically after loading it (By returning AbstractExtensionAction) .
*
* @param b the blackboard as the environment...
* @param extension the extension which we want to create the AbstractAction from
* @return not null if it was a valid case and the operation was successfull, null if it was not a valid case or it
* is done without creating any actions(in some cases)
* @see graphtea.ui.extension.AbstractExtensionAction
*/
AbstractAction handle(BlackBoard b, Object extension);
}