1 18 package org.apache.beehive.netui.tags.databinding.datagrid; 19 20 import org.apache.beehive.netui.util.internal.InternalStringBuilder; 21 22 import java.io.IOException ; 23 import java.io.StringWriter ; 24 import javax.servlet.jsp.JspException ; 25 import javax.servlet.jsp.JspContext ; 26 import javax.servlet.jsp.tagext.JspFragment ; 27 import javax.servlet.http.HttpServletRequest ; 28 29 import org.apache.beehive.netui.databinding.datagrid.api.rendering.DataGridTagModel; 30 import org.apache.beehive.netui.databinding.datagrid.api.rendering.StyleModel; 31 import org.apache.beehive.netui.databinding.datagrid.runtime.rendering.table.TableRenderer; 32 import org.apache.beehive.netui.databinding.datagrid.runtime.util.JspUtil; 33 import org.apache.beehive.netui.tags.IHtmlEvents; 34 import org.apache.beehive.netui.tags.IHtmlI18n; 35 import org.apache.beehive.netui.tags.html.HtmlConstants; 36 import org.apache.beehive.netui.tags.rendering.StringBuilderRenderAppender; 37 import org.apache.beehive.netui.tags.rendering.AbstractRenderAppender; 38 import org.apache.beehive.netui.tags.rendering.TrTag; 39 import org.apache.beehive.netui.tags.rendering.TBodyTag; 40 import org.apache.beehive.netui.tags.rendering.AbstractHtmlState; 41 import org.apache.beehive.netui.util.Bundle; 42 43 115 public class Rows 116 extends AbstractDataGridHtmlTag 117 implements IHtmlEvents, IHtmlI18n { 118 119 private boolean _renderRow = true; 120 private TBodyTag.State _tbodyTag = new TBodyTag.State(); 121 122 126 public String getTagName() { 127 return "Rows"; 128 } 129 130 138 public void setOnClick(String onClick) { 139 _tbodyTag.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONCLICK, onClick); 140 } 141 142 150 public void setOnDblClick(String onDblClick) { 151 _tbodyTag.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONDBLCLICK, onDblClick); 152 } 153 154 162 public void setOnKeyDown(String onKeyDown) { 163 _tbodyTag.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONKEYDOWN, onKeyDown); 164 } 165 166 174 public void setOnKeyUp(String onKeyUp) { 175 _tbodyTag.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONKEYUP, onKeyUp); 176 } 177 178 186 public void setOnKeyPress(String onKeyPress) { 187 _tbodyTag.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONKEYPRESS, onKeyPress); 188 } 189 190 198 public void setOnMouseDown(String onMouseDown) { 199 _tbodyTag.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONMOUSEDOWN, onMouseDown); 200 } 201 202 210 public void setOnMouseUp(String onMouseUp) { 211 _tbodyTag.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONMOUSEUP, onMouseUp); 212 } 213 214 222 public void setOnMouseMove(String onMouseMove) { 223 _tbodyTag.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONMOUSEMOVE, onMouseMove); 224 } 225 226 234 public void setOnMouseOut(String onMouseOut) { 235 _tbodyTag.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONMOUSEOUT, onMouseOut); 236 } 237 238 246 public void setOnMouseOver(String onMouseOver) { 247 _tbodyTag.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONMOUSEOVER, onMouseOver); 248 } 249 250 258 public void setStyle(String style) { 259 if("".equals(style)) return; 260 261 _tbodyTag.style = style; 262 } 263 264 272 public void setStyleClass(String styleClass) { 273 if("".equals(styleClass)) return; 274 275 _tbodyTag.styleClass = styleClass; 276 } 277 278 286 public void setTitle(String title) { 287 _tbodyTag.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.TITLE, title); 288 } 289 290 298 public void setAlign(String align) { 299 300 _tbodyTag.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.ALIGN, align); 301 } 302 303 311 public void setChar(String alignChar) { 312 _tbodyTag.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.CHAR, alignChar); 313 } 314 315 323 public void setCharoff(String alignCharOff) { 324 _tbodyTag.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.CHAROFF, alignCharOff); 325 } 326 327 335 public void setValign(String align) { 336 337 _tbodyTag.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.VALIGN, align); 338 } 339 340 348 public void setLang(String lang) { 349 _tbodyTag.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.LANG, lang); 350 } 351 352 360 public void setDir(String dir) { 361 _tbodyTag.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.DIR, dir); 362 } 363 364 373 public void setTagId(String tagId) 374 throws JspException { 375 applyTagId(_tbodyTag, tagId); 376 } 377 378 392 public void setRenderRow(boolean renderRow) { 393 _renderRow = renderRow; 394 } 395 396 406 public void doTag() 407 throws IOException , JspException { 408 409 JspContext jspContext = getJspContext(); 410 DataGridTagModel dataGridModel = DataGridUtil.getDataGridTagModel(jspContext); 411 if(dataGridModel == null) 412 throw new JspException (Bundle.getErrorString("DataGridTags_MissingDataGridModel")); 413 414 if(dataGridModel.getRenderState() == DataGridTagModel.RENDER_STATE_GRID) { 415 416 StyleModel styleModel = dataGridModel.getStyleModel(); 417 assert styleModel != null; 418 419 TableRenderer tableRenderer = dataGridModel.getTableRenderer(); 420 assert tableRenderer != null; 421 422 InternalStringBuilder content = new InternalStringBuilder(); 423 AbstractRenderAppender appender = new StringBuilderRenderAppender(content); 424 JspFragment fragment = getJspBody(); 425 426 if(dataGridModel.isRenderRowGroups()) 427 tableRenderer.openTableBody(_tbodyTag, appender); 428 429 HttpServletRequest request = JspUtil.getRequest(getJspContext()); 430 while(dataGridModel.hasNextDataItem()) { 431 432 StringWriter sw = new StringWriter (); 433 434 435 dataGridModel.nextDataItem(); 436 437 fragment.invoke(sw); 438 439 String trScript = null; 440 if(_renderRow) { 441 TrTag.State trState = new TrTag.State(); 442 int index = dataGridModel.getCurrentIndex(); 443 if(index % 2 == 0) 444 trState.styleClass = styleModel.getRowClass(); 445 else trState.styleClass = styleModel.getAltRowClass(); 446 447 if(trState.id != null) 448 trScript = renderNameAndId(request, trState, null); 449 450 tableRenderer.openTableRow(trState, appender); 451 } 452 453 content.append(sw.toString()); 454 455 if(_renderRow) { 456 tableRenderer.closeTableRow(appender); 457 458 if(trScript != null) 459 appender.append(trScript); 460 } 461 } 462 463 if(dataGridModel.isRenderRowGroups()) { 464 tableRenderer.closeTableBody(appender); 465 466 String tbodyScript = null; 467 if(_tbodyTag.id != null) { 468 tbodyScript = renderNameAndId(request, _tbodyTag, null); 469 } 470 471 if(tbodyScript != null) 472 appender.append(tbodyScript); 473 } 474 475 jspContext.getOut().write(content.toString()); 476 } 477 } 478 } 479 | Popular Tags |