1 18 package org.apache.beehive.netui.tags.databinding.datagrid; 19 20 import javax.servlet.jsp.JspException ; 21 import javax.servlet.http.HttpServletRequest ; 22 23 import org.apache.beehive.netui.databinding.datagrid.api.rendering.CellModel; 24 import org.apache.beehive.netui.databinding.datagrid.runtime.model.cell.AnchorCellModel; 25 import org.apache.beehive.netui.databinding.datagrid.runtime.rendering.cell.AnchorCellDecorator; 26 import org.apache.beehive.netui.databinding.datagrid.runtime.util.JspUtil; 27 import org.apache.beehive.netui.tags.html.IUrlParams; 28 import org.apache.beehive.netui.tags.html.HtmlConstants; 29 import org.apache.beehive.netui.tags.html.IFormattable; 30 import org.apache.beehive.netui.tags.rendering.AbstractHtmlState; 31 import org.apache.beehive.netui.tags.rendering.AbstractRenderAppender; 32 import org.apache.beehive.netui.tags.rendering.AnchorTag; 33 import org.apache.beehive.netui.tags.IHtmlI18n; 34 import org.apache.beehive.netui.tags.IHtmlEvents; 35 import org.apache.beehive.netui.tags.IHtmlCore; 36 import org.apache.beehive.netui.util.ParamHelper; 37 import org.apache.beehive.netui.util.Bundle; 38 39 118 public class AnchorCell 119 extends AbstractHtmlTableCell 120 implements IFormattable, IUrlParams, IHtmlCore, IHtmlEvents, IHtmlI18n { 121 122 private static final AnchorCellDecorator DECORATOR = new AnchorCellDecorator(); 123 private static final String REQUIRED_ATTR = "href, action, linkName"; 124 private static final String ANCHOR_FACET_NAME = "anchor"; 125 126 private AnchorCellModel _anchorCellModel = new AnchorCellModel(); 127 private AnchorTag.State _anchorState = _anchorCellModel.getAnchorState(); 128 129 133 public String getTagName() { 134 return "AnchorCell"; 135 } 136 137 145 public void setOnClick(String onClick) { 146 _anchorState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONCLICK, onClick); 147 } 148 149 157 public void setOnDblClick(String onDblClick) { 158 _anchorState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONDBLCLICK, onDblClick); 159 } 160 161 169 public void setOnKeyDown(String onKeyDown) { 170 _anchorState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONKEYDOWN, onKeyDown); 171 } 172 173 181 public void setOnKeyUp(String onKeyUp) { 182 _anchorState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONKEYUP, onKeyUp); 183 } 184 185 193 public void setOnKeyPress(String onKeyPress) { 194 _anchorState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONKEYPRESS, onKeyPress); 195 } 196 197 205 public void setOnMouseDown(String onMouseDown) { 206 _anchorState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONMOUSEDOWN, onMouseDown); 207 } 208 209 217 public void setOnMouseUp(String onMouseUp) { 218 _anchorState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONMOUSEUP, onMouseUp); 219 } 220 221 229 public void setOnMouseMove(String onMouseMove) { 230 _anchorState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONMOUSEMOVE, onMouseMove); 231 } 232 233 241 public void setOnMouseOut(String onMouseOut) { 242 _anchorState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONMOUSEOUT, onMouseOut); 243 } 244 245 253 public void setOnMouseOver(String onMouseOver) { 254 _anchorState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONMOUSEOVER, onMouseOver); 255 } 256 257 265 public void setStyle(String style) { 266 if("".equals(style)) return; 267 268 _anchorState.style = style; 269 } 270 271 279 public void setStyleClass(String styleClass) { 280 if("".equals(styleClass)) return; 281 282 _anchorState.styleClass = styleClass; 283 } 284 285 293 public void setTitle(String title) { 294 _anchorState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.TITLE, title); 295 } 296 297 305 public void setCharset(String charSet) { 306 _anchorState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.CHARSET, charSet); 307 } 308 309 317 public void setType(String type) { 318 _anchorState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.TYPE, type); 319 } 320 321 329 public void setHrefLang(String hreflang) { 330 _anchorState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.HREFLANG, hreflang); 331 } 332 333 341 public void setRel(String rel) { 342 _anchorState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.REL, rel); 343 } 344 345 353 public void setRev(String rev) { 354 _anchorState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.REV, rev); 355 } 356 357 365 public void setTarget(String target) { 366 _anchorState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.TARGET, target); 367 } 368 369 378 public void setHref(String href) { 379 _anchorCellModel.setHref(href); 380 } 381 382 391 public void setTargetScope(String targetScope) { 392 _anchorCellModel.setScopeId(targetScope); 393 } 394 395 402 public void setValue(String value) { 403 _anchorCellModel.setValue(value); 404 } 405 406 418 public void setAction(String action) 419 throws JspException { 420 _anchorCellModel.setAction(setRequiredValueAttribute(action, "action")); 421 } 422 423 430 public void setLang(String lang) 431 { 432 _anchorState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.LANG, lang); 433 } 434 435 442 public void setDir(String dir) 443 { 444 _anchorState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.DIR, dir); 445 } 446 447 464 public void setAccessKey(char accessKey) { 465 if (accessKey == 0x00) 466 return; 467 _anchorState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.ACCESSKEY, Character.toString(accessKey)); 468 } 469 470 480 public void setTabindex(int tabindex) { 481 _anchorState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.TABINDEX, Integer.toString(tabindex)); 482 } 483 484 492 public void setOnBlur(String onblur) 493 { 494 _anchorState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONBLUR, onblur); 495 } 496 497 505 public void setOnFocus(String onfocus) 506 { 507 _anchorState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONFOCUS, onfocus); 508 } 509 510 522 public void setTagId(String tagId) 523 throws JspException { 524 applyIndexedTagId(_anchorState, tagId); 525 } 526 527 544 public void setAttribute(String name, String value, String facet) 545 throws JspException { 546 if(facet == null || facet.equals(ANCHOR_FACET_NAME)) 547 super.addStateAttribute(_anchorState, name, value); 548 else 549 super.setAttribute(name, value, facet); 550 } 551 552 571 public void addParameter(String name, Object value, String facet) 572 throws JspException { 573 ParamHelper.addParam(_anchorCellModel.getParams(), name, value); 574 } 575 576 583 protected void applyAttributes() 584 throws JspException { 585 super.applyAttributes(); 586 587 int have = 0; 588 if(_anchorCellModel.getAction() != null) 589 have++; 590 if(_anchorCellModel.getHref() != null) 591 have++; 592 if(_anchorCellModel.getLinkName() != null) 593 have++; 594 595 596 if(have == 0 || have > 1) { 597 String s = Bundle.getString("Tags_Anchor_InvalidAnchorURI", new Object []{getTagName(),REQUIRED_ATTR}); 598 throw new JspException (s); 599 } 600 } 601 602 609 protected void renderDataCellContents(AbstractRenderAppender appender, String jspFragmentOutput) { 610 611 612 if (_anchorState.id != null) { 613 HttpServletRequest request = JspUtil.getRequest(getJspContext()); 614 String script = renderNameAndId(request, _anchorState, null); 615 _anchorCellModel.setJavascript(script); 616 } 617 618 DECORATOR.decorate(getJspContext(), appender, _anchorCellModel); 619 } 620 621 626 protected CellModel internalGetCellModel() { 627 return _anchorCellModel; 628 } 629 } 630 | Popular Tags |