[jboss-cvs] jboss-seam/ui/src/main/java/org/jboss/seam/ui/graphicImage ...
Peter Muir
peter at bleepbleep.org.uk
Fri Jun 15 13:06:58 EDT 2007
User: pmuir
Date: 07/06/15 13:06:58
Added: ui/src/main/java/org/jboss/seam/ui/graphicImage
UITransformImageBlur.java UIGraphicImage.java
GraphicImageStore.java UITransformImageType.java
GraphicImageResource.java UITransformImageSize.java
GraphicImageRendererBase.java ImageTransform.java
Log:
Refactor cdk port
Revision Changes Path
1.1 date: 2007/06/15 17:06:58; author: pmuir; state: Exp;jboss-seam/ui/src/main/java/org/jboss/seam/ui/graphicImage/UITransformImageBlur.java
Index: UITransformImageBlur.java
===================================================================
package org.jboss.seam.ui.graphicImage;
import java.io.IOException;
import javax.faces.component.UIComponentBase;
import org.jboss.seam.core.Image;
public abstract class UITransformImageBlur extends UIComponentBase implements ImageTransform
{
public void applyTransform(Image image) throws IOException
{
if (!isRendered())
{
return;
}
image.blur(new Integer(getRadius()));
}
public abstract String getRadius();
public abstract void setRadius(String width);
}
1.1 date: 2007/06/15 17:06:58; author: pmuir; state: Exp;jboss-seam/ui/src/main/java/org/jboss/seam/ui/graphicImage/UIGraphicImage.java
Index: UIGraphicImage.java
===================================================================
package org.jboss.seam.ui.graphicImage;
import javax.faces.component.html.HtmlGraphicImage;
public abstract class UIGraphicImage extends HtmlGraphicImage
{
public static final String FAMILY = "org.jboss.seam.ui.UIGraphicImage";
public abstract String getFileName();
public abstract void setFileName(String fileName);
}
1.1 date: 2007/06/15 17:06:58; author: pmuir; state: Exp;jboss-seam/ui/src/main/java/org/jboss/seam/ui/graphicImage/GraphicImageStore.java
Index: GraphicImageStore.java
===================================================================
package org.jboss.seam.ui.graphicImage;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import org.jboss.seam.Component;
import org.jboss.seam.InterceptionType;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Intercept;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.core.Image;
import org.jboss.seam.log.Log;
import org.jboss.seam.log.Logging;
@Name("org.jboss.seam.ui.graphicImage.graphicImageStore")
@Scope(ScopeType.SESSION)
@Install(precedence = Install.BUILT_IN)
@Intercept(InterceptionType.NEVER)
public class GraphicImageStore implements Serializable
{
private Log log = Logging.getLog(GraphicImageStore.class);
public static class ImageWrapper implements Serializable
{
private byte[] image;
private Image.Type contentType;
public ImageWrapper(byte[] image, Image.Type contentType)
{
this.image = image;
this.contentType = contentType;
}
public Image.Type getContentType()
{
return contentType;
}
public byte[] getImage()
{
return image;
}
}
private Map<String, ImageWrapper> store = new HashMap<String, ImageWrapper>();
private int index = 0;
/**
* Put a image into the store
* @param image
* @return the key of the image
*/
public String put(ImageWrapper image)
{
return put(image, null);
}
/**
* Put an image into the store.
* @param image
* @param key The key to use, if null, a key will be generated
* @return The key of the image
*/
public String put(ImageWrapper image, String key)
{
if (key == null)
{
key = "org.jboss.seam.ui.GraphicImageStore." + index;
index++;
}
store.put(key, image);
log.debug("Put image into to session with key #0", key);
return key;
}
public ImageWrapper get(String key)
{
log.debug("Get image into to session with key #0", key);
ImageWrapper image = store.get(key);
return image;
}
public ImageWrapper remove(String key)
{
log.debug("Get image from session with key #0", key);
return store.remove(key);
}
public boolean contains(String key)
{
return store.containsKey(key);
}
public static GraphicImageStore instance()
{
return (GraphicImageStore) Component.getInstance(GraphicImageStore.class, true);
}
}
1.1 date: 2007/06/15 17:06:58; author: pmuir; state: Exp;jboss-seam/ui/src/main/java/org/jboss/seam/ui/graphicImage/UITransformImageType.java
Index: UITransformImageType.java
===================================================================
package org.jboss.seam.ui.graphicImage;
import java.io.IOException;
import javax.faces.component.UIComponentBase;
import org.jboss.seam.core.Image;
public abstract class UITransformImageType extends UIComponentBase implements ImageTransform
{
public void applyTransform(Image image) throws IOException
{
if (!isRendered())
{
return;
}
Image.Type type = Image.Type.getTypeByMimeType(getContentType());
if (type != null)
{
image.setContentType(type);
}
}
public abstract String getContentType();
public abstract void setContentType(String width);
}
1.1 date: 2007/06/15 17:06:58; author: pmuir; state: Exp;jboss-seam/ui/src/main/java/org/jboss/seam/ui/graphicImage/GraphicImageResource.java
Index: GraphicImageResource.java
===================================================================
package org.jboss.seam.ui.graphicImage;
import static org.jboss.seam.InterceptionType.NEVER;
import static org.jboss.seam.ScopeType.APPLICATION;
import static org.jboss.seam.annotations.Install.BUILT_IN;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Intercept;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.Startup;
import org.jboss.seam.contexts.ContextualHttpServletRequest;
import org.jboss.seam.servlet.AbstractResource;
import org.jboss.seam.ui.graphicImage.GraphicImageStore.ImageWrapper;
@Startup
@Scope(APPLICATION)
@Name("org.jboss.seam.ui.graphicImage.graphicImageResource")
@Install(precedence = BUILT_IN)
@Intercept(NEVER)
public class GraphicImageResource extends AbstractResource
{
public static final String GRAPHIC_IMAGE_RESOURCE_PATH = "/seam/resource/graphicImage";
private static final String RESOURCE_PATH = "/graphicImage";
@Override
protected String getResourcePath()
{
return RESOURCE_PATH;
}
@Override
public void getResource(final HttpServletRequest request, final HttpServletResponse response)
throws ServletException, IOException
{
new ContextualHttpServletRequest(request, getServletContext())
{
@Override
public void process() throws IOException
{
doWork(request, response);
}
}.run();
}
private void doWork(HttpServletRequest request, HttpServletResponse response)
throws IOException
{
String pathInfo = request.getPathInfo().substring(getResourcePath().length() + 1,
request.getPathInfo().lastIndexOf("."));
ImageWrapper image = GraphicImageStore.instance().remove(pathInfo);
if (image != null)
{
response.setContentType(image.getContentType().getMimeType());
response.setStatus(HttpServletResponse.SC_OK);
response.setContentLength(image.getImage().length);
ServletOutputStream os = response.getOutputStream();
os.write(image.getImage());
os.flush();
}
else
{
response.sendError(HttpServletResponse.SC_NOT_FOUND);
}
}
}
1.1 date: 2007/06/15 17:06:58; author: pmuir; state: Exp;jboss-seam/ui/src/main/java/org/jboss/seam/ui/graphicImage/UITransformImageSize.java
Index: UITransformImageSize.java
===================================================================
package org.jboss.seam.ui.graphicImage;
import java.io.IOException;
import javax.faces.component.UIComponentBase;
import org.jboss.seam.core.Image;
public abstract class UITransformImageSize extends UIComponentBase implements ImageTransform
{
public void applyTransform(Image image) throws IOException
{
if (!isRendered())
{
return;
}
// TODO reduce number of decimal places
if (isMaintainRatio())
{
if (getWidth() != null && getHeight() != null)
{
throw new UnsupportedOperationException(
"Cannot maintain ratio and specify height and width");
}
else if (getWidth() != null)
{
image.scaleToWidth(new Integer(getWidth()));
}
else if (getHeight() != null)
{
image.scaleToHeight(new Integer(getHeight()));
}
}
else if (getFactor() != null)
{
if (getWidth() != null || getHeight() != null)
{
throw new UnsupportedOperationException(
"Cannot scale by a factor and specify height and width");
}
image.scale(getFactor());
}
else
{
image.resize(new Integer(getWidth()), new Integer(getHeight()));
}
}
public abstract boolean isMaintainRatio();
public abstract void setMaintainRatio(boolean maintainRatio);
public abstract Integer getWidth();
public abstract void setWidth(Integer width);
public abstract Integer getHeight();
public abstract void setHeight(Integer height);
public abstract Double getFactor();
public abstract void setFactor(Double factor);
}
1.1 date: 2007/06/15 17:06:58; author: pmuir; state: Exp;jboss-seam/ui/src/main/java/org/jboss/seam/ui/graphicImage/GraphicImageRendererBase.java
Index: GraphicImageRendererBase.java
===================================================================
package org.jboss.seam.ui.graphicImage;
import java.io.IOException;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import org.ajax4jsf.framework.renderer.AjaxComponentRendererBase;
import org.ajax4jsf.framework.renderer.RendererUtils;
import org.jboss.seam.core.Image;
import org.jboss.seam.ui.graphicImage.GraphicImageStore.ImageWrapper;
public class GraphicImageRendererBase extends AjaxComponentRendererBase
{
private static final String IMG_ELEM = "img";
private static final String SRC_ATTR = "src";
private static final String HSPACE_ATTR = "hspace";
private static final String ISMAP_ATTR = "ismap";
public static final String VSPACE_ATTR = "vspace";
private static final String[] IMG_PASSTHROUGH_ATTRIBUTES =
{
RendererUtils.HTML.align_ATTRIBUTE,
RendererUtils.HTML.alt_ATTRIBUTE,
RendererUtils.HTML.border_ATTRIBUTE,
RendererUtils.HTML.height_ATTRIBUTE,
HSPACE_ATTR,
ISMAP_ATTR,
RendererUtils.HTML.longdesc_ATTRIBUTE,
RendererUtils.HTML.usemap_ATTRIBUTE,
VSPACE_ATTR,
RendererUtils.HTML.width_ATTRIBUTE,
RendererUtils.HTML.ondblclick_ATTRIBUTE,
RendererUtils.HTML.onmousedown_ATTRIBUTE,
RendererUtils.HTML.onmouseup_ATTRIBUTE,
RendererUtils.HTML.onmouseover_ATTRIBUTE,
RendererUtils.HTML.onmousemove_ATTRIBUTE,
RendererUtils.HTML.onmouseout_ATTRIBUTE,
RendererUtils.HTML.onkeypress_ATTRIBUTE,
RendererUtils.HTML.onkeydown_ATTRIBUTE,
RendererUtils.HTML.onkeyup_ATTRIBUTE,
RendererUtils.HTML.dir_ATTRIBUTE,
RendererUtils.HTML.lang_ATTRIBUTE,
RendererUtils.HTML.title_ATTRIBUTE,
RendererUtils.HTML.style_ATTRIBUTE,
RendererUtils.HTML.STYLE_CLASS_ATTR
};
@Override
protected Class getComponentClass()
{
return UIGraphicImage.class;
}
@Override
protected void doEncodeBegin(ResponseWriter writer, FacesContext context, UIComponent component) throws IOException
{
UIGraphicImage graphicImage = (UIGraphicImage) component;
String key = graphicImage.getFileName();
String extension = null;
Image image = Image.instance();
image.setInput(graphicImage.getValue());
// Do transforms
for (UIComponent cmp : graphicImage.getChildren())
{
if (cmp instanceof ImageTransform)
{
ImageTransform imageTransform = (ImageTransform) cmp;
imageTransform.applyTransform(image);
}
}
key = GraphicImageStore.instance().put(new ImageWrapper(image.getImage(), image.getContentType()),
key);
extension = image.getContentType().getExtension();
writer.startElement(IMG_ELEM, graphicImage);
String url = context.getExternalContext().getRequestContextPath()
+ GraphicImageResource.GRAPHIC_IMAGE_RESOURCE_PATH + "/" + key + extension;
writer.writeAttribute(SRC_ATTR, url, SRC_ATTR);
new RendererUtils().encodeAttributesFromArray(context, component, IMG_PASSTHROUGH_ATTRIBUTES);
writer.endElement(IMG_ELEM);
}
@Override
public boolean getRendersChildren()
{
return true;
}
}
1.1 date: 2007/06/15 17:06:58; author: pmuir; state: Exp;jboss-seam/ui/src/main/java/org/jboss/seam/ui/graphicImage/ImageTransform.java
Index: ImageTransform.java
===================================================================
package org.jboss.seam.ui.graphicImage;
import java.io.IOException;
import org.jboss.seam.core.Image;
public interface ImageTransform
{
public static final String FAMILY = "org.jboss.seam.ui.UIImageTransform";
public abstract void applyTransform(Image image) throws IOException;
}
More information about the jboss-cvs-commits
mailing list