/**
*
*/
package org.javabuilders.handler.type;
import java.awt.Component;
import java.awt.Image;
import java.net.URL;
import org.javabuilders.BuildException;
import org.javabuilders.BuildProcess;
import org.javabuilders.Node;
import org.javabuilders.handler.ITypeAsValueHandler;
import org.javabuilders.util.BuilderUtils;
/**
* Handles Image objects in a fashion similar to Icon
* @author Jacek Furmankiewicz
*
*/
public class ImageAsValueHandler implements ITypeAsValueHandler<Image> {
private static final ImageAsValueHandler singleton = new ImageAsValueHandler();
/**
* @return Singleton
*/
public static ImageAsValueHandler getInstance() {return singleton;}
private ImageAsValueHandler() {}
/* (non-Javadoc)
* @see org.javabuilders.handler.ITypeAsValueHandler#getInputValueSample()
*/
public String getInputValueSample() {return "images/save48x48.png";}
/* (non-Javadoc)
* @see org.javabuilders.handler.ITypeAsValueHandler#getRegex()
*/
public String getRegex() {
return IconAsValueHandler.IMAGE_REGEX;
}
/* (non-Javadoc)
* @see org.javabuilders.handler.ITypeAsValueHandler#getValue(org.javabuilders.BuildProcess, org.javabuilders.Node, java.lang.String, java.lang.Object)
*/
public Image getValue(BuildProcess process, Node node, String key,
Object inputValue) throws BuildException {
String path = (String)inputValue;
URL imgURL = BuilderUtils.getResourceURL(process, path);
if (imgURL != null) {
Object c = node.getMainObject();
if (c instanceof Component) {
Component comp = (Component) c;
return comp.getToolkit().getImage(imgURL);
} else {
throw new BuildException("Unable to obtain Toolkit required for Image: " + path);
}
} else {
throw new BuildException("Unable to find Image defined by path: " + path);
}
}
/* (non-Javadoc)
* @see org.javabuilders.IApplicable#getApplicableClass()
*/
public Class<?> getApplicableClass() {
return Image.class;
}
}