Exemple #1
0
  /** ${@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;
  }