Author: abelevich
Date: 2010-05-25 07:18:50 -0400 (Tue, 25 May 2010)
New Revision: 17229
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/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/DataTableRenderer.java
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/DataTableRowsRenderer.java
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java
Log:
small fixes
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-25
10:24:18 UTC (rev 17228)
+++
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java 2010-05-25
11:18:50 UTC (rev 17229)
@@ -39,7 +39,11 @@
*
*/
public abstract class AbstractRowsRenderer extends RendererBase implements DataVisitor {
+
+ public abstract void encodeRow(ResponseWriter writer, FacesContext facesContext,
RowHolderBase rowHolder) throws IOException;
+ public abstract RowHolderBase createRowHolder(FacesContext context, UIComponent
component);
+
public DataVisitResult process(FacesContext facesContext, Object rowKey, Object
argument) {
RowHolderBase holder = (RowHolderBase) argument;
Row row = holder.getRow();
@@ -58,8 +62,6 @@
protected void encodeRows(FacesContext facesContext, RowHolderBase rowHolder) {
rowHolder.getRow().walk(facesContext, this, rowHolder);
}
-
- public abstract void encodeRow(ResponseWriter writer, FacesContext facesContext,
RowHolderBase rowHolder) throws IOException;
@Override
protected void doEncodeChildren(ResponseWriter writer, FacesContext facesContext,
UIComponent component) throws IOException {
@@ -68,20 +70,13 @@
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));
- }
-
public boolean getRendersChildren() {
return true;
}
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-25
10:24:18 UTC (rev 17228)
+++
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableBaseRenderer.java 2010-05-25
11:18:50 UTC (rev 17229)
@@ -45,14 +45,20 @@
public static final String CELL_ELEMENT_KEY = "cellElement";
+ public static final String BREAK_BEFORE_STRING = "breakBefore";
+ public static final String ROWSPAN_STRING = "rowspan";
+
+ public static final String COLSPAN_STRING = "colspan";
+
+
public RowHolder encodeColumn(FacesContext context, ResponseWriter writer, UIColumn
component, RowHolder rowHolder) throws IOException {
String parentId = rowHolder.getBaseClientId();
if (component instanceof org.richfaces.component.UIColumn) {
Map<String, Object> attributes = component.getAttributes();
- if (Boolean.TRUE.equals(attributes.get("breakBefore")) &&
rowHolder.getProcessCell() != 0) {
+ if (Boolean.TRUE.equals(attributes.get(BREAK_BEFORE_STRING)) &&
rowHolder.getProcessCell() != 0) {
encodeRowEnd(writer, context, component);
rowHolder.remove();
rowHolder.nextRow();
@@ -89,14 +95,14 @@
if (component instanceof org.richfaces.component.UIColumn) {
Map<String, Object> attributes = component.getAttributes();
- int rowspan = (Integer) attributes.get("rowspan");
+ int rowspan = (Integer) attributes.get(ROWSPAN_STRING);
if (rowspan != Integer.MIN_VALUE) {
- writer.writeAttribute("rowspan", Integer.valueOf(rowspan),
null);
+ writer.writeAttribute(ROWSPAN_STRING, Integer.valueOf(rowspan), null);
}
- int colspan = (Integer) attributes.get("colspan");
+ int colspan = (Integer) attributes.get(COLSPAN_STRING);
if (colspan != Integer.MIN_VALUE) {
- writer.writeAttribute("colspan", Integer.valueOf(colspan),
null);
+ writer.writeAttribute(COLSPAN_STRING, Integer.valueOf(colspan), null);
}
}
}
@@ -199,6 +205,11 @@
}
}
+ protected boolean isEmpty(String style) {
+ return !((style != null) && (style.trim().length() != 0));
+ }
+
+
protected int getColumnsCount(Iterator<UIComponent> col) {
int count = 0;
int currentLength = 0;
@@ -220,13 +231,13 @@
} else if (component instanceof org.richfaces.component.UIColumn) {
// For new row, save length of previsous.
Map<String, Object> attributes = component.getAttributes();
- if (Boolean.TRUE.equals(attributes.get("breakBefore"))) {
+ if (Boolean.TRUE.equals(attributes.get(BREAK_BEFORE_STRING))) {
if (currentLength > count) {
count = currentLength;
}
currentLength = 0;
}
- Integer colspan = (Integer) attributes.get("colspan");
+ Integer colspan = (Integer) attributes.get(COLSPAN_STRING);
// Append colspan of this column
if (null != colspan && colspan.intValue() !=
Integer.MIN_VALUE) {
currentLength += colspan.intValue();
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-25
10:24:18 UTC (rev 17228)
+++
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2010-05-25
11:18:50 UTC (rev 17229)
@@ -34,18 +34,11 @@
import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.richfaces.component.Row;
import org.richfaces.component.UIDataTableBase;
-import org.richfaces.component.UISubTable;
@ResourceDependencies(value = { @ResourceDependency(library = "javax.faces",
name = "jsf.js"),
@ResourceDependency(name = "jquery.js"), @ResourceDependency(name =
"richfaces.js"), @ResourceDependency(name = "richfaces-event.js")})
public abstract class AbstractTableRenderer extends AbstractTableBaseRenderer implements
MetaComponentRenderer {
- public static final String ROW_CLASS = "rowClass";
-
- public static final String FIRST_ROW_CLASS = "firstRowClass";
-
- public static final String CELL_CLASS = "cellClass";
-
@Override
protected void doDecode(FacesContext context, UIComponent component) {
decodeSortingFiltering(context, component);
@@ -71,6 +64,7 @@
return result;
}
+ //TODO: anton -> refactor this
protected boolean isEncodeHeaders(UIDataTableBase table) {
return table.isColumnFacetPresent("header") ||
isHeaderFactoryColumnAttributePresent(table, "sortBy")
|| isHeaderFactoryColumnAttributePresent(table, "comparator")
@@ -85,18 +79,12 @@
return count;
}
- //TODO: anton - remove?
- public void encodeTableStructure(ResponseWriter writer, FacesContext context,
UIDataTableBase dataTable) throws IOException {
- }
-
public void encodeTableFacets(ResponseWriter writer, FacesContext context,
UIDataTableBase dataTable) throws IOException {
Object key = dataTable.getRowKey();
dataTable.captureOrigValue(context);
dataTable.setRowKey(context, null);
- encodeTableStructure(writer, context, dataTable);
-
String id = dataTable.getClientId(context);
setupTableStartElement(context, dataTable);
encodeHeaderFacet(writer, context, dataTable, false);
@@ -109,13 +97,11 @@
String cellClass = getCellSkinClass();
String firstClass = getFirstRowSkinClass();
- rowClass = mergeStyleClasses("rowClass", rowClass, dataTable);
- cellClass = mergeStyleClasses("cellClass", cellClass, dataTable);
- firstClass = mergeStyleClasses("firstRowClass", firstClass,
dataTable);
+ rowClass = mergeStyleClasses(ROW_CLASS_KEY, rowClass, dataTable);
+ cellClass = mergeStyleClasses(CELL_CLASS_KEY, cellClass, dataTable);
+ firstClass = mergeStyleClasses(FIRST_ROW_CLASS_KEY, firstClass, dataTable);
saveRowStyles(context,id, firstClass, rowClass, cellClass);
-
-
}
@Override
@@ -161,7 +147,6 @@
}
}
-
public void encodeTableStart(ResponseWriter writer, FacesContext context,
UIDataTableBase component) throws IOException {
writer.startElement(HTML.TABLE_ELEMENT, component);
@@ -183,8 +168,7 @@
writer.endElement(HTML.TD_ELEM);
writer.endElement(HTML.TR_ELEMENT);
writer.endElement(HTML.TBODY_ELEMENT);
-
-
+
writer.endElement(HTML.TABLE_ELEMENT);
}
@@ -195,17 +179,8 @@
throws IOException {
writer.startElement(HTML.TBODY_ELEMENT, dataTable);
getUtils().encodeId(context, dataTable);
-
- String predefinedStyles = null;
- if (dataTable instanceof UISubTable) {
- UISubTable subTable = (UISubTable) dataTable;
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, getTableSkinClass(), null);
- if (!subTable.isExpanded()) {
- predefinedStyles = "display: none;";
- }
- }
-
- encodeStyle(writer, context, dataTable, predefinedStyles);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, getTableSkinClass(), null);
+ encodeStyle(writer, context, dataTable, null);
}
public void encodeTableBodyEnd(ResponseWriter writer, FacesContext context,
UIDataTableBase component) throws IOException {
@@ -432,15 +407,16 @@
getUtils().encodeAttribute(context, column, "colspan");
HeaderEncodeStrategy strategy = getHeaderEncodeStrategy(column, facetName);
- strategy.encodeBegin(context, writer, column, facetName);
-
- UIComponent facet = column.getFacet(facetName);
- if (facet != null && facet.isRendered()) {
- facet.encodeAll(context);
- }
-
- strategy.encodeEnd(context, writer, column, facetName);
-
+ if(strategy != null) {
+ strategy.encodeBegin(context, writer, column, facetName);
+
+ UIComponent facet = column.getFacet(facetName);
+ if (facet != null && facet.isRendered()) {
+ facet.encodeAll(context);
+ }
+
+ strategy.encodeEnd(context, writer, column, facetName);
+ }
writer.endElement(element);
}
}
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-25
10:24:18 UTC (rev 17228)
+++
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java 2010-05-25
11:18:50 UTC (rev 17229)
@@ -83,7 +83,7 @@
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);
@@ -110,6 +110,7 @@
}
rowHolder.setRowStart(true);
+
Iterator<UIComponent> components = row.columns();
while (components.hasNext()) {
UIComponent child = components.next();
@@ -125,7 +126,7 @@
}
child.encodeAll(context);
} else if (child instanceof UIColumn) {
- rowHolder = encodeColumn(context, writer, (UIColumn) child, rowHolder);
+ encodeColumn(context, writer, (UIColumn) child, rowHolder);
if(!components.hasNext()) {
encodeRowEnd(writer, context, (UIColumn)child);
rowHolder.remove();
@@ -133,15 +134,12 @@
}
}
}
-
protected boolean containRowChildren(UIDataTable dataTable) {
Iterator<UIComponent> iterator = dataTable.columns();
while (iterator.hasNext()) {
UIComponent child = iterator.next();
- if(child instanceof Row) {
- return true;
- }
+ if(child instanceof Row) return true;
}
return false;
}
@@ -207,112 +205,27 @@
protected class RichHeaderEncodeStrategy implements HeaderEncodeStrategy {
public void encodeBegin(FacesContext context, ResponseWriter writer, UIComponent
component, String facetName) throws IOException {
-
org.richfaces.component.UIColumn column = (org.richfaces.component.UIColumn)
component;
-
+
writer.writeAttribute("id", column.getClientId(context), null);
boolean sortableColumn = isSortable(column);
-
-// if (sortableColumn && column.isSelfSorted()) {
-// FormUtil.throwEnclFormReqExceptionIfNeed(context, column.getParent());
-// TODO: anton - add "selfSorted = true" behavior;
-// writer.writeAttribute(HTML.ONCLICK_ATTRIBUTE, createFunction(context,
col) , null);
-// writer.writeAttribute(HTML.STYLE_ATTRIBUTE, "cursor:
pointer;", null);
-// }
-
-// writer.startElement(HTML.DIV_ELEM, column);
-// writer.writeAttribute(HTML.ID_ATTRIBUTE, clientId + SORT_DIV, null);
-
if (sortableColumn) {
+ //TODO :anton -> should component be selfSorted
writer.startElement(HTML.SPAN_ELEM, column);
writer.writeAttribute(HTML.CLASS_ATTRIBUTE,
"rich-table-sortable-header", null);
}
}
public void encodeEnd(FacesContext context, ResponseWriter writer, UIComponent
component, String facetName) throws IOException {
- /*
+
org.richfaces.component.UIColumn column = (org.richfaces.component.UIColumn)
component;
-
if(isSortable(column)) {
-
- boolean enableAsc, enableDesc, enableUnsort;
-
- SortOrder sortOrder = column.getSortOrder();
-
- if(SortOrder.ASCENDING.equals(sortOrder)) {
- enableAsc = true;
- } else if(SortOrder.DESCENDING.equals(sortOrder)){
- enableDesc = true;
- } else {
- enableUnsort = true;
- }
-
-// encodeSortControls(context, writer, column, enableAsc, enableDesc,
enableUnsort);
-
- //encode sorting hidden input
-
- writer.startElement(HTML.INPUT_ELEM, column);
- writer.writeAttribute(HTML.ID_ATTRIBUTE, column.getClientId(context) +
":sorting", null);
- writer.writeAttribute(HTML.NAME_ATTRIBUTE, column.getClientId(context) +
":sorting", null);
- writer.writeAttribute(HTML.TYPE_ATTR, "hidden",null);
- writer.writeAttribute(HTML.VALUE_ATTRIBUTE, sortOrder, null);
- writer.endElement(HTML.INPUT_ELEM);
-
+ writer.endElement(HTML.SPAN_ELEM);
}
-
- writer.endElement(HTML.SPAN_ELEM); */
}
public void encodeSortControls(FacesContext context, ResponseWriter writer,
org.richfaces.component.UIColumn column, boolean enableAsc, boolean enableDesc, boolean
enableUnsort) throws IOException {
- /*
- String sortIconAsc = column.getSortIconAsc();
- String sortIconDesc = column.getSortIconDesc();
- String sortIconUnsort = column.getSortIconUnsort();
-
- String clientId = column.getClientId(context);
-
- //TODO: anton - add styles attribute for sortControls
-
-
- //encode asc control
- writer.startElement(HTML.IMG_ELEMENT, column);
- writer.writeAttribute(HTML.ID_ATTRIBUTE, clientId + ":" +
Ordering.ASCENDING, null);
- writer.writeAttribute(HTML.ALT_ATTRIBUTE, "", null);
- writer.writeAttribute(HTML.SRC_ATTRIBUTE, sortIconAsc, null);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE,
"extdt-header-sort-img", null);
-
- if(!enableAsc) {
- writer.writeAttribute(HTML.STYLE_ATTRIBUTE, "display: none;",
null);
- }
-
- writer.endElement(HTML.IMG_ELEMENT);
-
- //encode desc control
- writer.startElement(HTML.IMG_ELEMENT, column);
- writer.writeAttribute(HTML.ID_ATTRIBUTE, clientId + ":" +
Ordering.DESCENDING, null);
- writer.writeAttribute(HTML.ALT_ATTRIBUTE, "", null);
- writer.writeAttribute(HTML.SRC_ATTRIBUTE, sortIconDesc, null);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE,
"extdt-header-sort-img", null);
-
- if(!enableDesc) {
- writer.writeAttribute(HTML.STYLE_ATTRIBUTE, "display: none;",
null);
- }
- writer.endElement(HTML.IMG_ELEMENT);
-
- //encode unsorted control
- writer.startElement(HTML.IMG_ELEMENT, column);
- writer.writeAttribute(HTML.ID_ATTRIBUTE, clientId + ":" +
Ordering.UNSORTED, null);
- writer.writeAttribute(HTML.ALT_ATTRIBUTE, "", null);
- writer.writeAttribute(HTML.SRC_ATTRIBUTE, sortIconUnsort, null);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE,
"extdt-header-sort-img", null);
-
- if(!enableUnsort) {
- writer.writeAttribute(HTML.STYLE_ATTRIBUTE, "display: none;",
null);
- }
-
- writer.endElement(HTML.IMG_ELEMENT);
- */
}
}
Modified:
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/DataTableRowsRenderer.java
===================================================================
---
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/DataTableRowsRenderer.java 2010-05-25
10:24:18 UTC (rev 17228)
+++
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/DataTableRowsRenderer.java 2010-05-25
11:18:50 UTC (rev 17229)
@@ -45,6 +45,13 @@
private static final String SORTING_STRING = "rich:sorting";
+ private static final String FILTER_VALUE_STRING = "filterValue";
+
+ private static final String SORT_ORDER_STRING = "sortOrder";
+
+ private static final String SORT_PRIORITY_STRING = "sortPriority";
+
+
private static final String SEPARATOR = ":";
protected void decodeSortingFiltering(FacesContext context, UIComponent component) {
@@ -71,13 +78,13 @@
for (Iterator<UIComponent> iterator = dataTableBase.columns();
iterator.hasNext();) {
UIComponent column = iterator.next();
if (values[0].equals(column.getId())) {
- updateAttribute(context, column, "filterValue",
values[1]);
+ updateAttribute(context, column, FILTER_VALUE_STRING, values[1]);
} else {
- updateAttribute(context, column, "filterValue", null);
+ updateAttribute(context, column, FILTER_VALUE_STRING, null);
}
}
} else {
- updateAttribute(context, dataTableBase.findComponent(values[0]),
"filterValue", values[1]);
+ updateAttribute(context, dataTableBase.findComponent(values[0]),
FILTER_VALUE_STRING, values[1]);
}
context.getPartialViewContext().getRenderIds().add(dataTableBase.getClientId(context)); //
TODO Use partial re-rendering here.
}
@@ -92,7 +99,7 @@
updateSortOrder(context, column, values[1]);
sortPriority.add(values[0]);
} else {
- updateAttribute(context, column, "sortOrder",
SortOrder.UNSORTED);
+ updateAttribute(context, column, SORT_ORDER_STRING,
SortOrder.UNSORTED);
}
}
} else {
@@ -104,7 +111,7 @@
}
sortPriority.add(values[0]);
}
- updateAttribute(context, dataTableBase, "sortPriority", sortPriority);
+ updateAttribute(context, dataTableBase, SORT_PRIORITY_STRING, sortPriority);
context.getPartialViewContext().getRenderIds().add(dataTableBase.getClientId(context)); //
TODO Use partial re-rendering here.
}
@@ -114,11 +121,11 @@
sortOrder = SortOrder.valueOf(value);
} catch (IllegalArgumentException e) {
// If value isn't name of enum constant of SortOrder, toggle sortOrder of
column.
- if
(SortOrder.ASCENDING.equals(component.getAttributes().get("sortOrder"))) {
+ if
(SortOrder.ASCENDING.equals(component.getAttributes().get(SORT_ORDER_STRING))) {
sortOrder = SortOrder.DESCENDING;
}
}
- updateAttribute(context, component, "sortOrder", sortOrder);
+ updateAttribute(context, component, SORT_ORDER_STRING, sortOrder);
}
protected void updateAttribute(FacesContext context, UIComponent component, String
attribute, Object value) {
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-25
10:24:18 UTC (rev 17228)
+++
root/ui-sandbox/tables/trunk/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java 2010-05-25
11:18:50 UTC (rev 17229)
@@ -95,6 +95,19 @@
}
@Override
+ public void encodeTableBodyStart(ResponseWriter writer, FacesContext context,
UIDataTableBase dataTable)
+ throws IOException {
+
+ UISubTable subTable = (UISubTable) dataTable;
+ writer.startElement(HTML.TBODY_ELEMENT, subTable);
+ getUtils().encodeId(context, subTable);
+
+ String predefinedStyles = !subTable.isExpanded() ? "display: none;" :
null;
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, getTableSkinClass(), null);
+ encodeStyle(writer, context, dataTable, predefinedStyles);
+ }
+
+ @Override
public RowHolderBase createRowHolder(FacesContext context, UIComponent component) {
return new RowHolder(context, (UISubTable)component);
}