package org.javabuilders.swing.handler.type; import java.text.Format; import java.util.Map; import javax.swing.JFormattedTextField; import org.javabuilders.BuildException; import org.javabuilders.BuildProcess; import org.javabuilders.BuilderConfig; import org.javabuilders.Node; import org.javabuilders.handler.AbstractTypeHandler; /** * Handles created JFormattedText * @author Jacek Furmankiewicz */ public class JFormattedTextFieldTypeHandler extends AbstractTypeHandler { public static final String FORMAT = "format"; private static final JFormattedTextFieldTypeHandler singleton = new JFormattedTextFieldTypeHandler(); /** * @return Singleton */ public static JFormattedTextFieldTypeHandler getInstance() {return singleton;} /** * Constructor */ private JFormattedTextFieldTypeHandler() { super(FORMAT); } /* (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 { JFormattedTextField instance = null; String formatName = (String)typeDefinition.get(FORMAT); if (formatName != null) { //formats should be global variables to avoid repetition if (formatName.matches(BuilderConfig.GLOBAL_VARIABLE_REGEX)) { Format format = (Format) config.getGlobalVariable(formatName, Format.class); instance = new JFormattedTextField(format); } else { throw new BuildException("{0} is not a valid global format name.",formatName); } } else { //no format specified instance = new JFormattedTextField(); } return useExistingInstance(config, process, parent, key, typeDefinition, instance); } /* (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); return node; } /* (non-Javadoc) * @see org.javabuilders.IApplicable#getApplicableClass() */ public Class<JFormattedTextField> getApplicableClass() { return JFormattedTextField.class; } }