1 18 package org.apache.beehive.netui.tags.databinding.datagrid; 19 20 import java.io.IOException ; 21 import java.io.StringWriter ; 22 import java.util.ArrayList ; 23 import javax.servlet.jsp.tagext.JspFragment ; 24 import javax.servlet.jsp.JspException ; 25 import javax.servlet.http.HttpServletRequest ; 26 27 import org.apache.beehive.netui.databinding.datagrid.api.rendering.DataGridTagModel; 28 import org.apache.beehive.netui.databinding.datagrid.runtime.rendering.table.TableRenderer; 29 import org.apache.beehive.netui.databinding.datagrid.runtime.util.JspUtil; 30 import org.apache.beehive.netui.databinding.datagrid.api.sort.SortModel; 31 import org.apache.beehive.netui.databinding.datagrid.api.filter.FilterModel; 32 import org.apache.beehive.netui.tags.IAttributeConsumer; 33 import org.apache.beehive.netui.tags.IBehaviorConsumer; 34 import org.apache.beehive.netui.tags.html.HtmlConstants; 35 import org.apache.beehive.netui.tags.rendering.AbstractHtmlState; 36 import org.apache.beehive.netui.tags.rendering.TdTag; 37 import org.apache.beehive.netui.tags.rendering.AbstractRenderAppender; 38 import org.apache.beehive.netui.util.Bundle; 39 40 52 public abstract class AbstractHtmlTableCell 53 extends AbstractCell 54 implements IAttributeConsumer, IBehaviorConsumer { 55 56 private String _sortExpression = null; 57 private String _filterExpression = null; 58 59 private TdTag.State _cellState = new TdTag.State(); 60 61 73 public void setSortExpression(String sortExpression) { 74 _sortExpression = sortExpression; 75 } 76 77 95 public void setFilterExpression(String filterExpression) { 96 _filterExpression = filterExpression; 97 } 98 99 105 106 115 public void setCellOnClick(String onClick) { 116 _cellState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONCLICK, onClick); 117 } 118 119 127 public void setCellOnDblClick(String onDblClick) { 128 _cellState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONDBLCLICK, onDblClick); 129 } 130 131 139 public void setCellOnKeyDown(String onKeyDown) { 140 _cellState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONKEYDOWN, onKeyDown); 141 } 142 143 151 public void setCellOnKeyUp(String onKeyUp) { 152 _cellState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONKEYUP, onKeyUp); 153 } 154 155 163 public void setCellOnKeyPress(String onKeyPress) { 164 _cellState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONKEYPRESS, onKeyPress); 165 } 166 167 175 public void setCellOnMouseDown(String onMouseDown) { 176 _cellState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONMOUSEDOWN, onMouseDown); 177 } 178 179 187 public void setCellOnMouseUp(String onMouseUp) { 188 _cellState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONMOUSEUP, onMouseUp); 189 } 190 191 199 public void setCellOnMouseMove(String onMouseMove) { 200 _cellState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONMOUSEMOVE, onMouseMove); 201 } 202 203 211 public void setCellOnMouseOut(String onMouseOut) { 212 _cellState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONMOUSEOUT, onMouseOut); 213 } 214 215 223 public void setCellOnMouseOver(String onMouseOver) { 224 _cellState.registerAttribute(AbstractHtmlState.ATTR_JAVASCRIPT, HtmlConstants.ONMOUSEOVER, onMouseOver); 225 } 226 227 235 public void setCellStyle(String style) { 236 if("".equals(style)) return; 237 238 _cellState.style = style; 239 } 240 241 249 public void setCellStyleClass(String styleClass) { 250 if("".equals(styleClass)) return; 251 252 _cellState.styleClass = styleClass; 253 } 254 255 263 public void setCellTitle(String title) { 264 _cellState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.TITLE, title); 265 } 266 267 275 public void setCellRowspan(int rowSpan) { 276 _cellState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.ROWSPAN, "" + rowSpan); 277 } 278 279 287 public void setCellColspan(int colSpan) { 288 _cellState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.COLSPAN, "" + colSpan); 289 } 290 291 299 public void setCellAlign(String align) { 300 301 _cellState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.ALIGN, align); 302 } 303 304 312 public void setCellChar(String alignChar) { 313 _cellState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.CHAR, alignChar); 314 } 315 316 324 public void setCellCharoff(String alignCharOff) { 325 _cellState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.CHAROFF, alignCharOff); 326 } 327 328 336 public void setCellValign(String align) { 337 338 _cellState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.VALIGN, align); 339 } 340 341 349 public void setCellLang(String lang) { 350 _cellState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.LANG, lang); 351 } 352 353 361 public void setCellDir(String dir) { 362 _cellState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.DIR, dir); 363 } 364 365 373 public void setCellAbbr(String abbr) { 374 _cellState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.ABBR, abbr); 375 } 376 377 385 public void setCellAxis(String axis) { 386 _cellState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.AXIS, axis); 387 } 388 389 397 public void setCellHeaders(String headers) { 398 _cellState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.HEADERS, headers); 399 } 400 401 409 public void setCellScope(String scope) { 410 _cellState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, HtmlConstants.SCOPE, scope); 411 } 412 413 424 public void setCellTagId(String tagId) 425 throws JspException { 426 applyTagId(_cellState, tagId); 427 } 428 429 442 public void setAttribute(String name, String value, String facet) 443 throws JspException { 444 String s = Bundle.getString("Tags_AttributeFacetNotSupported", new Object []{facet}); 445 throw new JspException (s); 446 } 447 448 460 public void setBehavior(String name, Object value, String facet) 461 throws JspException { 462 String s = Bundle.getString("Tags_BehaviorFacetNotSupported", new Object []{facet}); 463 throw new JspException (s); 464 } 465 466 489 protected void renderCell(AbstractRenderAppender appender) 490 throws IOException , JspException { 491 492 DataGridTagModel dataGridModel = DataGridUtil.getDataGridTagModel(getJspContext()); 493 if(dataGridModel == null) 494 throw new JspException (Bundle.getErrorString("DataGridTags_MissingDataGridModel")); 495 496 TableRenderer tableRenderer = dataGridModel.getTableRenderer(); 497 assert tableRenderer != null; 498 499 500 ArrayList styleClasses = new ArrayList (); 501 FilterModel filterModel = dataGridModel.getState().getFilterModel(); 502 if(_filterExpression != null && filterModel.isFiltered(_filterExpression)) 503 styleClasses.add(dataGridModel.getStyleModel().getDataCellFilteredClass()); 504 505 SortModel sortModel = dataGridModel.getState().getSortModel(); 506 if(_sortExpression != null && sortModel.isSorted(_sortExpression)) 507 styleClasses.add(dataGridModel.getStyleModel().getDataCellSortedClass()); 508 509 if(_cellState.styleClass == null) 510 styleClasses.add(dataGridModel.getStyleModel().getDataCellClass()); 511 else 512 styleClasses.add(_cellState.styleClass); 513 514 _cellState.styleClass = dataGridModel.getStyleModel().buildStyleClassValue(styleClasses); 515 516 520 JspFragment fragment = getJspBody(); 521 StringWriter sw = new StringWriter (); 522 if(fragment != null) 523 fragment.invoke(sw); 524 525 tableRenderer.openTableCell(_cellState, appender); 526 renderDataCellContents(appender, sw.toString()); 527 tableRenderer.closeTableCell(appender); 528 529 530 if (_cellState.id != null) { 531 HttpServletRequest request = JspUtil.getRequest(getJspContext()); 532 String script = renderNameAndId(request, _cellState, null); 533 if(script != null) 534 appender.append(script); 535 } 536 537 } 538 539 548 protected abstract void renderDataCellContents(AbstractRenderAppender appender, String output) 549 throws IOException , JspException ; 550 } 551 | Popular Tags |