1 18 package org.apache.beehive.netui.tags.html; 19 20 import org.apache.beehive.netui.tags.IHtmlAccessable; 21 import org.apache.beehive.netui.tags.internal.PageFlowTagUtils; 22 import org.apache.beehive.netui.tags.javascript.CoreScriptFeature; 23 import org.apache.beehive.netui.tags.javascript.ScriptRequestState; 24 import org.apache.beehive.netui.tags.rendering.AbstractHtmlState; 25 import org.apache.beehive.netui.tags.rendering.InputImageTag; 26 import org.apache.beehive.netui.tags.rendering.TagRenderingBase; 27 import org.apache.beehive.netui.tags.rendering.WriteRenderAppender; 28 import org.apache.beehive.netui.util.Bundle; 29 import org.apache.struts.Globals; 30 import org.apache.struts.config.ModuleConfig; 31 32 import javax.servlet.ServletRequest ; 33 import javax.servlet.http.HttpServletRequest ; 34 import javax.servlet.http.HttpServletResponse ; 35 import javax.servlet.jsp.JspException ; 36 import java.net.URISyntaxException ; 37 38 59 public class ImageButton 60 extends HtmlFocusBaseTag 61 implements IHtmlAccessable 62 { 63 private InputImageTag.State _state = new InputImageTag.State(); 64 65 private String _page; private String _rolloverImage; 68 71 public String getTagName() 72 { 73 return "ImageButton"; 74 } 75 76 81 protected AbstractHtmlState getState() 82 { 83 return _state; 84 } 85 86 94 public void setAttribute(String name, String value, String facet) 95 throws JspException  96 { 97 if (name != null) { 98 if (name.equals(SRC) || name.equals(VALUE)) { 99 String s = Bundle.getString("Tags_AttributeMayNotBeSet", new Object []{name}); 100 registerTagError(s, null); 101 } 102 else { 103 if (name.equals(DISABLED)) { 104 _state.disabled = new Boolean (value).booleanValue(); 105 return; 106 } 107 } 108 } 109 super.setAttribute(name, value, facet); 110 } 111 112 121 public void setAlign(String align) 122 { 123 _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, ALIGN, align); 124 } 125 126 144 public void setAccessKey(char accessKey) 145 { 146 _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, ACCESSKEY, Character.toString(accessKey)); 147 } 148 149 160 public void setTabindex(int tabindex) 161 { 162 _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, TABINDEX, Integer.toString(tabindex)); 163 } 164 165 174 public void setUsemap(String usemap) 175 { 176 _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, USEMAP, usemap); 177 } 178 179 188 public void setIsmap(String ismap) 189 { 190 _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, ISMAP, ismap); 191 } 192 193 202 public void setAlt(String alt) 203 { 204 _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, ALT, alt); 205 } 206 207 216 public void setRolloverImage(String rolloverImage) 217 { 218 _rolloverImage = rolloverImage; 219 } 220 221 231 public void setSrc(String src) 232 throws JspException  233 { 234 _state.src = src; 235 } 236 237 246 public void setValue(String value) 247 { 248 _state.value = value; 249 } 250 251 255 public int doStartTag() throws JspException  256 { 257 258 if (_rolloverImage != null && getJavaScriptAttribute(ONMOUSEOVER) == null) { 259 ScriptRequestState srs = ScriptRequestState.getScriptRequestState((HttpServletRequest ) pageContext.getRequest()); 261 WriteRenderAppender writer = new WriteRenderAppender(pageContext); 262 srs.writeFeature(getScriptReporter(), writer, CoreScriptFeature.ROLLOVER, true, false, null); 263 } 264 265 return EVAL_BODY_BUFFERED; 266 } 267 268 272 public int doAfterBody() throws JspException  273 { 274 275 if (bodyContent != null) { 276 bodyContent.clearBody(); 277 } 278 return SKIP_BODY; 279 } 280 281 285 public int doEndTag() throws JspException  286 { 287 ServletRequest req = pageContext.getRequest(); 288 String idScript = null; 289 String tmp = null; 290 291 if (getTagId() != null) { 294 idScript = renderNameAndId((HttpServletRequest ) req, _state, null); 295 } 296 297 HttpServletResponse response = (HttpServletResponse ) pageContext.getResponse(); 298 tmp = src(); 299 if (tmp != null) { 300 try { 301 String uri = PageFlowTagUtils.rewriteResourceURL(pageContext, tmp, null, null); 302 _state.src = response.encodeURL(uri); 303 } 304 catch (URISyntaxException e) { 305 String s = Bundle.getString("Tags_Image_URLException", 307 new Object []{_state.src, e.getMessage()}); 308 registerTagError(s, e); 309 } 310 } 311 312 _state.disabled = isDisabled(); 313 314 if (_rolloverImage != null) { 315 316 if (hasErrors()) { 317 reportErrors(); 318 localRelease(); 319 return EVAL_PAGE; 320 } 321 322 try { 323 String uri = PageFlowTagUtils.rewriteResourceURL(pageContext, _rolloverImage, null, null); 324 _rolloverImage = response.encodeURL(qualifyUrlToContext(uri)); 325 } 326 catch (URISyntaxException e) { 327 String s = Bundle.getString("Tags_Rollover_Image_URLException", 329 new Object []{_rolloverImage, e.getMessage()}); 330 registerTagError(s, e); 331 } 332 } 333 334 if ((getJavaScriptAttribute(ONMOUSEOUT) == null) && (_rolloverImage != null)) { 335 setOnMouseOut("swapImage(this,'" + _state.src + "')"); 336 } 337 if ((getJavaScriptAttribute(ONMOUSEOVER) == null) && (_rolloverImage != null)) { 338 setOnMouseOver("swapImage(this,'" + _rolloverImage + "')"); 339 } 340 341 WriteRenderAppender writer = new WriteRenderAppender(pageContext); 342 TagRenderingBase br = TagRenderingBase.Factory.getRendering(TagRenderingBase.INPUT_IMAGE_TAG, req); 343 br.doStartTag(writer, _state); 344 br.doEndTag(writer); 345 346 if (idScript != null) 347 write(idScript); 348 349 localRelease(); 351 return EVAL_PAGE; 352 } 353 354 357 protected void localRelease() 358 { 359 super.localRelease(); 360 361 _state.clear(); 362 363 _page = null; 364 _rolloverImage = null; 365 } 366 367 372 private String src() 373 { 374 375 if (_page != null) { 377 HttpServletRequest request = (HttpServletRequest ) pageContext.getRequest(); 378 ModuleConfig config = (ModuleConfig) request.getAttribute(Globals.MODULE_KEY); 379 if (config == null) 380 return (request.getContextPath() + _page); 381 return (request.getContextPath() + config.getPrefix() + _page); 382 } 383 384 if (_state.src != null) 386 return _state.src; 387 return null; 388 } 389 } 390 | Popular Tags |