Author: abelevich
Date: 2010-01-11 08:42:30 -0500 (Mon, 11 Jan 2010)
New Revision: 16255
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIColumn.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIColumnGroup.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIDataTableBase.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlColumn.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlColumnGroup.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlSubTable.java
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/DataTableRenderer.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:
refactor ...
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIColumn.java
===================================================================
---
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIColumn.java 2010-01-11
13:40:25 UTC (rev 16254)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIColumn.java 2010-01-11
13:42:30 UTC (rev 16255)
@@ -1,25 +1,77 @@
package org.richfaces.component;
+import javax.el.MethodExpression;
+
import org.richfaces.model.Ordering;
public abstract class UIColumn extends javax.faces.component.UIColumn implements Column
{
+
+ public abstract void setRowspan(int rowspan);
+ public abstract int getRowspan();
- private Ordering sortOrder;
+ public abstract void setColspan(int colspan);
+ public abstract int getColspan();
- public abstract int getRowspan();
+ public abstract void setSortEvent(String sortEvent);
+ public abstract String getSortEvent();
+
+ //TODO: anton - add get/set sortIcon Asc/Desc/Unsort methods to the dataTable
+ public abstract void setSortIconAsc(String sortIcon);
+ public abstract String getSortIconAsc();
+
+ public abstract void setSortIconDesc(String sortIcon);
+ public abstract String getSortIconDesc();
+
+ public abstract void setSortIconUnsort(String sortIcon);
+ public abstract String getSortIconUnsort();
+
- public abstract void setRowspan(int rowspan);
+
+ /**
+ * SortOrder is an enumeration of the possible sort orderings.
+ *
+ * @param sortOrder
+ */
+
+ //TODO nick - use annotation from Swing?
+ //TODO anton - do you mean using javax.swing.SortOrder instead
org.richfaces.model.Orderinbg???
+ public abstract void setSortOrder(Ordering sortOrder);
+ public abstract Ordering getSortOrder();
+
+ /**
+ * expression used for column sorting.
+ * literal value is treated as property of data object
+ * EL-expression is evaluated on every data row
+ * @param sortExpression
+ */
+ //TODO nick - use ValueExpression
+ public abstract void setSortExpression(String sortExpression);
+ public abstract String getSortExpression();
+
+
- public abstract int getColspan();
+ //TODO nick - "filterExpression" is missing
+
+ public abstract void setFilterMethod(MethodExpression methodExpression);
+ public abstract MethodExpression getFilterMethod();
- public abstract void setColspan(int colspan);
+ //TODO nick - make this java.lang.Object. Use case: Long or Enum used as filtering
criteria
+ public abstract void setFilterValue(String filterValue);
+ public abstract String getFilterValue();
- //TODO nick - implement in the proper way
- public Ordering getSortOrder() {
- return null;
- }
+ public abstract void setSelfSorted(boolean selfSorted);
+ public abstract boolean isSelfSorted();
- public void setSortOrder(Ordering sortOrder) {
-
- }
+ /**
+ * Out this column on new row
+ * @parameter
+ * @return the acceptClass
+ */
+ public abstract boolean isBreakBefore();
+
+ /**
+ * @param newBreakBefore the value to set
+ */
+ public abstract void setBreakBefore(boolean breakBefore);
+
}
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIColumnGroup.java
===================================================================
---
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIColumnGroup.java 2010-01-11
13:40:25 UTC (rev 16254)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIColumnGroup.java 2010-01-11
13:42:30 UTC (rev 16255)
@@ -44,10 +44,6 @@
return new ColumnsIterator(this);
}
- public boolean isBreakBefore() {
- return true;
- }
-
public void setBreakBefore(boolean newBreakBefore) {
throw new IllegalStateException("Property 'breakBefore' for subtable
is read-only");
}
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIDataTableBase.java
===================================================================
---
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIDataTableBase.java 2010-01-11
13:40:25 UTC (rev 16254)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIDataTableBase.java 2010-01-11
13:42:30 UTC (rev 16255)
@@ -17,7 +17,6 @@
@Override
protected Iterator<UIComponent> dataChildren() {
-
return new DataIterator(this);
}
@@ -30,10 +29,14 @@
}
@Override
- public boolean getRendersChildren() {
+ public boolean getRendersChildren() {
return true;
- }
+ }
+ public abstract String getSortMode();
+
+ public abstract void setSortMode(String sortMode);
+
public abstract String getTableSkinClass();
public abstract String getFirstRowSkinClass();
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlColumn.java
===================================================================
---
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlColumn.java 2010-01-11
13:40:25 UTC (rev 16254)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlColumn.java 2010-01-11
13:42:30 UTC (rev 16255)
@@ -8,7 +8,7 @@
public class HtmlColumn extends UIColumn {
enum PropertyKeys {
- breakBefore, rowspan, colspan
+ breakBefore, rowspan, colspan, sortEvent, sortOrder, selfSorted, sortBy,
sortIconAsc, sortIconDesc, sortIconUnsort
}
public static final String COMPONENT_TYPE = "org.richfaces.Column";
@@ -41,12 +41,34 @@
getStateHelper().put(PropertyKeys.rowspan, Integer.valueOf(rowspan));
}
+ @Override
+ public String getSortEvent() {
+ //TODO: anton - pass correct event name to the client ...
+ return (String)getStateHelper().eval(PropertyKeys.sortEvent, "click");
+ }
+
+ @Override
+ public Ordering getSortOrder() {
+ return (Ordering)
getStateHelper().eval(PropertyKeys.sortOrder,Ordering.DESCENDING);
+ }
+
+ @Override
+ public void setSortEvent(String sortEvent) {
+ getStateHelper().put(PropertyKeys.sortEvent, sortEvent);
+ }
+
+ @Override
+ public void setSortOrder(Ordering sortOrder) {
+ getStateHelper().put(PropertyKeys.sortOrder, sortOrder);
+ }
+
public MethodExpression getFilterMethod() {
// TODO Auto-generated method stub
return null;
}
public String getFilterValue() {
+ // TODO Auto-generated method stub
return null;
}
@@ -55,16 +77,15 @@
return null;
}
- public Ordering getSortOrder() {
- // TODO Auto-generated method stub
- return null;
- }
-
public boolean isSelfSorted() {
- // TODO Auto-generated method stub
- return false;
+ return (Boolean)getStateHelper().eval(PropertyKeys.selfSorted, true);
}
+
+ public void setSelfSorted(boolean selfSorted) {
+ getStateHelper().put(PropertyKeys.selfSorted, selfSorted);
+ }
+
public boolean isSortable() {
// TODO Auto-generated method stub
return false;
@@ -72,31 +93,60 @@
public void setFilterMethod(MethodExpression methodExpression) {
// TODO Auto-generated method stub
-
+
}
public void setFilterValue(String filterValue) {
// TODO Auto-generated method stub
+
+ }
+ public void setSortExpression(String sortExpression) {
+ // TODO Auto-generated method stub
+
}
- public void setSelfSorted(boolean selfSorted) {
+ public void setSortable(boolean sortable) {
// TODO Auto-generated method stub
+
+ }
+ public Object getSortBy() {
+ return getStateHelper().eval(PropertyKeys.sortBy);
}
- public void setSortExpression(String sortExpression) {
- // TODO Auto-generated method stub
+ public void setSortBy(Object sortBy) {
+ getStateHelper().put(PropertyKeys.sortBy, sortBy);
+ }
+ @Override
+ public String getSortIconAsc() {
+ return (String)getStateHelper().get(PropertyKeys.sortIconAsc);
}
- public void setSortOrder(Ordering sortOrder) {
- // TODO Auto-generated method stub
+ @Override
+ public String getSortIconDesc() {
+ return (String)getStateHelper().get(PropertyKeys.sortIconDesc);
+ }
+ @Override
+ public String getSortIconUnsort() {
+ return (String)getStateHelper().get(PropertyKeys.sortIconUnsort);
}
- public void setSortable(boolean sortable) {
- // TODO Auto-generated method stub
+ @Override
+ public void setSortIconAsc(String sortIcon) {
+ getStateHelper().put(PropertyKeys.sortIconAsc, sortIcon);
}
+ @Override
+ public void setSortIconDesc(String sortIcon) {
+ getStateHelper().put(PropertyKeys.sortIconDesc, sortIcon);
+ }
+
+ @Override
+ public void setSortIconUnsort(String sortIcon) {
+ getStateHelper().put(PropertyKeys.sortIconUnsort, sortIcon);
+ }
+
}
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlColumnGroup.java
===================================================================
---
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlColumnGroup.java 2010-01-11
13:40:25 UTC (rev 16254)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlColumnGroup.java 2010-01-11
13:42:30 UTC (rev 16255)
@@ -1,72 +1,9 @@
package org.richfaces.component.html;
-import javax.el.MethodExpression;
-
import org.richfaces.component.UIColumnGroup;
-import org.richfaces.model.Ordering;
public class HtmlColumnGroup extends UIColumnGroup {
- public MethodExpression getFilterMethod() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public String getFilterValue() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public String getSortExpression() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public Ordering getSortOrder() {
- // TODO Auto-generated method stub
- return null;
- }
-
- public boolean isSelfSorted() {
- // TODO Auto-generated method stub
- return false;
- }
-
- public boolean isSortable() {
- // TODO Auto-generated method stub
- return false;
- }
-
- public void setFilterMethod(MethodExpression methodExpression) {
- // TODO Auto-generated method stub
-
- }
-
- public void setFilterValue(String filterValue) {
- // TODO Auto-generated method stub
-
- }
-
- public void setSelfSorted(boolean selfSorted) {
- // TODO Auto-generated method stub
-
- }
-
- public void setSortExpression(String sortExpression) {
- // TODO Auto-generated method stub
-
- }
-
- public void setSortOrder(Ordering sortOrder) {
- // TODO Auto-generated method stub
-
- }
-
- public void setSortable(boolean sortable) {
- // TODO Auto-generated method stub
-
- }
-
@Override
public String getFamily() {
return COMPONENT_FAMILY;
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlSubTable.java
===================================================================
---
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlSubTable.java 2010-01-11
13:40:25 UTC (rev 16254)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlSubTable.java 2010-01-11
13:42:30 UTC (rev 16255)
@@ -1,50 +1,24 @@
package org.richfaces.component.html;
-import javax.el.MethodExpression;
-
import org.richfaces.component.UISubTable;
-import org.richfaces.model.Ordering;
public class HtmlSubTable extends UISubTable {
- public MethodExpression getFilterMethod() {
- return null;
+ @Override
+ public String getFamily() {
+ return COMPONENT_FAMILY;
}
- public String getFilterValue() {
+ @Override
+ public String getSortMode() {
+ // TODO Auto-generated method stub
return null;
}
- public Ordering getSortOrder() {
- return null;
- }
-
- public boolean isSelfSorted() {
- return false;
- }
-
- public boolean isSortable() {
- return false;
- }
-
- public void setFilterMethod(MethodExpression methodExpression) {
- }
-
- public void setFilterValue(String filterValue) {
- }
-
- public void setSelfSorted(boolean selfSorted) {
- }
-
- public void setSortOrder(Ordering sortOrder) {
- }
-
- public void setSortable(boolean sortable) {
- }
-
@Override
- public String getFamily() {
- return COMPONENT_FAMILY;
+ public void setSortMode(String sortMode) {
+ // TODO Auto-generated method stub
+
}
}
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-11
13:40:25 UTC (rev 16254)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java 2010-01-11
13:42:30 UTC (rev 16255)
@@ -51,7 +51,7 @@
try {
encodeRow(holder);
} catch (IOException e) {
- // TODO: seems we need add throws IOException ???
+ // TODO: anton - seems we need add throws IOException ???
}
holder.nextRow();
return DataVisitResult.CONTINUE;
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-11
13:40:25 UTC (rev 16254)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2010-01-11
13:42:30 UTC (rev 16255)
@@ -91,8 +91,8 @@
count = currentLength;
}
currentLength = 0;
- } else if (component instanceof Column) {
- Column column = (Column) component;
+ } else if (component instanceof org.richfaces.component.UIColumn) {
+ org.richfaces.component.UIColumn column =
(org.richfaces.component.UIColumn) component;
// For new row, save length of previsous.
if (column.isBreakBefore()) {
if (currentLength > count) {
@@ -168,8 +168,11 @@
public void encodeTableEnd(ResponseWriter writer, FacesContext context,
UIDataTableBase component) throws IOException {
writer.endElement(HTML.TABLE_ELEMENT);
+ encodeClientScript(writer, context, component);
}
+ public abstract void encodeClientScript(ResponseWriter writer, FacesContext context,
UIDataTableBase component) throws IOException;
+
public void encodeTableBodyStart(ResponseWriter writer, FacesContext context,
UIDataTableBase dataTable)
throws IOException {
writer.startElement(HTML.TBOBY_ELEMENT, dataTable);
@@ -319,7 +322,7 @@
}
- protected void encodeColumnFacet(FacesContext context, ResponseWriter writer,
UIDataTableBase dataTableBase, 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 id = dataTableBase.getClientId(context);
@@ -396,6 +399,5 @@
public abstract HeaderEncodeStrategy getHeaderEncodeStrategy(UIComponent column,
String tableFacetName);
-
public abstract boolean containsThead();
}
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-11
13:40:25 UTC (rev 16254)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java 2010-01-11
13:42:30 UTC (rev 16255)
@@ -1,6 +1,7 @@
package org.richfaces.renderkit;
import java.io.IOException;
+import java.util.HashMap;
import java.util.Iterator;
import javax.faces.application.ResourceDependencies;
@@ -10,12 +11,14 @@
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
+import org.ajax4jsf.javascript.JSFunction;
import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.richfaces.component.Row;
import org.richfaces.component.UIDataTable;
import org.richfaces.component.UIDataTableBase;
import org.richfaces.component.UISubTable;
import org.richfaces.component.util.FormUtil;
+import org.richfaces.model.Ordering;
@ResourceDependencies( { @ResourceDependency(library = "javax.faces", name =
"jsf-uncompressed.js"),
@ResourceDependency(name = "jquery.js"), @ResourceDependency(name =
"richfaces.js"),
@@ -56,7 +59,7 @@
@Override
public RowHolder createRowHolder(FacesContext context, UIComponent component) {
- return new RowHolder(context, component.getClientId(context),
(UIDataTable)component);
+ return new RowHolder(context, (UIDataTable)component);
}
public void encodeRow(RowHolderBase holder) throws IOException {
@@ -165,23 +168,22 @@
protected class RichHeaderEncodeStrategy implements HeaderEncodeStrategy {
- public void encodeBegin(FacesContext context, ResponseWriter writer, UIComponent
column, String facetName)
- throws IOException {
+ public void encodeBegin(FacesContext context, ResponseWriter writer, UIComponent
component, String facetName) throws IOException {
- org.richfaces.component.UIColumn col = (org.richfaces.component.UIColumn)
column;
+ org.richfaces.component.UIColumn column = (org.richfaces.component.UIColumn)
component;
+
+ writer.writeAttribute("id", column.getClientId(context), null);
- String columnClientId = col.getClientId(context);
- String clientId = columnClientId + facetName;
- writer.writeAttribute("id", clientId, null);
- boolean sortableColumn = isSortable(col);
-
- if (sortableColumn && col.isSelfSorted()) {
- FormUtil.throwEnclFormReqExceptionIfNeed(context, column.getParent());
- writer.writeAttribute(HTML.ONCLICK_ATTRIBUTE, createFunction(context,
col) , null);
- writer.writeAttribute(HTML.STYLE_ATTRIBUTE, "cursor: pointer;",
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.startElement(HTML.DIV_ELEM, column);
// writer.writeAttribute(HTML.ID_ATTRIBUTE, clientId + SORT_DIV, null);
if (sortableColumn) {
@@ -190,20 +192,75 @@
}
}
- public void encodeEnd(FacesContext context, ResponseWriter writer, UIComponent
column, String facetName)
- throws IOException {
+ 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=false, enableDesc = false, enableUnsort = false;
+
+ if(Ordering.ASCENDING.equals(column.getSortOrder())) {
+ enableAsc = true;
+ } else if(Ordering.DESCENDING.equals(column.getSortOrder())){
+ enableDesc = true;
+ } else {
+ enableUnsort = true;
+ }
+
+ encodeSortControls(context, writer, column, enableAsc, enableDesc,
enableUnsort);
+ }
+
+ 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();
+
+ //TODO: anton - add styles attribute for sortControls
+
+ //encode asc control
+ writer.startElement(HTML.IMG_ELEMENT, column);
+ writer.writeAttribute(HTML.ID_ATTRIBUTE, column.getClientId(context) +
":" + 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, column.getClientId(context) +
":" + 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);
- public boolean isSortable(UIColumn column) {
- return (column.getAttributes().get("sortBy") != null);
+ //encode unsorted control
+ writer.startElement(HTML.IMG_ELEMENT, column);
+ writer.writeAttribute(HTML.ID_ATTRIBUTE, column.getClientId(context) +
":" + 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);
}
-
- public String createFunction(FacesContext context,
org.richfaces.component.UIColumn column) {
- //build script
- return null;
- }
-
+
}
protected class SimpleHeaderEncodeStrategy implements HeaderEncodeStrategy {
@@ -223,4 +280,51 @@
public boolean containsThead() {
return true;
}
+
+ public boolean isSortable(UIColumn column) {
+ return (column.getAttributes().get("sortBy") != null);
+ }
+
+ @Override
+ public void encodeClientScript(ResponseWriter writer, FacesContext context,
UIDataTableBase dataTable) throws IOException {
+
+ writer.startElement(HTML.SCRIPT_ELEM, dataTable);
+ writer.writeAttribute(HTML.TYPE_ATTR, "text/javascript", null);
+
+ JSFunction function = new JSFunction("new RichFaces.ui.DataTable");
+ function.addParameter(dataTable.getClientId(context));
+
+ HashMap<String, Object> options = new HashMap<String, Object>();
+ options.put("sortMode", dataTable.getSortMode());
+
+
+ HashMap<String, Object> columnsOption = new HashMap<String,
Object>();
+
+ Iterator<UIComponent> columns = dataTable.columns();
+ while (columns.hasNext()) {
+
+ UIComponent component = (UIComponent) columns.next();
+ HashMap<String, Object> columnOption = new HashMap<String,
Object>();
+
+ if(component instanceof org.richfaces.component.UIColumn) {
+ org.richfaces.component.UIColumn column =
(org.richfaces.component.UIColumn)component;
+ columnsOption.put(column.getClientId(context), columnOption);
+
+ HashMap<String, Object> sorting = new HashMap<String,
Object>();
+ sorting.put("sortOrder", column.getSortOrder());
+ sorting.put("sortEvent", column.getSortEvent());
+ sorting.put("sortable", isSortable(column));
+ columnOption.put("sorting", sorting);
+ }
+
+
+ }
+
+ options.put("columns", columnsOption);
+
+ function.addParameter(options);
+
+ writer.writeText(function.toScript(), null);
+ writer.endElement(HTML.SCRIPT_ELEM);
+ }
}
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-11
13:40:25 UTC (rev 16254)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java 2010-01-11
13:42:30 UTC (rev 16255)
@@ -389,4 +389,10 @@
public HeaderEncodeStrategy getHeaderEncodeStrategy(UIComponent column, String
tableFacetName) {
return null;
}
+
+ @Override
+ public void encodeClientScript(ResponseWriter writer, FacesContext context,
UIDataTableBase component) {
+ // TODO Auto-generated method stub
+
+ }
}
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-11
13:40:25 UTC (rev 16254)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/RowHolder.java 2010-01-11
13:42:30 UTC (rev 16255)
@@ -1,5 +1,6 @@
package org.richfaces.renderkit;
+import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import org.richfaces.component.Row;
@@ -21,11 +22,15 @@
return this.row;
}
- public RowHolder(FacesContext context, String dataTableId, Row row) {
- this(context, row, 0, true);
- this.dataTableId = dataTableId;
+ public RowHolder(FacesContext context,String dataTableId, Row row) {
+ this(context, row, 0, true, dataTableId);
+
}
+ public RowHolder(FacesContext context, Row row) {
+ this(context, row, 0, true, ((UIComponent)row).getClientId(context));
+ }
+
public String getDataTableId() {
return dataTableId;
}
@@ -34,11 +39,12 @@
this.dataTableId = dataTableId;
}
- public RowHolder(FacesContext context, Row row, int processCell, boolean isRowStart)
{
+ public RowHolder(FacesContext context, Row row, int processCell, boolean isRowStart,
String dataTableId) {
super(context);
this.row = row;
this.processCell = processCell;
this.isRowStart = isRowStart;
+ this.dataTableId = dataTableId;
}
public int getProcessCell() {
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-11
13:40:25 UTC (rev 16254)
+++
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/SubTableRenderer.java 2010-01-11
13:42:30 UTC (rev 16255)
@@ -42,7 +42,7 @@
@Override
public RowHolderBase createRowHolder(FacesContext context, UIComponent component) {
- return new RowHolder(context, component.getClientId(context),
(UISubTable)component);
+ return new RowHolder(context, (UISubTable)component);
}
@Override
@@ -77,4 +77,10 @@
// TODO implement column header facet
return null;
}
+
+ @Override
+ public void encodeClientScript(ResponseWriter writer, FacesContext context,
UIDataTableBase component) {
+ // TODO Auto-generated method stub
+
+ }
}