Exemplo n.º 1
0
  @Override
  public void encodeChildren(FacesContext context, UIComponent component) throws IOException {

    rendererParamsNotNull(context, component);

    if (!shouldEncodeChildren(component)) {
      return;
    }

    UIData data = (UIData) component;

    ResponseWriter writer = context.getResponseWriter();

    // Iterate over the rows of data that are provided
    int processed = 0;
    int rowIndex = data.getFirst() - 1;
    int rows = data.getRows();
    List<Integer> bodyRows = getBodyRows(data);
    boolean hasBodyRows = (bodyRows != null && !bodyRows.isEmpty());
    boolean wroteTableBody = false;
    if (!hasBodyRows) {
      renderTableBodyStart(component, writer);
    }
    while (true) {

      // Have we displayed the requested number of rows?
      if ((rows > 0) && (++processed > rows)) {
        break;
      }
      // Select the current row
      data.setRowIndex(++rowIndex);
      if (!data.isRowAvailable()) {
        break; // Scrolled past the last row
      }

      // render any table body rows
      if (hasBodyRows && bodyRows.contains(data.getRowIndex())) {
        if (wroteTableBody) {
          writer.endElement("tbody");
        }
        writer.startElement("tbody", data);
        wroteTableBody = true;
      }

      // Render the beginning of this row
      renderRowStart(component, writer);

      // Render the row content
      renderRow(context, component, null, writer);

      // Render the ending of this row
      renderRowEnd(component, writer);
    }
    renderTableBodyEnd(component, writer);

    // Clean up after ourselves
    data.setRowIndex(-1);
  }
Exemplo n.º 2
0
  private void renderToHandler(OutputTypeHandler outputHandler, UIData uiData, FacesContext fc) {

    try {
      int rowIndex = 0;
      int numberOfRowsToDisplay = 0;
      if (!isIgnorePagination()) {
        rowIndex = uiData.getFirst();
        numberOfRowsToDisplay = uiData.getRows();
        first = rowIndex;
        rows = numberOfRowsToDisplay;
      }

      int countOfRowsDisplayed = 0;
      uiData.setRowIndex(rowIndex);
      String[] includeColumnsArray = null;
      String includeColumns = getIncludeColumns();
      if (includeColumns != null) includeColumnsArray = includeColumns.split(",");
      List columns = getRenderedChildColumnsList(uiData);
      // System.out.println("DataExporter.renderToHandler()  columns.size: " + columns.size());

      // write header
      // System.out.println("DataExporter.renderToHandler()  HEADERS");
      processAllColumns(fc, outputHandler, columns, includeColumnsArray, -1, false);

      // System.out.println("DataExporter.renderToHandler()  ROWS");
      while (uiData.isRowAvailable()) {
        if (numberOfRowsToDisplay > 0 && countOfRowsDisplayed >= numberOfRowsToDisplay) {
          break;
        }

        // render the child columns; each one in a td
        processAllColumns(
            fc, outputHandler, columns, includeColumnsArray, countOfRowsDisplayed, false);

        // keep track of rows displayed
        countOfRowsDisplayed++;
        // maintain the row index property on the underlying UIData
        // component
        rowIndex++;
        uiData.setRowIndex(rowIndex);
      }
      // reset the underlying UIData component
      uiData.setRowIndex(-1);

      // write footer
      // System.out.println("DataExporter.renderToHandler()  FOOTERS");
      processAllColumns(
          fc, outputHandler, columns, includeColumnsArray, countOfRowsDisplayed, true);

      outputHandler.flushFile();
    } catch (Exception e) {
      log.error("renderToHandler()", e);
    }
  }
Exemplo n.º 3
0
  public void encodeEnd(FacesContext context, UIComponent component) throws IOException {

    if ((context == null) || (component == null)) {
      throw new NullPointerException(
          Util.getExceptionMessageString(Util.NULL_PARAMETERS_ERROR_MESSAGE_ID));
    }
    if (!component.isRendered()) {
      if (log.isTraceEnabled()) {
        log.trace(
            "No encoding necessary "
                + component.getId()
                + " since "
                + "rendered attribute is set to false ");
      }
      return;
    }
    UIData data = (UIData) component;
    data.setRowIndex(-1);
    ResponseWriter writer = context.getResponseWriter();

    // Render the ending of this table
    writer.endElement("table");
    writer.writeText("\n", null);
    if (log.isTraceEnabled()) {
      log.trace("End encoding component " + component.getId());
    }
  }
Exemplo n.º 4
0
  @Override
  public void encodeBegin(FacesContext context, UIComponent component) throws IOException {

    rendererParamsNotNull(context, component);

    if (!shouldEncode(component)) {
      return;
    }

    UIData data = (UIData) component;
    data.setRowIndex(-1);

    // Render the beginning of the table
    ResponseWriter writer = context.getResponseWriter();

    renderTableStart(context, component, writer, ATTRIBUTES);

    // Render the caption (if any)
    renderCaption(context, data, writer);

    // Render column groups (if any)
    renderColumnGroups(context, data);

    // Render the header facets (if any)
    renderHeader(context, component, writer);

    // Render the footer facets (if any)
    renderFooter(context, component, writer);
  }
  Object getValue() {
    Map<UIData, Integer> savedRowIndexes = new HashMap<UIData, Integer>();

    // save current row and set row needed to get value
    for (Iterator<UIData> i = reverse(uiDataRowMap.keySet().iterator()); i.hasNext(); ) {
      UIData uiData = i.next();
      savedRowIndexes.put(uiData, uiData.getRowIndex());
      uiData.setRowIndex(uiDataRowMap.get(uiData));
    }

    Object value = component.getValue();

    // restore rows
    for (Iterator<UIData> i = reverse(savedRowIndexes.keySet().iterator()); i.hasNext(); ) {
      UIData uiData = i.next();
      uiData.setRowIndex(savedRowIndexes.get(uiData));
    }

    return value;
  }
Exemplo n.º 6
0
  @Override
  public void encodeEnd(FacesContext context, UIComponent component) throws IOException {

    rendererParamsNotNull(context, component);

    if (!shouldEncode(component)) {
      return;
    }

    UIData data = (UIData) component;
    clearMetaInfo(data);
    data.setRowIndex(-1);

    // Render the ending of this table
    renderTableEnd(component, context.getResponseWriter());
  }
Exemplo n.º 7
0
  public void encodeBegin(FacesContext context, UIComponent component) throws IOException {

    if ((context == null) || (component == null)) {
      throw new NullPointerException(
          Util.getExceptionMessageString(Util.NULL_PARAMETERS_ERROR_MESSAGE_ID));
    }
    if (log.isTraceEnabled()) {
      log.trace("Begin encoding component " + component.getId());
    }

    // suppress rendering if "rendered" property on the component is
    // false.
    if (!component.isRendered()) {
      if (log.isTraceEnabled()) {
        log.trace(
            "No encoding necessary "
                + component.getId()
                + " since "
                + "rendered attribute is set to false ");
      }
      return;
    }
    UIData data = (UIData) component;
    data.setRowIndex(-1);

    // Render the beginning of the table
    ResponseWriter writer = context.getResponseWriter();
    writer.startElement("table", data);
    writeIdAttributeIfNecessary(context, writer, component);
    String styleClass = (String) data.getAttributes().get("styleClass");
    if (styleClass != null) {
      writer.writeAttribute("class", styleClass, "styleClass");
    }
    Util.renderPassThruAttributes(writer, component, new String[] {"rows"});
    writer.writeText("\n", null);

    // Render the header facets (if any)
    UIComponent header = getFacet(data, "header");
    int headerFacets = getFacetCount(data, "header");
    String headerClass = (String) data.getAttributes().get("headerClass");
    if ((header != null) || (headerFacets > 0)) {
      writer.startElement("thead", data);
      writer.writeText("\n", null);
    }
    if (header != null) {
      writer.startElement("tr", header);
      writer.startElement("th", header);
      if (headerClass != null) {
        writer.writeAttribute("class", headerClass, "headerClass");
      }
      writer.writeAttribute("colspan", "" + getColumnCount(data), null);
      writer.writeAttribute("scope", "colgroup", null);
      encodeRecursive(context, header);
      writer.endElement("th");
      writer.endElement("tr");
      writer.writeText("\n", null);
    }
    if (headerFacets > 0) {
      writer.startElement("tr", data);
      writer.writeText("\n", null);
      Iterator columns = getColumns(data);
      while (columns.hasNext()) {
        UIColumn column = (UIColumn) columns.next();
        writer.startElement("th", column);
        if (headerClass != null) {
          writer.writeAttribute("class", headerClass, "headerClass");
        }
        writer.writeAttribute("scope", "col", null);
        UIComponent facet = getFacet(column, "header");
        if (facet != null) {
          encodeRecursive(context, facet);
        }
        writer.endElement("th");
        writer.writeText("\n", null);
      }
      writer.endElement("tr");
      writer.writeText("\n", null);
    }
    if ((header != null) || (headerFacets > 0)) {
      writer.endElement("thead");
      writer.writeText("\n", null);
    }

    // Render the footer facets (if any)
    UIComponent footer = getFacet(data, "footer");
    int footerFacets = getFacetCount(data, "footer");
    String footerClass = (String) data.getAttributes().get("footerClass");
    if ((footer != null) || (footerFacets > 0)) {
      writer.startElement("tfoot", data);
      writer.writeText("\n", null);
    }
    if (footer != null) {
      writer.startElement("tr", footer);
      writer.startElement("td", footer);
      if (footerClass != null) {
        writer.writeAttribute("class", footerClass, "footerClass");
      }
      writer.writeAttribute("colspan", "" + getColumnCount(data), null);
      encodeRecursive(context, footer);
      writer.endElement("td");
      writer.endElement("tr");
      writer.writeText("\n", null);
    }
    if (footerFacets > 0) {
      writer.startElement("tr", data);
      writer.writeText("\n", null);
      Iterator columns = getColumns(data);
      while (columns.hasNext()) {
        UIColumn column = (UIColumn) columns.next();
        writer.startElement("td", column);
        if (footerClass != null) {
          writer.writeAttribute("class", footerClass, "footerClass");
        }
        UIComponent facet = getFacet(column, "footer");
        if (facet != null) {
          encodeRecursive(context, facet);
        }
        writer.endElement("td");
        writer.writeText("\n", null);
      }
      writer.endElement("tr");
      writer.writeText("\n", null);
    }
    if ((footer != null) || (footerFacets > 0)) {
      writer.endElement("tfoot");
      writer.writeText("\n", null);
    }
  }
Exemplo n.º 8
0
  private void renderThread(
      ResponseWriter writer,
      UIData data,
      int rows,
      Integer processed,
      int rowIndex,
      int rowStyles,
      int rowStyle,
      int columnStyle,
      int columnStyles,
      String columnClasses[],
      String rowClasses[],
      FacesContext context,
      List msgs,
      Message currentMsg) {
    Iterator kids = null;
    Iterator grandkids = null;

    for (int i = 0; i < msgs.size(); i++) {
      Message thisMsg = (Message) msgs.get(i);
      if (thisMsg.getId().equals(currentMsg.getId())) {
        msgs.remove(i);
        break;
      }
    }

    try {
      int processedInt = processed.intValue();
      if ((rows > 0) && (++processedInt > rows)) {
        processed = Integer.valueOf(processedInt);
        return;
      }
      data.setRowIndex(++rowIndex);
      if (!data.isRowAvailable()) {
        return;
      }

      writer.startElement("tr", data);
      if (rowStyles > 0) {
        writer.writeAttribute("class", rowClasses[rowStyle++], "rowClasses");
        if (rowStyle >= rowStyles) {
          rowStyle = 0;
        }
      }
      writer.writeText("\n", null);

      columnStyle = 0;
      kids = getColumns(data);
      while (kids.hasNext()) {
        UIColumn column = (UIColumn) kids.next();

        writer.startElement("td", column);
        if (columnStyles > 0) {
          writer.writeAttribute("class", columnClasses[columnStyle++], "columnClasses");
          if (columnStyle >= columnStyles) {
            columnStyle = 0;
          }
        }

        grandkids = getChildren(column);
        while (grandkids.hasNext()) {
          encodeRecursive(context, (UIComponent) grandkids.next());
        }

        writer.endElement("td");
        writer.writeText("\n", null);
      }

      writer.endElement("tr");
      writer.writeText("\n", null);
    } catch (Exception e) {
      e.printStackTrace();
    }

    MessageForumsMessageManager messageManager =
        (MessageForumsMessageManager)
            ComponentManager.get(
                "org.sakaiproject.api.app.messageforums.MessageForumsMessageManager");
    List replyMsgs = messageManager.getFirstLevelChildMsgs(currentMsg.getId());
    if (replyMsgs != null) {
      for (int i = 0; i < replyMsgs.size(); i++) {
        Message childM = (Message) replyMsgs.get(i);
        for (int j = 0; j < msgs.size(); j++) {
          Message remainMsg = (Message) msgs.get(j);
          if (childM.getId().equals(remainMsg.getId())) {
            renderThread(
                writer,
                data,
                rows,
                processed,
                rowIndex,
                rowStyles,
                rowStyle,
                columnStyle,
                columnStyles,
                columnClasses,
                rowClasses,
                context,
                msgs,
                remainMsg);
          }
        }
      }
    }
  }
Exemplo n.º 9
0
  public void encodeChildren(FacesContext context, UIComponent component) throws IOException {

    if ((context == null) || (component == null)) {
      throw new NullPointerException(
          Util.getExceptionMessageString(Util.NULL_PARAMETERS_ERROR_MESSAGE_ID));
    }
    if (log.isTraceEnabled()) {
      log.trace("Begin encoding children " + component.getId());
    }
    if (!component.isRendered()) {
      if (log.isTraceEnabled()) {
        log.trace(
            "No encoding necessary "
                + component.getId()
                + " since "
                + "rendered attribute is set to false ");
      }
      return;
    }
    UIData data = (UIData) component;

    ValueBinding msgsBinding = component.getValueBinding("value");
    List msgBeanList = (List) msgsBinding.getValue(context);

    // Set up variables we will need
    String columnClasses[] = getColumnClasses(data);
    int columnStyle = 0;
    int columnStyles = columnClasses.length;
    String rowClasses[] = getRowClasses(data);
    int rowStyles = rowClasses.length;
    ResponseWriter writer = context.getResponseWriter();
    Iterator kids = null;
    Iterator grandkids = null;

    // Iterate over the rows of data that are provided
    int processed = 0;
    int rowIndex = data.getFirst() - 1;
    int rows = data.getRows();
    int rowStyle = 0;

    writer.startElement("tbody", component);
    writer.writeText("\n", null);
    int hideDivNo = 0;
    while (true) {
      //			PrivateMessageDecoratedBean dmb = null;
      //			if(msgBeanList !=null && msgBeanList.size()>(rowIndex+1) &&
      // rowIndex>=-1)
      //			{
      //				dmb = (PrivateMessageDecoratedBean)msgBeanList.get(rowIndex+1);
      //			}
      //			boolean hasChildBoolean = false;
      //			if(dmb != null)
      //			{
      //				for(int i=0; i<msgBeanList.size(); i++)
      //				{
      //					PrivateMessageDecoratedBean tempDmb =
      // (PrivateMessageDecoratedBean)msgBeanList.get(i);
      //					if(tempDmb.getUiInReply() != null &&
      // tempDmb.getUiInReply().getId().equals(dmb.getMsg().getId()))
      //					{
      //						hasChildBoolean = true;
      //						break;
      //					}
      //				}
      //			}
      // Have we displayed the requested number of rows?
      if ((rows > 0) && (++processed > rows)) {
        break;
      }
      // Select the current row
      data.setRowIndex(++rowIndex);
      if (!data.isRowAvailable()) {
        break; // Scrolled past the last row
      }

      PrivateMessageDecoratedBean dmb = null;
      dmb = (PrivateMessageDecoratedBean) data.getRowData();
      boolean hasChildBoolean = false;
      if (dmb != null) {
        // if dmb has depth = 0, check for children
        if (dmb.getDepth() == 0) {
          // first, get the index of the dmb
          int index = -1;

          for (int i = 0; i < msgBeanList.size(); i++) {
            PrivateMessageDecoratedBean tempDmb = (PrivateMessageDecoratedBean) msgBeanList.get(i);
            if (dmb.getMsg().getId().equals(tempDmb.getMsg().getId())) {
              index = i;
              break;
            }
          }
          if (index < (msgBeanList.size() - 1) && index >= 0) {
            PrivateMessageDecoratedBean nextDmb =
                (PrivateMessageDecoratedBean) msgBeanList.get(index + 1);

            if (nextDmb.getDepth() > 0) {
              hasChildBoolean = true;
            }
          }
        }
      }

      if (dmb != null && dmb.getDepth() > 0) {
        writer.write(
            "<tr style=\"display:none\" id=\"_id_"
                + new Integer(hideDivNo).toString()
                + "__hide_division_"
                + "\">");
      } else {
        writer.write("<tr>");
      }

      if (rowStyles > 0) {
        writer.writeAttribute("class", rowClasses[rowStyle++], "rowClasses");
        if (rowStyle >= rowStyles) {
          rowStyle = 0;
        }
      }
      writer.writeText("\n", null);

      // Iterate over the child UIColumn components for each row
      columnStyle = 0;
      kids = getColumns(data);
      while (kids.hasNext()) {

        // Identify the next renderable column
        UIColumn column = (UIColumn) kids.next();

        // Render the beginning of this cell
        writer.startElement("td", column);
        if (columnStyles > 0) {
          writer.writeAttribute("class", columnClasses[columnStyle++], "columnClasses");
          if (columnStyle >= columnStyles) {
            columnStyle = 0;
          }
        }

        if (dmb != null && dmb.getDepth() > 0) {
          if (column.getId().endsWith("_msg_subject")) {
            StringBuilder indent = new StringBuilder();
            int indentInt = dmb.getDepth() * 4;
            for (int i = 0; i < indentInt; i++) {
              indent.append("&nbsp;");
            }
            writer.write(indent.toString());
          }
        } else {
          if (column.getId().endsWith("_msg_subject")) {
            if (hasChildBoolean && dmb.getDepth() == 0) {
              writer.write(
                  " <img src=\""
                      + BARIMG
                      + "\" style=\""
                      + CURSOR
                      + "\" id=\"_id_"
                      + Integer.valueOf(hideDivNo).toString()
                      + "__img_hide_division_\""
                      + " onclick=\"");
              int childNo = getTotalChildNo(dmb, msgBeanList);
              String hideTr = "";
              for (int i = 0; i < childNo; i++) {
                hideTr +=
                    "javascript:showHideDiv('_id_"
                        + (hideDivNo + i)
                        + "', '"
                        + RESOURCE_PATH
                        + "');";
              }
              writer.write(hideTr);
              writer.write("\" />");
            }
          }
        }
        // Render the contents of this cell by iterating over
        // the kids of our kids
        grandkids = getChildren(column);
        while (grandkids.hasNext()) {
          encodeRecursive(context, (UIComponent) grandkids.next());
        }

        // Render the ending of this cell
        writer.endElement("td");
        writer.writeText("\n", null);
      }

      // Render the ending of this row
      writer.endElement("tr");
      writer.writeText("\n", null);
      if (dmb != null && dmb.getDepth() > 0) {
        ////
        /*ValueBinding expandedBinding =
        	component.getValueBinding("expanded");
        String expanded = "";
        if(expandedBinding != null)
        	expanded = (String)expandedBinding.getValue(context);

        if(expanded.equalsIgnoreCase("true"))
        {*/
        writer.write("<script type=\"text/javascript\">");
        writer.write(" showHideDiv('_id_" + hideDivNo + "', '" + RESOURCE_PATH + "');");
        writer.write("</script>");
        //////				}

        hideDivNo++;
      }
    }
    writer.endElement("tbody");
    writer.writeText("\n", null);

    // Clean up after ourselves
    data.setRowIndex(-1);
    if (log.isTraceEnabled()) {
      log.trace("End encoding children " + component.getId());
    }
  }