/**
*
*/
package org.javabuilders.swing.handler.type;
import java.util.Map;
import org.javabuilders.BuildException;
import org.javabuilders.BuildProcess;
import org.javabuilders.Builder;
import org.javabuilders.BuilderConfig;
import org.javabuilders.Node;
import org.javabuilders.handler.AbstractTypeHandler;
import org.javabuilders.swing.SwingAction;
/**
* Menu/toolbar action handler
* @author Jacek Furmankiewicz
*/
public class SwingActionHandler extends AbstractTypeHandler {
private static final SwingActionHandler singleton = new SwingActionHandler();
public static final String SHORT_DESCRIPTION ="shortDescription";
public static final String SHORT_DESC ="shortDesc";
public static final String LONG_DESCRIPTION ="longDescription";
public static final String LONG_DESC ="longDesc";
/**
* @return Singleton
*/
public static SwingActionHandler getInstance() {return singleton;}
private SwingActionHandler() {
super(Builder.NAME);
}
/* (non-Javadoc)
* @see org.javabuilders.handler.ITypeHandler#createNewInstance(org.javabuilders.BuilderConfig, org.javabuilders.BuildProcess, org.javabuilders.Node, java.lang.String, java.util.Map)
*/
public Node createNewInstance(BuilderConfig config, BuildProcess process,
Node parent, String key, Map<String, Object> typeDefinition)
throws BuildException {
return useExistingInstance(config, process, parent, key, typeDefinition, new SwingAction());
}
/* (non-Javadoc)
* @see org.javabuilders.handler.ITypeHandler#useExistingInstance(org.javabuilders.BuilderConfig, org.javabuilders.BuildProcess, org.javabuilders.Node, java.lang.String, java.util.Map, java.lang.Object)
*/
public Node useExistingInstance(BuilderConfig config, BuildProcess process,
Node parent, String key, Map<String, Object> typeDefinition,
Object instance) throws BuildException {
Node node = new Node(parent, key, typeDefinition);
node.setMainObject(instance);
String name = node.getStringProperty(Builder.NAME);
if (name == null) {
throw new BuildException("An Action requires a 'name' attribute: {0}",typeDefinition);
}
return node;
}
/* (non-Javadoc)
* @see org.javabuilders.IApplicable#getApplicableClass()
*/
public Class<SwingAction> getApplicableClass() {
return SwingAction.class;
}
}