/**
*
*/
package org.javabuilders.swing.handler.type;
import java.awt.Dimension;
import org.javabuilders.BuildException;
import org.javabuilders.BuildProcess;
import org.javabuilders.Node;
import org.javabuilders.handler.ITypeAsValueHandler;
/**
* Handles creating Dimension objects
*
* @author anavarro
* @author Jacek Furmankiewicz
*
*/
public final class DimensionAsValueHandler implements ITypeAsValueHandler<Dimension>
{
/**
* DIMENSION_VALUE_REGEX
*/
private final static String DIMENSION_VALUE_REGEX = "^[0-9]+x{1}[0-9]+$";
/**
* singleton
*/
private final static DimensionAsValueHandler SINGLETON = new DimensionAsValueHandler();
/**
* @return Singleton
*/
public static DimensionAsValueHandler getInstance()
{
return SINGLETON;
}
public String getInputValueSample()
{
return "800x600";
}
/* (non-Javadoc)
* @see org.javabuilders.handler.ITypeAsValueHandler#getValue(org.javabuilders.BuildProcess, org.javabuilders.Node, java.lang.String, java.lang.Object)
*/
@SuppressWarnings("boxing")
public Dimension getValue(BuildProcess process, Node node, String key, Object inputValue) throws BuildException
{
final String dimensionValue = (String) inputValue;
if (dimensionValue.matches(DIMENSION_VALUE_REGEX))
{
final String[] widthHeight = dimensionValue.split("x");
return new Dimension(Integer.valueOf(widthHeight[0]), Integer.valueOf(widthHeight[1]));
}
//else
throw new BuildException("\"{0}\" is not a valid dimension", dimensionValue);
}
/**
* (non-Javadoc)
*
* @see org.javabuilders.handler.ITypeAsValueHandler#getRegex()
*/
public String getRegex()
{
return DIMENSION_VALUE_REGEX;
}
/**
* (non-Javadoc)
*
* @see org.javabuilders.IApplicable#getApplicableClass()
*/
public Class<?> getApplicableClass()
{
return Dimension.class;
}
}