Author: abelevich
Date: 2010-01-05 07:06:08 -0500 (Tue, 05 Jan 2010)
New Revision: 16237
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ColumnGroupRenderer.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/DataTableRowsRenderer.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/RowHolder.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java
Log:
store row/cell classes and cell element in attributes map using client id.
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java
===================================================================
---
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java 2010-01-04
19:03:05 UTC (rev 16236)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java 2010-01-05
12:06:08 UTC (rev 16237)
@@ -49,9 +49,7 @@
Row row = holder.getRow();
row.setRowKey(context, rowKey);
try {
- encodeRowBegin(context, holder);
encodeRow(holder);
- encodeRowEnd(context, holder);
} catch (IOException e) {
// TODO: seems we need add throws IOException ???
}
@@ -71,12 +69,6 @@
public abstract void encodeRow(RowHolderBase rowHolder) throws IOException;
- public void encodeRowBegin(FacesContext context, RowHolderBase holder) throws
IOException {
- }
-
- public void encodeRowEnd(FacesContext context, RowHolderBase holder) throws
IOException {
- }
-
@Override
protected void doEncodeChildren(ResponseWriter writer, FacesContext context,
UIComponent component)
throws IOException {
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
===================================================================
---
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2010-01-04
19:03:05 UTC (rev 16236)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2010-01-05
12:06:08 UTC (rev 16237)
@@ -131,13 +131,26 @@
dataTable.setRowKey(context, null);
encodeTableStructure(writer, context, dataTable);
- put(context, CELL_ELEMENT_KEY, HTML.TH_ELEM);
+
+ String id = dataTable.getClientId(context);
+ put(context, id, CELL_ELEMENT_KEY, HTML.TH_ELEM);
encodeHeaderFacet(writer, context, dataTable);
encodeFooterFacet(writer, context, dataTable);
- put(context, CELL_ELEMENT_KEY, HTML.TD_ELEM);
+ put(context, id, CELL_ELEMENT_KEY, HTML.TD_ELEM);
dataTable.setRowKey(context, key);
dataTable.restoreOrigValue(context);
+ String rowClass = dataTable.getRowSkinClass();
+ String cellClass = dataTable.getCellSkinClass();
+ String firstClass = dataTable.getFirstRowSkinClass();
+
+ rowClass = mergeStyleClasses("rowClass", rowClass, dataTable);
+ cellClass = mergeStyleClasses("cellClass", cellClass, dataTable);
+ firstClass = mergeStyleClasses("firstRowClass", firstClass,
dataTable);
+
+ saveRowStyles(context,id, firstClass, rowClass, cellClass);
+
+
}
@Override
@@ -192,6 +205,7 @@
}
int columns = getColumnsCount(dataTable);
+ String id = dataTable.getClientId(context);
if (columnFacetPresent) {
@@ -204,11 +218,11 @@
cellClass = mergeStyleClasses("columnFooterCellClass",
cellClass, dataTable);
firstClass = mergeStyleClasses("firstColumnFooterClass",
firstClass, dataTable);
- saveRowStyles(context, firstClass, rowClass, cellClass);
+ saveRowStyles(context,id, firstClass, rowClass, cellClass);
writer.startElement(HTML.TR_ELEMENT, dataTable);
encodeStyleClass(writer, context, dataTable, null, rowClass);
- encodeColumnFacet(context, writer, dataTable.columns(),
"footer",columns, cellClass);
+ encodeColumnFacet(context, writer, dataTable, "footer",columns,
cellClass);
writer.endElement(HTML.TR_ELEMENT);
}
@@ -222,8 +236,8 @@
cellClass = mergeStyleClasses("footerCellClass", cellClass,
dataTable);
firstClass = mergeStyleClasses("footerFirstClass", firstClass,
dataTable);
// TODO nick - rename method "encodeTableHeaderFacet"
- saveRowStyles(context, firstClass, rowClass, cellClass);
- encodeTableFacet(context, writer, columns, footer, "footer",
rowClass, cellClass);
+ saveRowStyles(context, id, firstClass, rowClass, cellClass);
+ encodeTableFacet(context, writer, id, columns, footer,
"footer", rowClass, cellClass);
}
if (encodeTfoot) {
@@ -264,7 +278,8 @@
}
int columns = getColumnsCount(dataTable);
-
+ String id = dataTable.getClientId(context);
+
if (header != null && header.isRendered()) {
String rowClass = dataTable.getHeaderSkinClass();
@@ -274,9 +289,9 @@
rowClass = mergeStyleClasses("headerClass", rowClass,
dataTable);
cellClass = mergeStyleClasses("headerCellClass", cellClass,
dataTable);
firstClass = mergeStyleClasses("headerFirstClass", firstClass,
dataTable);
- saveRowStyles(context, firstClass, rowClass, cellClass);
+ saveRowStyles(context, id, firstClass, rowClass, cellClass);
- encodeTableFacet(context, writer, columns, header, "header",
rowClass, cellClass);
+ encodeTableFacet(context, writer, id, columns, header,
"header", rowClass, cellClass);
}
if (isEncodeHeaders) {
@@ -288,12 +303,12 @@
rowClass = mergeStyleClasses("columnHeaderClass", rowClass,
dataTable);
cellClass = mergeStyleClasses("columnHeaderCellClass",
cellClass, dataTable);
firstClass = mergeStyleClasses("columnHeaderFirstClass",
firstClass, dataTable);
- saveRowStyles(context, firstClass, rowClass, cellClass);
+ saveRowStyles(context, id, firstClass, rowClass, cellClass);
writer.startElement(HTML.TR_ELEMENT, dataTable);
encodeStyleClass(writer, context, dataTable, null, rowClass);
- encodeColumnFacet(context, writer, dataTable.columns(),
"header", columns, cellClass);
+ encodeColumnFacet(context, writer, dataTable, "header",
columns, cellClass);
writer.endElement(HTML.TR_ELEMENT);
}
@@ -304,11 +319,14 @@
}
- protected void encodeColumnFacet(FacesContext context, ResponseWriter writer,
Iterator<UIComponent> headers, String facetName, int colCount, String cellClass)
throws IOException {
+ protected void encodeColumnFacet(FacesContext context, ResponseWriter writer,
UIDataTableBase dataTableBase, String facetName, int colCount, String cellClass) throws
IOException {
int tColCount = 0;
- String element = getCellElement(context);
+ String id = dataTableBase.getClientId(context);
+ String element = getCellElement(context, id);
+ Iterator<UIComponent> headers = dataTableBase.columns();
+
while (headers.hasNext()) {
UIComponent column = headers.next();
if (!column.isRendered()) {
@@ -347,10 +365,10 @@
}
}
- protected void encodeTableFacet(FacesContext context,ResponseWriter writer, int
columns, UIComponent footer, String facetName, String rowClass, String cellClass) throws
IOException {
+ protected void encodeTableFacet(FacesContext context,ResponseWriter writer, String
id, int columns, UIComponent footer, String facetName, String rowClass, String cellClass)
throws IOException {
boolean isColumnGroup = (footer instanceof Row);
- String element = getCellElement(context);
+ String element = getCellElement(context, id);
if(!isColumnGroup) {
writer.startElement(HTML.TR_ELEMENT, footer);
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ColumnGroupRenderer.java
===================================================================
---
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ColumnGroupRenderer.java 2010-01-04
19:03:05 UTC (rev 16236)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ColumnGroupRenderer.java 2010-01-05
12:06:08 UTC (rev 16237)
@@ -7,8 +7,10 @@
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
+import javax.faces.event.AbortProcessingException;
import org.richfaces.component.UIColumnGroup;
+import org.richfaces.component.UIDataTableBase;
public class ColumnGroupRenderer extends DataTableRowsRenderer {
@@ -32,7 +34,17 @@
@Override
public RowHolderBase createRowHolder(FacesContext context, UIComponent component) {
- return new RowHolder(context, (UIColumnGroup)component);
+
+ UIComponent parent = component.getParent();
+ while(parent != null && !(parent instanceof UIDataTableBase)) {
+ parent = parent.getParent();
+ }
+
+ if(parent == null) {
+ throw new AbortProcessingException("UIColumnGroup should be a child of
UIDataTable or UISubTable");
+ }
+
+ return new RowHolder(context,
parent.getClientId(context),(UIColumnGroup)component);
}
}
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java
===================================================================
---
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java 2010-01-04
19:03:05 UTC (rev 16236)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java 2010-01-05
12:06:08 UTC (rev 16237)
@@ -56,24 +56,9 @@
@Override
public RowHolder createRowHolder(FacesContext context, UIComponent component) {
- return new RowHolder(context, (UIDataTable)component);
+ return new RowHolder(context, component.getClientId(context),
(UIDataTable)component);
}
- @Override
- public void encodeRowBegin(FacesContext context, RowHolderBase holder) throws
IOException {
- UIDataTable dataTable = (UIDataTable)holder.getRow();
-
- String rowClass = dataTable.getRowSkinClass();
- String cellClass = dataTable.getCellSkinClass();
- String firstClass = dataTable.getFirstRowSkinClass();
-
- rowClass = mergeStyleClasses("rowClass", rowClass, dataTable);
- cellClass = mergeStyleClasses("cellClass", cellClass, dataTable);
- firstClass = mergeStyleClasses("firstRowClass", firstClass,
dataTable);
-
- saveRowStyles(context, firstClass, rowClass, cellClass);
- }
-
public void encodeRow(RowHolderBase holder) throws IOException {
FacesContext context = holder.getContext();
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/DataTableRowsRenderer.java
===================================================================
---
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/DataTableRowsRenderer.java 2010-01-04
19:03:05 UTC (rev 16236)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/DataTableRowsRenderer.java 2010-01-05
12:06:08 UTC (rev 16237)
@@ -23,6 +23,8 @@
public RowHolder encodeColumn(FacesContext context, UIColumn component,
ResponseWriter writer, RowHolder holder) throws IOException {
+ String parentId = holder.getDataTableId();
+
if (component instanceof org.richfaces.component.UIColumn) {
org.richfaces.component.UIColumn column = (org.richfaces.component.UIColumn)
component;
if (column.isBreakBefore() && holder.getProcessCell() != 0) {
@@ -34,17 +36,17 @@
if (holder.isRowStart()) {
if (holder.getCurrentRow() == 0) {
- encodeFirstRowStart(writer, context, component, holder);
+ encodeFirstRowStart(writer, context, parentId, component);
} else {
- encodeRowStart(writer, context, component, holder);
+ encodeRowStart(writer, context, parentId, component);
}
holder.setRowStart(false);
}
- encodeColumnStart(writer, context, component, holder);
+ encodeColumnStart(writer, context, parentId, component);
renderChildren(context, component);
- encodeColumnEnd(writer, context, component, holder);
+ encodeColumnEnd(writer, context, parentId, component);
if (holder.isLastColumn()) {
if (holder.getCurrentRow() == 0) {
@@ -58,9 +60,9 @@
return holder;
}
- public void encodeColumnStart(ResponseWriter writer, FacesContext context,
UIComponent component, RowHolderBase holder) throws IOException {
- writer.startElement(getCellElement(context), component);
- String cellClass = getCellClass(holder.getContext());
+ public void encodeColumnStart(ResponseWriter writer, FacesContext context, String
parentId, UIComponent component) throws IOException {
+ writer.startElement(getCellElement(context, parentId), component);
+ String cellClass = getCellClass(context, parentId);
encodeStyleClass(writer, context, component, HTML.STYLE_CLASS_ATTR, cellClass);
if (component instanceof org.richfaces.component.UIColumn) {
@@ -78,14 +80,14 @@
}
}
- public void encodeColumnEnd(ResponseWriter writer, FacesContext context, UIComponent
component, RowHolderBase holder) throws IOException {
- writer.endElement(getCellElement(context));
+ public void encodeColumnEnd(ResponseWriter writer, FacesContext context, String
parentId, UIComponent component) throws IOException {
+ writer.endElement(getCellElement(context, parentId));
}
- public void encodeFirstRowStart(ResponseWriter writer, FacesContext context,
UIComponent component, RowHolderBase holder) throws IOException {
+ public void encodeFirstRowStart(ResponseWriter writer, FacesContext context, String
parentId, UIComponent component) throws IOException {
writer.startElement(HTML.TR_ELEMENT, component);
getUtils().encodeId(context, component);
- String styleClass = getFirstRowClass(holder.getContext());
+ String styleClass = getFirstRowClass(context, parentId);
encodeStyleClass(writer, context, component, HTML.STYLE_CLASS_ATTR, styleClass);
}
@@ -93,10 +95,10 @@
writer.endElement(HTML.TR_ELEMENT);
}
- public void encodeRowStart(ResponseWriter writer, FacesContext context, UIComponent
component, RowHolderBase holder) throws IOException {
+ public void encodeRowStart(ResponseWriter writer, FacesContext context, String
parentId, UIComponent component) throws IOException {
writer.startElement(HTML.TR_ELEMENT, component);
getUtils().encodeId(context, component);
- String styleClass = getRowClass(holder.getContext());
+ String styleClass = getRowClass(context, parentId);
encodeStyleClass(writer, context, component, HTML.STYLE_CLASS_ATTR, styleClass);
}
@@ -105,35 +107,35 @@
}
- protected String getFirstRowClass(FacesContext context) {
- return get(context, FIRST_ROW_CLASS_KEY);
+ protected String getFirstRowClass(FacesContext context, String id) {
+ return get(context, id + FIRST_ROW_CLASS_KEY);
}
- protected String getRowClass(FacesContext context) {
- return get(context, ROW_CLASS_KEY);
+ protected String getRowClass(FacesContext context, String id) {
+ return get(context, id + ROW_CLASS_KEY);
}
- protected String getCellClass(FacesContext context) {
- return get(context, CELL_CLASS_KEY);
+ protected String getCellClass(FacesContext context, String id) {
+ return get(context, id + CELL_CLASS_KEY);
}
- protected String getCellElement(FacesContext context) {
- return get(context, CELL_ELEMENT_KEY);
+ protected String getCellElement(FacesContext context, String id) {
+ return get(context, id + CELL_ELEMENT_KEY);
}
private String get(FacesContext context, String key) {
return (String)context.getAttributes().get(key);
}
- protected void put(FacesContext context, String key, String value) {
- context.getAttributes().put(key, value);
+ protected void put(FacesContext context, String id, String key, String value) {
+ context.getAttributes().put(id + key, value);
}
//TODO nick - nested tables will not work correct
- protected void saveRowStyles(FacesContext context, String firstRowClass, String
rowClass, String cellClass) {
- put(context, FIRST_ROW_CLASS_KEY, firstRowClass);
- put(context, ROW_CLASS_KEY, rowClass);
- put(context, CELL_CLASS_KEY, cellClass);
+ protected void saveRowStyles(FacesContext context, String id, String firstRowClass,
String rowClass, String cellClass) {
+ put(context, id, FIRST_ROW_CLASS_KEY, firstRowClass);
+ put(context, id, ROW_CLASS_KEY, rowClass);
+ put(context, id, CELL_CLASS_KEY, cellClass);
}
public void encodeStyleClass(ResponseWriter writer, FacesContext context, UIComponent
component,
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java
===================================================================
---
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java 2010-01-04
19:03:05 UTC (rev 16236)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java 2010-01-05
12:06:08 UTC (rev 16237)
@@ -381,13 +381,6 @@
}
@Override
- protected void encodeTableFacet(FacesContext context, ResponseWriter writer, int
columns, UIComponent facet,
- String facetName, String rowClass, String cellClass) throws IOException {
- // TODO Auto-generated method stub
-
- }
-
- @Override
public boolean containsThead() {
return false;
}
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/RowHolder.java
===================================================================
---
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/RowHolder.java 2010-01-04
19:03:05 UTC (rev 16236)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/RowHolder.java 2010-01-05
12:06:08 UTC (rev 16237)
@@ -10,6 +10,8 @@
private int processCell;
+ private String dataTableId;
+
private boolean isLastColumn;
private boolean isRowStart;
@@ -19,11 +21,19 @@
return this.row;
}
- public RowHolder(FacesContext context, Row row) {
+ public RowHolder(FacesContext context, String dataTableId, Row row) {
this(context, row, 0, true);
-
+ this.dataTableId = dataTableId;
}
+ public String getDataTableId() {
+ return dataTableId;
+ }
+
+ public void setDataTableId(String dataTableId) {
+ this.dataTableId = dataTableId;
+ }
+
public RowHolder(FacesContext context, Row row, int processCell, boolean isRowStart)
{
super(context);
this.row = row;
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java
===================================================================
---
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java 2010-01-04
19:03:05 UTC (rev 16236)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java 2010-01-05
12:06:08 UTC (rev 16237)
@@ -30,19 +30,19 @@
cellClass = mergeStyleClasses("cellClass", cellClass, subTable);
firstClass = mergeStyleClasses("firstRowClass", firstClass, subTable);
- saveRowStyles(context, firstClass, rowClass, cellClass);
+ saveRowStyles(context, subTable.getClientId(context), firstClass, rowClass,
cellClass);
}
@Override
public void encodeTableStart(ResponseWriter writer, FacesContext context,
UIDataTableBase dataTable) throws IOException {
- put(context, CELL_ELEMENT_KEY, HTML.TD_ELEM);
+ put(context, dataTable.getClientId(context), CELL_ELEMENT_KEY, HTML.TD_ELEM);
UISubTable subTable = (UISubTable)dataTable;
encodeTableBodyStart(writer, context, subTable);
}
@Override
public RowHolderBase createRowHolder(FacesContext context, UIComponent component) {
- return new RowHolder(context, (UISubTable)component);
+ return new RowHolder(context, component.getClientId(context),
(UISubTable)component);
}
@Override