/** {@inheritDoc} */ public int doEndTag() throws JspException { ListCommand command = (ListCommand) ListTagUtil.getCurrentCommand(this, pageContext); if (command.equals(ListCommand.ENUMERATE)) { if (!StringUtils.isBlank(name)) { ListTag parent = (ListTag) BodyTagSupport.findAncestorWithClass(this, ListTag.class); try { ClassLoader cl = Thread.currentThread().getContextClassLoader(); if (name.indexOf('.') == -1) { name = "com.redhat.rhn.frontend.taglibs.list.row." + name; } RowRenderer row = (RowRenderer) cl.loadClass(name).newInstance(); if (!StringUtils.isEmpty(classes)) { row.setRowClasses(classes); } parent.setRowRenderer(row); } catch (Exception e) { String msg = "Exception while adding Decorator [" + name + "]"; throw new JspException(msg, e); } } } return super.doEndTag(); }
private void setState() { ListCommand cmd = ListTagUtil.getCurrentCommand(this, pageContext); if (cmd.equals(ListCommand.ENUMERATE)) { haveColsEnumerated = true; } else if (cmd.equals(ListCommand.TBL_HEADER)) { haveTblHeadersRendered = true; } else if (cmd.equals(ListCommand.COL_HEADER)) { haveColHeadersRendered = true; } else if (cmd.equals(ListCommand.TBL_FOOTER)) { haveTblFootersRendered = true; } }
/** ${@inheritDoc} */ public int doAfterBody() throws JspException { int retval = BodyTagSupport.EVAL_BODY_AGAIN; ListCommand cmd = ListTagUtil.getCurrentCommand(this, pageContext); boolean haveRenderedColumnHeaderEndTag = false; if (cmd.equals(ListCommand.COL_HEADER)) { ListTagUtil.write(pageContext, "</tr></thead><tbody>"); haveRenderedColumnHeaderEndTag = true; } setState(); if (haveColsEnumerated && !haveTblHeadersRendered) { setupManipulator(); manip.sort(); pageData = manip.getPage(); if (!manip.isListEmpty() && !StringUtils.isBlank(alphaBarColumn)) { AlphaBarHelper.getInstance() .writeAlphaBar(pageContext, manip.getAlphaBarIndex(), getUniqueName()); } for (ListDecorator dec : getDecorators()) { dec.setCurrentList(this); dec.beforeList(); } ListTagUtil.write( pageContext, String.format( HIDDEN_TEXT, ListTagUtil.makeFilterSearchParentLabel(uniqueName), searchParent)); ListTagUtil.write( pageContext, String.format( HIDDEN_TEXT, ListTagUtil.makeFilterSearchChildLabel(uniqueName), searchChild)); ListTagUtil.write( pageContext, String.format( HIDDEN_TEXT, ListTagUtil.makeParentIsAnElementLabel(uniqueName), parentIsElement)); setupFilterUI(); if (filter != null && manip.getUnfilteredDataSize() != 0) { ListTagUtil.renderFilterUI( pageContext, filter, getUniqueName(), width, columnCount, searchParent, searchChild); } if (isSortable()) { String sortByLabel = ListTagUtil.makeSortByLabel(getUniqueName()); String sortDirLabel = ListTagUtil.makeSortDirLabel(getUniqueName()); HtmlTag sortByInputTag = new HtmlTag("input"); sortByInputTag.setAttribute("type", "hidden"); sortByInputTag.setAttribute("name", sortByLabel); sortByInputTag.setAttribute("id", ListTagUtil.makeSortById(getUniqueName())); sortByInputTag.setAttribute( "value", StringUtils.defaultString(pageContext.getRequest().getParameter(sortByLabel))); HtmlTag sortByDirTag = new HtmlTag("input"); sortByDirTag.setAttribute("type", "hidden"); sortByDirTag.setAttribute("name", sortDirLabel); sortByDirTag.setAttribute("id", ListTagUtil.makeSortDirId(getUniqueName())); sortByDirTag.setAttribute( "value", StringUtils.defaultString(pageContext.getRequest().getParameter(sortDirLabel))); ListTagUtil.write(pageContext, sortByInputTag.render()); ListTagUtil.write(pageContext, sortByDirTag.render()); } if (!isEmpty()) { for (ListDecorator dec : getDecorators()) { dec.beforeTopPagination(); } } renderPaginationControls(false); startTable(); HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); manip.bindPaginationInfo(); request.setAttribute("dataSize", String.valueOf(pageData.size() + 1)); ListTagUtil.setCurrentCommand(pageContext, getUniqueName(), ListCommand.TBL_HEADER); if (pageData != null && pageData.size() > 0) { iterator = pageData.iterator(); } else { iterator = null; } } if (haveColsEnumerated && haveTblHeadersRendered && !haveColHeadersRendered) { ListTagUtil.setCurrentCommand(pageContext, getUniqueName(), ListCommand.COL_HEADER); ListTagUtil.write(pageContext, "<thead><tr>"); if (!StringUtils.isBlank(title)) { HtmlTag th = new HtmlTag("th"); th.setAttribute("colspan", String.valueOf(getColumnCount())); HtmlTag strong = new HtmlTag("strong"); strong.addBody(title); th.addBody(strong.render()); ListTagUtil.write(pageContext, th.render()); ListTagUtil.write(pageContext, "</tr>\n<tr>"); } } if (haveColHeadersRendered && !haveTblFootersRendered) { if (!haveRenderedColumnHeaderEndTag) { ListTagUtil.write(pageContext, "</tr>"); } if (manip.isListEmpty()) { renderEmptyList(); return BodyTagSupport.SKIP_BODY; } else { ListTagUtil.setCurrentCommand(pageContext, getUniqueName(), ListCommand.RENDER); if (iterator.hasNext()) { Object obj = iterator.next(); if (RhnListTagFunctions.isExpandable(obj)) { parentObject = obj; } currentObject = obj; } else { currentObject = null; } if (currentObject == null) { ListTagUtil.write(pageContext, "</tbody>"); ListTagUtil.setCurrentCommand(pageContext, getUniqueName(), ListCommand.TBL_FOOTER); } else { ListTagUtil.write(pageContext, "<tr"); renderRowClassAndId(); ListTagUtil.write(pageContext, ">"); pageContext.setAttribute(rowName, currentObject); } } } else if (haveTblFootersRendered) { retval = BodyTagSupport.SKIP_BODY; } return retval; }