1 18 package org.apache.beehive.netui.tags.html; 19 20 import org.apache.beehive.netui.tags.internal.PageFlowTagUtils; 21 import org.apache.beehive.netui.tags.rendering.AbstractHtmlState; 22 import org.apache.beehive.netui.tags.rendering.ImageTag; 23 import org.apache.beehive.netui.tags.rendering.TagRenderingBase; 24 import org.apache.beehive.netui.tags.rendering.WriteRenderAppender; 25 import org.apache.beehive.netui.util.Bundle; 26 import org.apache.beehive.netui.util.ParamHelper; 27 28 import javax.servlet.ServletRequest ; 29 import javax.servlet.http.HttpServletRequest ; 30 import javax.servlet.http.HttpServletResponse ; 31 import javax.servlet.jsp.JspException ; 32 import java.net.URISyntaxException ; 33 import java.util.HashMap ; 34 import java.util.Map ; 35 36 44 public class Image extends HtmlBaseTag 45 implements IUrlParams 46 { 47 private ImageTag.State _state = new ImageTag.State(); 48 49 private String _location = null; private Map _params; 51 52 55 public String getTagName() 56 { 57 return "Image"; 58 } 59 60 65 protected AbstractHtmlState getState() 66 { 67 return _state; 68 } 69 70 78 public void setAttribute(String name, String value, String facet) 79 throws JspException 80 { 81 if (name != null && name.equals(SRC)) { 82 String s = Bundle.getString("Tags_AttributeMayNotBeSet", new Object []{name}); 83 registerTagError(s, null); 84 } 85 super.setAttribute(name, value, facet); 86 } 87 88 97 public void setAlign(String align) 98 { 99 _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, ALIGN, align); 100 } 101 102 111 public void setAlt(String alt) 112 { 113 _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, ALT, alt, true); 114 } 115 116 126 public void setLongdesc(String longdesc) 127 { 128 _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, LONGDESC, longdesc); 129 } 130 131 140 public void setBorder(String border) 141 { 142 _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, BORDER, border); 143 } 144 145 154 public void setHeight(String height) 155 { 156 _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HEIGHT, height); 157 } 158 159 168 public void setHspace(String hspace) 169 { 170 _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HSPACE, hspace); 171 } 172 173 182 public void setIsmap(String ismap) 183 { 184 _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, ISMAP, ismap); 185 } 186 187 196 public void setLocation(String location) 197 { 198 _location = location; 199 } 200 201 210 public void setSrc(String src) 211 throws JspException 212 { 213 _state.src = src; 214 } 215 216 225 public void setUsemap(String usemap) 226 { 227 _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, USEMAP, usemap); 228 } 229 230 239 public void setVspace(String vspace) 240 { 241 _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, VSPACE, vspace); 242 } 243 244 253 public void setWidth(String width) 254 { 255 _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, WIDTH, width); 256 } 257 258 264 public void addParameter(String name, Object value, String facet) throws JspException 265 { 266 assert(name != null) : "Parameter 'name' must not be null"; 267 268 if (_params == null) { 269 _params = new HashMap (); 270 } 271 ParamHelper.addParam(_params, name, value); 272 } 273 274 278 public int doStartTag() throws JspException 279 { 280 return EVAL_BODY_BUFFERED; 282 } 283 284 288 public int doEndTag() throws JspException 289 { 290 ServletRequest req = pageContext.getRequest(); 291 String scriptId = null; 292 293 295 String uri = null; 296 if (_state.src != null) { 297 try { 298 uri = PageFlowTagUtils.rewriteResourceURL(pageContext, _state.src, _params, _location); 299 } 300 catch (URISyntaxException e) { 301 String s = Bundle.getString("Tags_Image_URLException", 303 new Object []{_state.src, e.getMessage()}); 304 registerTagError(s, e); 305 } 306 } 307 308 if (uri != null) { 309 _state.src = ((HttpServletResponse ) pageContext.getResponse()).encodeURL(uri); 310 } 311 312 if (_state.id != null) { 315 scriptId = renderNameAndId((HttpServletRequest ) req, _state, null); 316 } 317 318 WriteRenderAppender writer = new WriteRenderAppender(pageContext); 319 TagRenderingBase br = TagRenderingBase.Factory.getRendering(TagRenderingBase.IMAGE_TAG, req); 320 br.doStartTag(writer, _state); 321 br.doEndTag(writer); 322 323 324 if (scriptId != null) 325 write(scriptId); 326 327 localRelease(); 329 return EVAL_PAGE; 330 } 331 332 335 protected void localRelease() 336 { 337 super.localRelease(); 338 339 _state.clear(); 340 341 _location = null; 342 _params = null; 343 } 344 } 345 | Popular Tags |