dion 2004/09/06 19:41:40 Modified: jelly/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt ImageTag.java Log: Apply Jelly-123 Revision Changes Path 1.5 +70 -4 jakarta-commons/jelly/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/ImageTag.java Index: ImageTag.java =================================================================== RCS file: /home/cvs/jakarta-commons/jelly/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/ImageTag.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- ImageTag.java 25 Feb 2004 01:31:55 -0000 1.4 +++ ImageTag.java 7 Sep 2004 02:41:40 -0000 1.5 @@ -15,12 +15,14 @@ */ package org.apache.commons.jelly.tags.swt; +import java.io.InputStream; import org.apache.commons.jelly.JellyTagException; import org.apache.commons.jelly.TagSupport; import org.apache.commons.jelly.XMLOutput; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Decorations; +import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Item; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Widget; @@ -29,17 +31,51 @@ * This creates an image on the parent Widget. * * @author <a href="mailto:[EMAIL PROTECTED]">Christiaan ten Klooster</a> - * @version + * @version CVS $Id$ */ public class ImageTag extends TagSupport { /** path to file */ private String src; - public ImageTag() { + /** variable name, if specified */ + private String var; + + /** resource name, if specified */ + private String resource; + + /** + * Sets the resource + * @param resource image resource location + */ + public void setResource(String resource) { + this.resource = resource; } /** + * Obtains the resource + * @return the image resource + */ + public String getResource() { + return resource; + } + + /** + * Sets the variable name + */ + public void setVar(String var) { + this.var = var; + } + + /** + * Obtain the variable name. + * @return String the variable name + */ + public String getVar() { + return this.var; + } + + /** * Sets the src. * @param src The src to set */ @@ -82,11 +118,41 @@ throw new JellyTagException("This tag must be nested within a Widget or a Window"); } - Image image = new Image(parent.getDisplay(), getSrc()); + Image image = null; + + if (getSrc() != null) { + image = loadLocalImage(parent.getDisplay()); + } else if (getResource() != null) { + image = loadResourceImage(parent.getDisplay()); + } else { + throw new JellyTagException("Either an image location or a resource must be specified"); + } + setWidgetImage(parent, image); + + // store the image as a context variable if specified + if (var != null) { + context.setVariable(var, image); + } + } + + /** + * Creates an Image, loaded from the local disk + */ + private Image loadLocalImage(Display display) { + return new Image(display, getSrc()); } /** + * Creates an Image, loaded from a specified resource. + */ + private Image loadResourceImage(Display display) { + InputStream stream = + getClass().getClassLoader().getResourceAsStream(getResource()); + return new Image(display, stream); + } + + /** * Add image to a widget * @param parent * @param image @@ -110,7 +176,7 @@ item.setImage(image); } else { - throw new JellyTagException("This tag must be nested inside a <label>, <button> or <item> tag"); + throw new JellyTagException("This tag must be nested inside a <label>, <button>, <shell> or <item> tag"); } } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]