Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright ${year}, Red Hat, Inc. and individual contributors
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
  *
  * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 package org.richfaces.renderkit;
 
 import java.util.Map;
 
 import  javax.faces.component.UIColumn;
 import  javax.faces.component.UIComponent;
 import  javax.faces.context.FacesContext;
 import  javax.faces.context.ResponseWriter;
 
 import  org.richfaces.component.Row;

Author(s):
Anton Belevich
 
 public abstract class AbstractTableBaseRenderer extends SortingFilteringRowsRenderer {
     public static final String ROW_CLASS_KEY = "rowClass";
     public static final String BREAK_ROW_BEFORE = "breakRowBefore";
     public static final String COLUMN_CLASS = "userColumnClass";
     public static final String ROW_CLASS = "userRowClass";
     protected static final String FIRST_ROW_CLASS_KEY = "firstRowClass";
     protected static final String CELL_CLASS_KEY = "cellClass";
     private static final String CELL_ELEMENT_KEY = "cellElement";
 
     public void encodeColumn(FacesContext context, ResponseWriter writer, UIColumn componentRowHolder rowHolder)
         throws IOException {
         String parentId = rowHolder.getParentClientId();
 
         if (component instanceof org.richfaces.component.AbstractColumn) {
             Map<StringObjectattributes = component.getAttributes();
             if (..equals(attributes.get()) && rowHolder.getProcessCell() != 0) {
                 encodeRowEnd(writer);
                 rowHolder.nextRow();
                 rowHolder.setRowStart(true);
             }
         }
 
         if (rowHolder.isRowStart()) {
             int currentRow = rowHolder.getCurrentRow();
             String[] rowClasses = getRowClasses(rowHolder);
             if (rowClasses.length > 0) {
                 int indeStyleClass = currentRow % rowClasses.length;
                 String rowClass = rowClasses[indeStyleClass];
                 component.getAttributes().put(rowClass);
             }
             if (rowHolder.getCurrentRow() == 0) {
                 encodeFirstRowStart(writercontextparentIdcurrentRowcomponent);
             } else {
                 encodeRowStart(writercontextparentIdcurrentRowcomponent);
             }
             if (rowHolder.getRow() instanceof UIDataTableBase) {
                 renderRowHandlers(context, (UIDataTableBaserowHolder.getRow());
             }
             rowHolder.setRowStart(false);
         }
 
         encodeColumnStart(writercontextparentIdcomponent);
         renderChildren(contextcomponent);
         encodeColumnEnd(writercontextparentId);
 
         rowHolder.nextCell();
     }
 
     public void encodeColumnStart(ResponseWriter writer, FacesContext contextString parentId, UIComponent component)
         throws IOException {
         writer.startElement(getCellElement(contextparentId), component);
         writer.writeAttribute(HtmlConstants.ID_ATTRIBUTE, component.getContainerClientId(context), HtmlConstants.ID_ATTRIBUTE);
         String cellClass = getCellClass(contextparentId);
         cellClass = concatClasses(cellClasscomponent.getAttributes().get());
         encodeStyleClass(writercontextcomponent, HtmlConstants.STYLE_CLASS_ATTR, cellClass);
         encodeStyle(writercontextcomponentnull);
 
         if (component instanceof org.richfaces.component.AbstractColumn) {
             Map<StringObjectattributes = component.getAttributes();
 
            Integer rowspan = (Integerattributes.get(HtmlConstants.ROWSPAN_ATTRIBUTE);
            if (rowspan != null && rowspan != .) {
                writer.writeAttribute(HtmlConstants.ROWSPAN_ATTRIBUTE, rowspannull);
            }
            Integer colspan = (Integerattributes.get(HtmlConstants.COLSPAN_ATTRIBUTE);
            if (colspan != null && colspan != .) {
                writer.writeAttribute(HtmlConstants.COLSPAN_ATTRIBUTE, colspannull);
            }
        }
    }
    public void encodeColumnEnd(ResponseWriter writer, FacesContext contextString parentIdthrows IOException {
        writer.endElement(getCellElement(contextparentId));
    }
    public void encodeFirstRowStart(ResponseWriter writer, FacesContext contextString parentIdint currentRow,
        UIComponent componentthrows IOException {
        writer.startElement(HtmlConstants.TR_ELEMENT, component);
        writer.writeAttribute(HtmlConstants.ID_ATTRIBUTE, parentId + ":" + currentRownull);
        String styleClass = concatClasses(getRowClass(contextparentId), getFirstRowClass(contextparentId), component
            .getAttributes().get());
        if (styleClass.length() > 0) {
            writer.writeAttribute(HtmlConstants.CLASS_ATTRIBUTE, styleClassnull);
        }
    }
    public void encodeFirstRowEnd(ResponseWriter writerthrows IOException {
        writer.endElement(HtmlConstants.TR_ELEMENT);
    }
    public void encodeRowStart(ResponseWriter writer, FacesContext contextString parentIdint currentRow,
        UIComponent componentthrows IOException {
        writer.startElement(HtmlConstants.TR_ELEMENT, component);
        writer.writeAttribute(HtmlConstants.ID_ATTRIBUTE, parentId + ":" + currentRownull);
        String styleClass = concatClasses(getRowClass(contextparentId), component.getAttributes().get());
        if (styleClass.length() > 0) {
            writer.writeAttribute(HtmlConstants.CLASS_ATTRIBUTE, styleClassnull);
        }
    }
    public void encodeRowEnd(ResponseWriter writerthrows IOException {
        writer.endElement(HtmlConstants.TR_ELEMENT);
    }
    protected String getFirstRowClass(FacesContext contextString id) {
        return get(contextid + );
    }
    protected String getRowClass(FacesContext contextString id) {
        return get(contextid + );
    }
    protected String getCellClass(FacesContext contextString id) {
        return get(contextid + );
    }
    protected String getCellElement(FacesContext contextString id) {
        String elementName = get(contextid + );
        if (elementName == null) {
            elementName = HtmlConstants.TD_ELEM;
        }
        return elementName;
    }
    protected void setCellElement(FacesContext contextString idString element) {
        put(contextid + element);
    }
    protected void saveRowStyles(FacesContext contextString idString firstRowClassString rowClassString cellClass) {
        put(contextid + firstRowClass);
        put(contextid + rowClass);
        put(contextid + cellClass);
    }
    public void encodeStyleClass(ResponseWriter writer, FacesContext context, UIComponent component,
        String styleClassAttributeString styleClassthrows IOException {
        boolean isEmpty = isEmptyAttr(componentstyleClassAttribute);
        if (isEmpty && !(styleClass != null && styleClass.trim().length() != 0)) {
            return;
        }
        String componentStyleClass = isEmpty ? styleClass : styleClass + " "
            + component.getAttributes().get(styleClassAttribute);
        writer.writeAttribute(HtmlConstants.CLASS_ATTRIBUTE, componentStyleClassnull);
    }
    protected boolean isEmptyAttr(UIComponent componentString attribute) {
        if (attribute == null) {
            return true;
        }
        String value = (Stringcomponent.getAttributes().get(attribute);
        return !(value != null && value.trim().length() != 0);
    }
    protected void encodeStyle(ResponseWriter writer, FacesContext context, UIComponent componentString predefinedStyles)
        throws IOException {
        StringBuffer toEncode = new StringBuffer();
        if (!isEmptyAttr(component, HtmlConstants.STYLE_ATTRIBUTE)) {
            String style = ((Stringcomponent.getAttributes().get(HtmlConstants.STYLE_ATTRIBUTE)).trim();
            style = style.endsWith(";") ? style : style + ";";
            toEncode.append(style);
        }
        if (!isEmpty(predefinedStyles)) {
            String style = predefinedStyles.endsWith(";") ? predefinedStyles : predefinedStyles + ";";
            toEncode.append(style);
        }
        if (toEncode.length() > 0) {
            writer.writeAttribute(HtmlConstants.STYLE_ATTRIBUTE, toEncode.toString(), null);
        }
    }
    protected boolean isEmpty(String style) {
        return !((style != null) && (style.trim().length() != 0));
    }
    protected int getColumnsCount(Iterator<UIComponent> col) {
        int count = 0;
        int currentLength = 0;
        while (col.hasNext()) {
            UIComponent component = (UIComponent) col.next();
            if (component.isRendered()) {
                if (component instanceof Row) {
                    // Store max calculated value of previsous rows.
                    if (currentLength > count) {
                        count = currentLength;
                    }
                    // Calculate number of columns in row.
                    currentLength = getColumnsCount(((Row) component).columns());
                    // Store max calculated value
                    if (currentLength > count) {
                        count = currentLength;
                    }
                    currentLength = 0;
                } else if (component instanceof org.richfaces.component.AbstractColumn) {
                    // For new row, save length of previsous.
                    Map<StringObjectattributes = component.getAttributes();
                    if (..equals(attributes.get())) {
                        if (currentLength > count) {
                            count = currentLength;
                        }
                        currentLength = 0;
                    }
                    Integer colspan = (Integerattributes.get(HtmlConstants.COLSPAN_ATTRIBUTE);
                    // Append colspan of this column
                    if (null != colspan && colspan.intValue() != .) {
                        currentLength += colspan.intValue();
                    } else {
                        currentLength++;
                    }
                } else if (component instanceof UIColumn) {
                    // UIColumn always have colspan == 1.
                    currentLength++;
                }
            }
        }
        if (currentLength > count) {
            count = currentLength;
        }
        return count;
    }
    @Override
    public void encodeFakeRow(FacesContext facesContextRowHolderBase rowHolderthrows IOException {
        UIComponent component = (UIComponent) rowHolder.getRow();
        ResponseWriter writer = facesContext.getResponseWriter();
        writer.startElement(HtmlConstants.TR_ELEMENT, component);
        writer.writeAttribute(HtmlConstants.STYLE_ATTRIBUTE, "display:none"null);
        writer.startElement(HtmlConstants.TD_ELEM, component);
        writer.endElement(HtmlConstants.TD_ELEM);
        writer.endElement(HtmlConstants.TR_ELEMENT);
    }
New to GrepCode? Check out our FAQ X