Author: abelevich
Date: 2010-05-25 04:02:50 -0400 (Tue, 25 May 2010)
New Revision: 17225
Modified:
root/ui-sandbox/tables/trunk/api/src/main/java/org/richfaces/component/Row.java
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableBaseRenderer.java
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/ColumnGroupRenderer.java
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/RowHolder.java
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java
root/ui-sandbox/tables/trunk/ui/src/main/resources/META-INF/tables.taglib.xml
Log:
rename colGroup to columnGroup (RF-8678), fix ColumnGroup rendering (RF-8679), fix html
encoding
Modified: root/ui-sandbox/tables/trunk/api/src/main/java/org/richfaces/component/Row.java
===================================================================
---
root/ui-sandbox/tables/trunk/api/src/main/java/org/richfaces/component/Row.java 2010-05-24
22:53:25 UTC (rev 17224)
+++
root/ui-sandbox/tables/trunk/api/src/main/java/org/richfaces/component/Row.java 2010-05-25
08:02:50 UTC (rev 17225)
@@ -41,7 +41,9 @@
public Iterator<UIComponent> columns();
public void setRowKey(FacesContext context, Object rowKey);
-
+
+ public String getClientId(FacesContext context);
+
public void walk(FacesContext context, DataVisitor visitor, Object argument);
}
Modified:
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java
===================================================================
---
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java 2010-05-24
22:53:25 UTC (rev 17224)
+++
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java 2010-05-25
08:02:50 UTC (rev 17225)
@@ -24,10 +24,10 @@
import java.io.IOException;
+import javax.faces.FacesException;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
-import javax.faces.view.facelets.FaceletException;
import org.ajax4jsf.model.DataVisitResult;
import org.ajax4jsf.model.DataVisitor;
@@ -40,34 +40,43 @@
*/
public abstract class AbstractRowsRenderer extends RendererBase implements DataVisitor {
- public DataVisitResult process(FacesContext context, Object rowKey, Object argument)
{
+ public DataVisitResult process(FacesContext facesContext, Object rowKey, Object
argument) {
RowHolderBase holder = (RowHolderBase) argument;
Row row = holder.getRow();
- row.setRowKey(context, rowKey);
+ row.setRowKey(facesContext, rowKey);
+
try {
- encodeRow(holder);
+ ResponseWriter writer = facesContext.getResponseWriter();
+ encodeRow(writer, facesContext, holder);
} catch (IOException e) {
- throw new FaceletException(e);
+ throw new FacesException(e);
}
holder.nextRow();
return DataVisitResult.CONTINUE;
}
- protected void encodeRows(RowHolderBase rowHolder) throws IOException {
- rowHolder.getRow().walk(rowHolder.getContext(), this, rowHolder);
+ protected void encodeRows(FacesContext facesContext, RowHolderBase rowHolder) {
+ rowHolder.getRow().walk(facesContext, this, rowHolder);
}
- public abstract void encodeRow(RowHolderBase rowHolder) throws IOException;
+ public abstract void encodeRow(ResponseWriter writer, FacesContext facesContext,
RowHolderBase rowHolder) throws IOException;
@Override
- protected void doEncodeChildren(ResponseWriter writer, FacesContext context,
UIComponent component)
- throws IOException {
- RowHolderBase rowHolder = createRowHolder(context, component);
- encodeRows(rowHolder);
+ protected void doEncodeChildren(ResponseWriter writer, FacesContext facesContext,
UIComponent component) throws IOException {
+ RowHolderBase rowHolder = createRowHolder(facesContext, component);
+ encodeBeforeRows(writer, facesContext, rowHolder);
+ encodeRows(facesContext, rowHolder);
+ encodeAfterRows(writer, facesContext, rowHolder);
}
public abstract RowHolderBase createRowHolder(FacesContext context, UIComponent
component);
+ public void encodeBeforeRows(ResponseWriter writer, FacesContext facesContext,
RowHolderBase rowHolder) throws IOException {
+ }
+
+ public void encodeAfterRows(ResponseWriter writer, FacesContext facesContext,
RowHolderBase rowHolder) throws IOException {
+ }
+
protected boolean isEmpty(String style) {
return !((style != null) && (style.trim().length() != 0));
}
Modified:
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableBaseRenderer.java
===================================================================
---
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableBaseRenderer.java 2010-05-24
22:53:25 UTC (rev 17224)
+++
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableBaseRenderer.java 2010-05-25
08:02:50 UTC (rev 17225)
@@ -33,7 +33,6 @@
import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.richfaces.component.Row;
-import org.richfaces.component.UIDataTableBase;
public abstract class AbstractTableBaseRenderer extends DataTableRowsRenderer {
@@ -47,47 +46,42 @@
public static final String CELL_ELEMENT_KEY = "cellElement";
- public RowHolder encodeColumn(FacesContext context, UIColumn component,
ResponseWriter writer, RowHolder holder) throws IOException {
+ public RowHolder encodeColumn(FacesContext context, ResponseWriter writer, UIColumn
component, RowHolder rowHolder) throws IOException {
+
+ String parentId = rowHolder.getBaseClientId();
- String parentId = holder.getDataTableId();
-
if (component instanceof org.richfaces.component.UIColumn) {
Map<String, Object> attributes = component.getAttributes();
- if (Boolean.TRUE.equals(attributes.get("breakBefore")) &&
holder.getProcessCell() != 0) {
+ if (Boolean.TRUE.equals(attributes.get("breakBefore")) &&
rowHolder.getProcessCell() != 0) {
encodeRowEnd(writer, context, component);
- holder.nextRow();
- holder.setRowStart(true);
+ rowHolder.remove();
+ rowHolder.nextRow();
+ rowHolder.setRowStart(true);
}
}
- if (holder.isRowStart()) {
- if (holder.getCurrentRow() == 0) {
+ if (rowHolder.isRowStart()) {
+ if (rowHolder.getCurrentRow() == 0) {
encodeFirstRowStart(writer, context, parentId, component);
} else {
encodeRowStart(writer, context, parentId, component);
}
-
- holder.setRowStart(false);
+ rowHolder.add(HTML.TR_ELEMENT);
+ rowHolder.setRowStart(false);
}
encodeColumnStart(writer, context, parentId, component);
renderChildren(context, component);
encodeColumnEnd(writer, context, parentId, component);
- if (holder.isLastColumn()) {
- if (holder.getCurrentRow() == 0) {
- encodeFirstRowEnd(writer, context, component);
- } else {
- encodeRowEnd(writer, context, component);
- }
- }
- holder.nextCell();
+ rowHolder.nextCell();
- return holder;
+ return rowHolder;
}
public void encodeColumnStart(ResponseWriter writer, FacesContext context, String
parentId, UIComponent component) throws IOException {
- writer.startElement(getCellElement(context, parentId), component);
+ String element = getCellElement(context, parentId);
+ writer.startElement(element, component);
getUtils().encodeId(context, component);
String cellClass = getCellClass(context, parentId);
encodeStyleClass(writer, context, component, HTML.STYLE_CLASS_ATTR, cellClass);
@@ -107,50 +101,12 @@
}
}
- @Override
- protected void doEncodeChildren(ResponseWriter writer, FacesContext context,
UIComponent component) throws IOException {
-
- if(component instanceof UIDataTableBase) {
- UIDataTableBase dataTable = (UIDataTableBase)component;
- int rowCount = dataTable.getRowCount();
- if(rowCount > 0) {
- super.doEncodeChildren(writer, context, component);
- } else {
- int columns = getColumnsCount(dataTable.columns());
-
- writer.startElement(HTML.TR_ELEMENT, dataTable);
- writer.startElement(HTML.TD_ELEM, dataTable);
- writer.writeAttribute("colspan", columns, null);
-
- String styleClass =
(String)dataTable.getAttributes().get("noDataStyleClass");
- styleClass = styleClass != null ? "rich-nodata-cell " +
styleClass : "rich-nodata-cell";
-
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, styleClass, null);
-
- UIComponent noDataFacet = dataTable.getNoData();
- if(noDataFacet != null && noDataFacet.isRendered() ) {
- noDataFacet.encodeAll(context);
- } else {
- String noDataLabel = dataTable.getNoDataLabel();
- if(noDataLabel != null) {
- writer.writeText(noDataLabel, "noDataLabel");
- }
- }
-
- writer.endElement(HTML.TD_ELEM);
- writer.endElement(HTML.TR_ELEMENT);
- }
- }
-
- }
-
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, String
parentId, UIComponent component) throws IOException {
writer.startElement(HTML.TR_ELEMENT, component);
-// getUtils().encodeId(context, component);
String styleClass = getFirstRowClass(context, parentId);
encodeStyleClass(writer, context, component, HTML.STYLE_CLASS_ATTR, styleClass);
}
@@ -161,7 +117,6 @@
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(context, parentId);
encodeStyleClass(writer, context, component, HTML.STYLE_CLASS_ATTR, styleClass);
}
@@ -169,7 +124,6 @@
public void encodeRowEnd(ResponseWriter writer, FacesContext context, UIComponent
component) throws IOException {
writer.endElement(HTML.TR_ELEMENT);
}
-
protected String getFirstRowClass(FacesContext context, String id) {
return get(context, id + FIRST_ROW_CLASS_KEY);
@@ -291,7 +245,4 @@
}
return count;
}
-
-
-
}
Modified:
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
===================================================================
---
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2010-05-24
22:53:25 UTC (rev 17224)
+++
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2010-05-25
08:02:50 UTC (rev 17225)
@@ -125,6 +125,44 @@
encodeTableFacets(writer, context, dataTable);
}
+ @Override
+ protected void doEncodeChildren(ResponseWriter writer, FacesContext context,
UIComponent component) throws IOException {
+
+ if(component instanceof UIDataTableBase) {
+ UIDataTableBase dataTable = (UIDataTableBase)component;
+ int rowCount = dataTable.getRowCount();
+ if(rowCount > 0) {
+ super.doEncodeChildren(writer, context, component);
+ } else {
+ int columns = getColumnsCount(dataTable.columns());
+
+ writer.startElement(HTML.TR_ELEMENT, dataTable);
+ writer.startElement(HTML.TD_ELEM, dataTable);
+ writer.writeAttribute("colspan", columns, null);
+
+ String styleClass =
(String)dataTable.getAttributes().get("noDataStyleClass");
+ styleClass = styleClass != null ? "rich-nodata-cell " +
styleClass : "rich-nodata-cell";
+
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, styleClass, null);
+
+ UIComponent noDataFacet = dataTable.getNoData();
+ if(noDataFacet != null && noDataFacet.isRendered() ) {
+ noDataFacet.encodeAll(context);
+ } else {
+ String noDataLabel = dataTable.getNoDataLabel();
+ if(noDataLabel != null) {
+ writer.writeText(noDataLabel, "noDataLabel");
+ }
+ }
+
+ writer.endElement(HTML.TD_ELEM);
+ writer.endElement(HTML.TR_ELEMENT);
+ }
+ }
+
+ }
+
+
public void encodeTableStart(ResponseWriter writer, FacesContext context,
UIDataTableBase component) throws IOException {
writer.startElement(HTML.TABLE_ELEMENT, component);
writer.writeAttribute(HTML.ID_ATTRIBUTE, component.getClientId(), null);
Modified:
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/ColumnGroupRenderer.java
===================================================================
---
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/ColumnGroupRenderer.java 2010-05-24
22:53:25 UTC (rev 17224)
+++
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/ColumnGroupRenderer.java 2010-05-25
08:02:50 UTC (rev 17225)
@@ -37,23 +37,19 @@
public class ColumnGroupRenderer extends AbstractTableBaseRenderer {
@Override
- public void encodeRow(RowHolderBase holder) throws IOException {
+ public void encodeRow(ResponseWriter writer, FacesContext facesContext, RowHolderBase
holder) throws IOException {
RowHolder rowHolder = (RowHolder) holder;
-
+
UIColumnGroup row = (UIColumnGroup)rowHolder.getRow();
rowHolder.setRowStart(true);
Iterator<UIComponent> components = row.columns();
- FacesContext context = rowHolder.getContext();
- ResponseWriter writer = context.getResponseWriter();
-
+
while(components.hasNext()){
- UIComponent component = components.next();
- rowHolder.lastColumn(!components.hasNext());
- rowHolder = encodeColumn(context, (UIColumn)component, writer, rowHolder);
+ encodeColumn(facesContext, writer, (UIColumn)components.next(),rowHolder);
}
}
-
+
@Override
public RowHolderBase createRowHolder(FacesContext context, UIComponent component) {
UIComponent parent = component.getParent();
@@ -64,7 +60,9 @@
if(parent == null) {
throw new AbortProcessingException("UIColumnGroup should be a child of
UIDataTable or UISubTable");
}
-
- return new RowHolder(context,
parent.getClientId(context),(UIColumnGroup)component);
+
+ RowHolder rowHolder = new RowHolder(context, (UIColumnGroup)component);
+ rowHolder.setBaseClientId(parent.getClientId());
+ return rowHolder;
}
}
Modified:
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java
===================================================================
---
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java 2010-05-24
22:53:25 UTC (rev 17224)
+++
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java 2010-05-25
08:02:50 UTC (rev 17225)
@@ -73,61 +73,81 @@
}
}
-
@Override
public RowHolder createRowHolder(FacesContext context, UIComponent component) {
return new RowHolder(context, (UIDataTable)component);
}
- public void encodeRow(RowHolderBase holder) throws IOException {
-
- FacesContext context = holder.getContext();
+ @Override
+ public void encodeBeforeRows(ResponseWriter writer, FacesContext facesContext,
RowHolderBase holder) throws IOException {
+ RowHolder rowHolder = (RowHolder)holder;
+ Row row = rowHolder.getRow();
+
+ if(!containRowChildren((UIDataTable)row)) {
+ encodeTableBodyStart(writer, facesContext, (UIDataTableBase)row);
+ rowHolder.add(HTML.TBODY_ELEMENT);
+ }
+ }
+
+ @Override
+ public void encodeAfterRows(ResponseWriter writer, FacesContext facesContext,
RowHolderBase holder) throws IOException {
+ RowHolder rowHolder = (RowHolder)holder;
+ Row row = rowHolder.getRow();
+ if(!rowHolder.isEmpty()) {
+ encodeTableBodyEnd(writer, facesContext, (UIDataTable)row);
+ }
+ }
+
+ public void encodeRow(ResponseWriter writer, FacesContext context, RowHolderBase
holder) throws IOException {
+
+ RowHolder rowHolder = (RowHolder)holder;
+ Row row = rowHolder.getRow();
+
+ if(rowHolder.isEmpty()) {
+ encodeTableBodyStart(writer, context, (UIDataTable)row);
+ rowHolder.add(HTML.TBODY_ELEMENT);
+ }
- RowHolder rowHolder = (RowHolder)holder;
-
rowHolder.setRowStart(true);
- rowHolder.resetProcessCell();
-
- Row row = rowHolder.getRow();
-
- ResponseWriter writer = context.getResponseWriter();
- encodeTableBodyStart(writer, context, (UIDataTable) row);
-
Iterator<UIComponent> components = row.columns();
while (components.hasNext()) {
-
UIComponent child = components.next();
- if (child instanceof Row) {
- encodeTableBodyEnd(writer, context, (UIDataTable) row);
+ if(child instanceof Row) {
+ if(HTML.TR_ELEMENT.equals(rowHolder.getCurrentElement())) {
+ encodeRowEnd(writer, context, child);
+ rowHolder.remove();
+ }
+
+ if(HTML.TBODY_ELEMENT.equals(rowHolder.getCurrentElement())) {
+ encodeTableBodyEnd(writer, context, (UIDataTable)row);
+ rowHolder.remove();
+ }
child.encodeAll(context);
- if (components.hasNext()) {
- encodeTableBodyStart(writer, context, (UIDataTable) row);
+ } else if (child instanceof UIColumn) {
+ rowHolder = encodeColumn(context, writer, (UIColumn) child, rowHolder);
+ if(!components.hasNext()) {
+ encodeRowEnd(writer, context, (UIColumn)child);
+ rowHolder.remove();
}
- } else if (child instanceof UIColumn) {
- rowHolder.lastColumn(!components.hasNext());
- rowHolder = encodeColumn(context, (UIColumn)child, writer, rowHolder);
- }
+ }
}
-
- encodeTableBodyEnd(writer, context, (UIDataTableBase) row);
}
-
- /*
- * public void encodeHiddenInput(FacesContext context, ResponseWriter writer,
UIDataTableBase dataTable) throws
- * IOException {
- *
- * String hiddenId = dataTable.getClientId(context) + ":" +
"hidden";
- *
- * writer.startElement(HTML.INPUT_ELEM, dataTable);
writer.writeAttribute(HTML.ID_ATTRIBUTE, hiddenId, null);
- * writer.writeAttribute(HTML.TYPE_ATTR,"hidden", null);
writer.endElement(HTML.INPUT_ELEM);
- *
- * }
- */
-
+
+
+ protected boolean containRowChildren(UIDataTable dataTable) {
+ Iterator<UIComponent> iterator = dataTable.columns();
+ while (iterator.hasNext()) {
+ UIComponent child = iterator.next();
+ if(child instanceof Row) {
+ return true;
+ }
+ }
+ return false;
+ }
+
@Override
protected void doEncodeEnd(ResponseWriter writer, FacesContext context, UIComponent
component) throws IOException {
-
if (!shouldProceed(component)) {
return;
}
@@ -419,5 +439,4 @@
protected void setupTableStartElement(FacesContext context, UIComponent component) {
put(context, component.getClientId(context), CELL_ELEMENT_KEY, HTML.TH_ELEM);
}
-
}
Modified:
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java
===================================================================
---
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java 2010-05-24
22:53:25 UTC (rev 17224)
+++
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java 2010-05-25
08:02:50 UTC (rev 17225)
@@ -408,7 +408,7 @@
writer.startElement(HTML.TBODY_ELEMENT, table);
writer.writeAttribute(HTML.ID_ATTRIBUTE, table.getClientId(context) +
":tb"
+ partName.toString().charAt(0), null);
- encodeRows(state);
+ encodeRows(context, state);
writer.endElement(HTML.TBODY_ELEMENT);
writer.endElement(HTML.TABLE_ELEMENT);
@@ -512,7 +512,7 @@
try {
writer.updateAttributes(ids.remove(0), attributes);
writer.startUpdate(id);
- encodeRow(state);
+ encodeRow(writer, context, state);
writer.endUpdate();
} catch (IOException e) {
throw new FacesException(e);
@@ -688,16 +688,14 @@
}
@Override
- public void encodeRow(RowHolderBase rowHolder) throws IOException {
- FacesContext context = rowHolder.getContext();
- ResponseWriter writer = context.getResponseWriter();
+ public void encodeRow(ResponseWriter writer, FacesContext facesContext, RowHolderBase
rowHolder) throws IOException {
RendererState state = (RendererState) rowHolder;
UIDataTableBase table = state.getRow();
writer.startElement(HTML.TR_ELEMENT, table);
Iterator<UIComponent> columns = null;
Part part = state.getPart();
writer.writeAttribute(HTML.ID_ATTRIBUTE,
- table.getClientId(context) + ":" +
part.getName().toString().charAt(0), null);
+ table.getClientId(facesContext) + ":" +
part.getName().toString().charAt(0), null);
columns = part.getColumns().iterator();
while (columns.hasNext()) {
UIComponent column = (UIComponent) columns.next();
@@ -708,7 +706,7 @@
+ column.getId(), null);
writer.startElement(HTML.DIV_ELEM, column);
writer.writeAttribute(HTML.CLASS_ATTRIBUTE,
"rich-extable-cell-content", null);
- renderChildren(context, column);
+ renderChildren(facesContext, column);
writer.endElement(HTML.DIV_ELEM);
writer.endElement(HTML.DIV_ELEM);
writer.endElement(HTML.TD_ELEM);
Modified:
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/RowHolder.java
===================================================================
---
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/RowHolder.java 2010-05-24
22:53:25 UTC (rev 17224)
+++
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/RowHolder.java 2010-05-25
08:02:50 UTC (rev 17225)
@@ -22,7 +22,8 @@
package org.richfaces.renderkit;
-import javax.faces.component.UIComponent;
+import java.util.LinkedList;
+
import javax.faces.context.FacesContext;
import org.richfaces.component.Row;
@@ -32,47 +33,55 @@
private Row row;
private int processCell;
+
+ private String baseClientId;
+
+ private boolean isRowStart;
+
+ private LinkedList<String> elements;
- private String dataTableId;
-
- private boolean isLastColumn;
-
- private boolean isRowStart;
-
-
+
public RowHolder(FacesContext context, Row row) {
- this(context, row, 0, true, ((UIComponent)row).getClientId(context));
+ this(context, row, 0, true);
}
-
- public RowHolder(FacesContext context, String dataTableId, Row row) {
- this(context, row, 0, true, dataTableId);
- }
-
- public RowHolder(FacesContext context, Row row, int processCell, boolean isRowStart,
String dataTableId) {
+ public RowHolder(FacesContext context, Row row, int processCell, boolean isRowStart)
{
super(context);
this.row = row;
this.processCell = processCell;
- this.isRowStart = isRowStart;
- this.dataTableId = dataTableId;
+ this.baseClientId = row.getClientId(context);
+ this.elements = new LinkedList<String>();
}
+
+ public String remove() {
+ return elements.pop();
+ }
+ public void add(String htmlTag) {
+ elements.push(htmlTag);
+ }
- public Row getRow() {
- return this.row;
+ public String getCurrentElement() {
+ return elements.getFirst();
}
+
+ public boolean isEmpty() {
+ return elements.isEmpty();
+ }
- public String getDataTableId() {
- return dataTableId;
+ public String getBaseClientId() {
+ return baseClientId;
}
- public void setDataTableId(String dataTableId) {
- this.dataTableId = dataTableId;
+ public void setBaseClientId(String baseClientId) {
+ this.baseClientId = baseClientId;
}
+
+ public Row getRow() {
+ return this.row;
+ }
-
-
public int getProcessCell() {
return processCell;
}
@@ -81,18 +90,10 @@
this.processCell = 0;
}
- public void nextCell(){
- processCell++;
+ public int nextCell(){
+ return processCell++;
}
-
- public boolean isLastColumn() {
- return isLastColumn;
- }
-
- public void lastColumn(boolean lastColumn) {
- this.isLastColumn = lastColumn;
- }
-
+
public boolean isRowStart() {
return isRowStart;
}
@@ -100,5 +101,4 @@
public void setRowStart(boolean isRowStart) {
this.isRowStart = isRowStart;
}
-
}
Modified:
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java
===================================================================
---
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java 2010-05-24
22:53:25 UTC (rev 17224)
+++
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java 2010-05-25
08:02:50 UTC (rev 17225)
@@ -100,18 +100,19 @@
}
@Override
- public void encodeRow(RowHolderBase holder) throws IOException {
+ public void encodeRow(ResponseWriter writer, FacesContext context, RowHolderBase
holder) throws IOException {
RowHolder rowHolder = (RowHolder)holder;
Row row = rowHolder.getRow();
+
+ rowHolder.setRowStart(true);
Iterator<UIComponent> components = row.columns();
- FacesContext context = rowHolder.getContext();
- ResponseWriter writer = context.getResponseWriter();
-
while(components.hasNext()) {
- UIColumn column = (UIColumn)components.next();
- rowHolder.lastColumn(!components.hasNext());
- encodeColumn(context, column, writer, rowHolder);
+ encodeColumn(context, writer, (UIColumn)components.next(), rowHolder);
}
+
+ if(!rowHolder.isEmpty()) {
+ encodeRowEnd(writer, context, (UISubTable)row);
+ }
}
@Override
Modified: root/ui-sandbox/tables/trunk/ui/src/main/resources/META-INF/tables.taglib.xml
===================================================================
---
root/ui-sandbox/tables/trunk/ui/src/main/resources/META-INF/tables.taglib.xml 2010-05-24
22:53:25 UTC (rev 17224)
+++
root/ui-sandbox/tables/trunk/ui/src/main/resources/META-INF/tables.taglib.xml 2010-05-25
08:02:50 UTC (rev 17225)
@@ -25,7 +25,7 @@
</tag>
<tag>
- <tag-name>colGroup</tag-name>
+ <tag-name>columnGroup</tag-name>
<component>
<component-type>org.richfaces.ColumnGroup</component-type>
<renderer-type>org.richfaces.ColumnGroupRenderer</renderer-type>