1 18 package org.apache.beehive.netui.tags.databinding.datagrid; 19 20 import java.io.IOException ; 21 import java.io.StringWriter ; 22 import javax.servlet.jsp.JspException ; 23 import javax.servlet.jsp.JspContext ; 24 import javax.servlet.jsp.tagext.JspFragment ; 25 import javax.servlet.http.HttpServletRequest ; 26 27 import org.apache.beehive.netui.tags.rendering.AbstractHtmlState; 28 import org.apache.beehive.netui.tags.rendering.TrTag; 29 import org.apache.beehive.netui.tags.rendering.AbstractRenderAppender; 30 import org.apache.beehive.netui.tags.rendering.StringBuilderRenderAppender; 31 import org.apache.beehive.netui.tags.html.HtmlConstants; 32 import org.apache.beehive.netui.databinding.datagrid.runtime.rendering.table.TableRenderer; 33 import org.apache.beehive.netui.databinding.datagrid.runtime.util.JspUtil; 34 import org.apache.beehive.netui.databinding.datagrid.api.rendering.DataGridTagModel; 35 import org.apache.beehive.netui.databinding.datagrid.api.rendering.StyleModel; 36 import org.apache.beehive.netui.util.Bundle; 37 import org.apache.beehive.netui.util.internal.InternalStringBuilder; 38 39 94 public class Row 95 extends AbstractDataGridHtmlTag { 96 97 private TrTag.State _trState = new TrTag.State(); 98 99 103 public final String getTagName() { 104 return "Row"; 105 } 106 107 115 public void setOnClick(String onClick) { 116 _trState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONCLICK, onClick); 117 } 118 119 127 public void setOnDblClick(String onDblClick) { 128 _trState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONDBLCLICK, onDblClick); 129 } 130 131 139 public void setOnKeyDown(String onKeyDown) { 140 _trState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONKEYDOWN, onKeyDown); 141 } 142 143 151 public void setOnKeyUp(String onKeyUp) { 152 _trState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONKEYUP, onKeyUp); 153 } 154 155 163 public void setOnKeyPress(String onKeyPress) { 164 _trState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONKEYPRESS, onKeyPress); 165 } 166 167 175 public void setOnMouseDown(String onMouseDown) { 176 _trState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONMOUSEDOWN, onMouseDown); 177 } 178 179 187 public void setOnMouseUp(String onMouseUp) { 188 _trState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONMOUSEUP, onMouseUp); 189 } 190 191 199 public void setOnMouseMove(String onMouseMove) { 200 _trState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONMOUSEMOVE, onMouseMove); 201 } 202 203 211 public void setOnMouseOut(String onMouseOut) { 212 _trState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONMOUSEOUT, onMouseOut); 213 } 214 215 223 public void setOnMouseOver(String onMouseOver) { 224 _trState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONMOUSEOVER, onMouseOver); 225 } 226 227 236 public void setStyle(String style) { 237 if("".equals(style)) return; 238 239 _trState.style = style; 240 } 241 242 250 public void setStyleClass(String styleClass) { 251 if("".equals(styleClass)) return; 252 253 _trState.styleClass = styleClass; 254 } 255 256 264 public void setTitle(String title) { 265 _trState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.TITLE, title); 266 } 267 268 276 public void setLang(String lang) 277 { 278 _trState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.LANG, lang); 279 } 280 281 289 public void setDir(String dir) 290 { 291 _trState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.DIR, dir); 292 } 293 294 303 public void setTagId(String tagId) 304 throws JspException { 305 JspContext jspContext = getJspContext(); 306 DataGridTagModel dataGridModel = DataGridUtil.getDataGridTagModel(jspContext); 307 if(dataGridModel == null) 308 throw new JspException (Bundle.getErrorString("DataGridTags_MissingDataGridModel")); 309 310 int renderState = dataGridModel.getRenderState(); 311 312 if(renderState == DataGridTagModel.RENDER_STATE_GRID) 313 applyIndexedTagId(_trState, tagId); 314 else applyTagId(_trState, tagId); 315 } 316 317 342 public void doTag() 343 throws JspException , IOException { 344 345 JspContext jspContext = getJspContext(); 346 DataGridTagModel dataGridModel = DataGridUtil.getDataGridTagModel(jspContext); 347 if(dataGridModel == null) 348 throw new JspException (Bundle.getErrorString("DataGridTags_MissingDataGridModel")); 349 350 int renderState = dataGridModel.getRenderState(); 351 352 if(!(renderState == DataGridTagModel.RENDER_STATE_HEADER || 353 renderState != DataGridTagModel.RENDER_STATE_GRID || 354 renderState != DataGridTagModel.RENDER_STATE_FOOTER)) 355 return; 356 357 JspFragment fragment = getJspBody(); 358 359 StyleModel styleModel = dataGridModel.getStyleModel(); 360 assert styleModel != null; 361 362 TableRenderer tableRenderer = dataGridModel.getTableRenderer(); 363 assert tableRenderer != null; 364 365 HttpServletRequest request = JspUtil.getRequest(getJspContext()); 366 InternalStringBuilder content = new InternalStringBuilder(); 367 AbstractRenderAppender appender = new StringBuilderRenderAppender(content); 368 369 if(_trState.styleClass == null) { 370 if(renderState == DataGridTagModel.RENDER_STATE_GRID) { 371 int index = dataGridModel.getCurrentIndex(); 372 if(index % 2 == 0) 373 _trState.styleClass = styleModel.getRowClass(); 374 else _trState.styleClass = styleModel.getAltRowClass(); 375 } 376 else if(renderState == DataGridTagModel.RENDER_STATE_HEADER) 377 _trState.styleClass = styleModel.getHeaderRowClass(); 378 else if(renderState == DataGridTagModel.RENDER_STATE_FOOTER) 379 _trState.styleClass = styleModel.getFooterRowClass(); 380 else assert false : "Attempting to apply style information during an invalid render state"; 381 } 382 383 String trScript = null; 384 if(_trState.id != null) 385 trScript = renderNameAndId(request, _trState, null); 386 387 tableRenderer.openTableRow(_trState, appender); 388 389 StringWriter sw = new StringWriter (); 390 if(fragment != null) 391 fragment.invoke(sw); 392 appender.append(sw.toString()); 393 394 tableRenderer.closeTableRow(appender); 395 396 if(trScript != null) 397 appender.append(trScript); 398 399 jspContext.getOut().write(content.toString()); 400 401 return; 402 } 403 } 404 | Popular Tags |