[richfaces-svn-commits] JBoss Rich Faces SVN: r6215 - in trunk/ui/dataTable/src/main: java/org/richfaces/component and 1 other directories.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Wed Feb 20 11:26:10 EST 2008


Author: konstantin.mishin
Date: 2008-02-20 11:26:10 -0500 (Wed, 20 Feb 2008)
New Revision: 6215

Modified:
   trunk/ui/dataTable/src/main/config/component/column.xml
   trunk/ui/dataTable/src/main/java/org/richfaces/component/UIColumn.java
   trunk/ui/dataTable/src/main/java/org/richfaces/component/UIDataTable.java
   trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
Log:
RF-1741

Modified: trunk/ui/dataTable/src/main/config/component/column.xml
===================================================================
--- trunk/ui/dataTable/src/main/config/component/column.xml	2008-02-20 16:05:37 UTC (rev 6214)
+++ trunk/ui/dataTable/src/main/config/component/column.xml	2008-02-20 16:26:10 UTC (rev 6215)
@@ -79,6 +79,11 @@
 		<property>
 			<name>sortExpression</name>
 			<classname>java.lang.String</classname>
+			<description>DEPRECATED(use sortBy)Attribute defines a bean property which is used for sorting of a column</description>
+		</property>		
+		<property>
+			<name>sortBy</name>
+			<classname>java.lang.String</classname>
 			<description>Attribute defines a bean property which is used for sorting of a column</description>
 		</property>		
 		<property>
@@ -116,7 +121,7 @@
 			<classname>java.lang.Object</classname>
 			<description></description>
 		</property>		
-		<property hidden="true">
+		<property>
 			<name>filterValue</name>
 			<classname>java.lang.String</classname>
 			<description></description>

Modified: trunk/ui/dataTable/src/main/java/org/richfaces/component/UIColumn.java
===================================================================
--- trunk/ui/dataTable/src/main/java/org/richfaces/component/UIColumn.java	2008-02-20 16:05:37 UTC (rev 6214)
+++ trunk/ui/dataTable/src/main/java/org/richfaces/component/UIColumn.java	2008-02-20 16:26:10 UTC (rev 6215)
@@ -22,8 +22,11 @@
 package org.richfaces.component;
 
 import javax.el.ELContext;
+import javax.el.ELException;
 import javax.el.MethodExpression;
 import javax.el.ValueExpression;
+import javax.faces.FacesException;
+import javax.faces.context.FacesContext;
 
 import org.richfaces.model.ExtendedFilterField;
 import org.richfaces.model.FilterField;
@@ -42,6 +45,9 @@
 	
 	public static final String COMPONENT_FAMILY = "org.richfaces.Column";
 	
+	private Ordering sortOrder = Ordering.UNSORTED;
+	private String filterValue;
+	
 	public abstract String getSortMode();
 	
 	public abstract void setSortMode(String mode);
@@ -66,11 +72,11 @@
 		SortField2 sortField2 = null;
 		if (!Ordering.UNSORTED.equals(getSortOrder())) {
 			ValueExpression comparator = getValueExpression("comparator");
-			ValueExpression sortExpression = getValueExpression("sortExpression");
+			ValueExpression sortBy = getValueExpression("sortBy");
 			if (comparator != null) {
 				sortField2 = new SortField2(comparator, getSortOrder());
-			} else if (sortExpression != null) {
-				sortField2 = new SortField2(sortExpression, getSortOrder());
+			} else if (sortBy != null) {
+				sortField2 = new SortField2(sortBy, getSortOrder());
 			}
 		}
 		return sortField2;
@@ -78,9 +84,84 @@
 	
 	public void toggleSortOrder(ELContext elContext){
 		if(Ordering.ASCENDING.equals(getSortOrder())) {
-			getValueExpression("sortOrder").setValue(elContext, Ordering.DESCENDING);
+			setSortOrder(Ordering.DESCENDING);
 		} else {
-			getValueExpression("sortOrder").setValue(elContext, Ordering.ASCENDING);
+			setSortOrder(Ordering.ASCENDING);
 		}		
 	}
+	
+	public Ordering getSortOrder(){
+		ValueExpression ve = getValueExpression("sortOrder");
+		if (ve != null) {
+		    Ordering value = null;
+		    try {
+				value = (Ordering) ve.getValue(getFacesContext().getELContext());
+		    } catch (ELException e) {
+				throw new FacesException(e);
+		    }
+		    return value;
+		} else {
+		    return sortOrder;
+		}
+	}
+
+	public void setSortOrder(Ordering sortOrder){
+		ELContext context = getFacesContext().getELContext();
+		ValueExpression ve = getValueExpression("sortOrder");
+		if (ve != null && !ve.isReadOnly(context)) {
+		    try {
+				ve.setValue(context, sortOrder);
+		    } catch (ELException e) {
+				throw new FacesException(e);
+		    }
+		} else {
+		    this.sortOrder = sortOrder;
+		}
+	}
+	
+	public String getFilterValue(){
+		ValueExpression ve = getValueExpression("filterValue");
+		if (ve != null) {
+		    String value = null;
+		    try {
+				value = (String) ve.getValue(getFacesContext().getELContext());
+		    } catch (ELException e) {
+				throw new FacesException(e);
+		    } 
+		    return value;
+		} else {
+			return filterValue;
+		}
+	}
+
+	public void setFilterValue(String filterValue){
+		ELContext context = getFacesContext().getELContext();
+		ValueExpression ve = getValueExpression("filterValue");
+		if (ve != null && !ve.isReadOnly(context)) {
+		    try {
+				ve.setValue(context, filterValue);
+		    } catch (ELException e) {
+				throw new FacesException(e);
+		    }
+		} else {
+		    this.filterValue = filterValue;
+		}
+	}
+	
+	@Override
+	public Object saveState(FacesContext context) {
+		Object [] state = new Object[3];
+		state[0] = super.saveState(context);
+		state[1] = filterValue;
+		state[2] = sortOrder;
+		return state;
+	}
+	
+	@Override
+	public void restoreState(FacesContext context, Object state) {
+		Object[] states = (Object[]) state;
+		super.restoreState(context, states[0]);
+		filterValue = (String)states[1];
+		sortOrder = (Ordering)states[2];
+	}
 }

Modified: trunk/ui/dataTable/src/main/java/org/richfaces/component/UIDataTable.java
===================================================================
--- trunk/ui/dataTable/src/main/java/org/richfaces/component/UIDataTable.java	2008-02-20 16:05:37 UTC (rev 6214)
+++ trunk/ui/dataTable/src/main/java/org/richfaces/component/UIDataTable.java	2008-02-20 16:26:10 UTC (rev 6215)
@@ -21,6 +21,7 @@
 
 package org.richfaces.component;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
@@ -28,8 +29,13 @@
 import java.util.List;
 import java.util.Map;
 
+import javax.el.ELContext;
+import javax.el.ELException;
+import javax.el.ValueExpression;
+import javax.faces.FacesException;
 import javax.faces.component.UIColumn;
 import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
 
 import org.ajax4jsf.component.AjaxSupport;
 import org.ajax4jsf.component.SequenceDataAdaptor;
@@ -39,6 +45,7 @@
 import org.apache.commons.collections.iterators.IteratorChain;
 import org.richfaces.model.FilterField;
 import org.richfaces.model.ModifiableModel;
+import org.richfaces.model.Ordering;
 import org.richfaces.model.SortField2;
 
 
@@ -48,6 +55,8 @@
  */
 public abstract class UIDataTable extends SequenceDataAdaptor implements Sortable2, Filterable {
 
+	Collection<Object> sortPriority = new ArrayList<Object>();
+	
 	/**
 	 * @author shura
 	 * 
@@ -180,7 +189,7 @@
 			
 		}
 		List<SortField2> sortFields = new LinkedList<SortField2>();
-		Collection sortPriority = getSortPriority();
+		Collection<Object> sortPriority = getSortPriority();
 		if (sortPriority != null) {
 			for (Object object : sortPriority) {
 				if (object instanceof String) {
@@ -200,8 +209,50 @@
 		return new ModifiableModel(dataModel, getVar(), getFilterFields(), getSortFields());
 	}
 	
-	public abstract Collection getSortPriority();
-	public abstract void setSortPriority(Collection sortPriority);
+	public Collection<Object> getSortPriority(){
+		ValueExpression ve = getValueExpression("sortPriority");
+		if (ve != null) {
+		    Collection<Object> value = null;
+		    try {
+				value = (Collection) ve.getValue(getFacesContext().getELContext());
+		    } catch (ELException e) {
+				throw new FacesException(e);
+		    }
+		    return value;
+		} else {
+			return sortPriority;
+		}
+	}
+
+	public void setSortPriority(Collection<Object> sortPriority){
+		ELContext context = getFacesContext().getELContext();
+		ValueExpression ve = getValueExpression("sortPriority");
+		if (ve != null && !ve.isReadOnly(context)) {
+		    try {
+				ve.setValue(context, sortPriority);
+		    } catch (ELException e) {
+				throw new FacesException(e);
+		    }
+		} else {
+		    this.sortPriority = sortPriority;
+		}
+	}
+
 	public abstract String getSortMode();
 	public abstract void setSortMode(String sortMode);
+	
+	@Override
+	public Object saveState(FacesContext context) {
+		Object [] state = new Object[2];
+		state[0] = super.saveState(context);
+		state[1] = sortPriority;
+		return state;
+	}
+	
+	@Override
+	public void restoreState(FacesContext context, Object state) {
+		Object[] states = (Object[]) state;
+		super.restoreState(context, states[0]);
+		sortPriority = (Collection)states[1];
+	}
 }
\ No newline at end of file

Modified: trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
===================================================================
--- trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java	2008-02-20 16:05:37 UTC (rev 6214)
+++ trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java	2008-02-20 16:26:10 UTC (rev 6215)
@@ -160,22 +160,7 @@
 			String classAttribute = facetName + "Class";
 			String columnHeaderClass = (String) column.getAttributes().get(
 					classAttribute);
-			if (column instanceof org.richfaces.component.UIColumn && 
-					(column.getValueExpression("comparator") != null
-						|| column.getValueExpression("sortExpression") != null)) {
-				org.richfaces.component.UIColumn col = 
-					(org.richfaces.component.UIColumn) column;
-				columnHeaderClass = "dr-table-sortable-header " + columnHeaderClass;
-				if (Ordering.ASCENDING.equals(col.getSortOrder())) {
-					columnHeaderClass = "dr-table-header-sort-up " + columnHeaderClass;
-				} else if (Ordering.DESCENDING.equals(col.getSortOrder())) {
-					columnHeaderClass = "dr-table-header-sort-down " + columnHeaderClass;
-				}
-			}
-			
 			writer.startElement(element, column);
-			encodeStyleClass(writer, null, skinCellClass, headerClass,
-					columnHeaderClass);
 			writer.writeAttribute("scope", "col", null);			
 			getUtils().encodeAttribute(context, column, "colspan");
 
@@ -185,7 +170,7 @@
 				String clientId = col.getClientId(context) + facetName;
 				writer.writeAttribute("id", clientId, null);
 				if (column.getValueExpression("comparator") != null
-						|| column.getValueExpression("sortExpression") != null) {
+						|| column.getValueExpression("sortBy") != null) {
 					StringBuffer buffer;
 					if (col.isSelfSorted()) {
 						UIComponent table = column.getParent();
@@ -204,16 +189,23 @@
 						writer.writeAttribute(HTML.onclick_ATTRIBUTE, buffer
 								.toString(), null);
 					}
+					columnHeaderClass = "dr-table-sortable-header " + columnHeaderClass;
+					if (Ordering.ASCENDING.equals(col.getSortOrder())) {
+						columnHeaderClass = "dr-table-header-sort-up " + columnHeaderClass;
+					} else if (Ordering.DESCENDING.equals(col.getSortOrder())) {
+						columnHeaderClass = "dr-table-header-sort-down " + columnHeaderClass;
+					}
 				}
 			}
-
+			encodeStyleClass(writer, null, skinCellClass, headerClass,
+					columnHeaderClass);
 			UIComponent facet = column.getFacet(facetName);
 			if (facet != null) {
 				renderChild(context, facet);
 			}
 			if (column instanceof org.richfaces.component.UIColumn) {
 				if (column.getValueExpression("comparator") != null
-						|| column.getValueExpression("sortExpression") != null) {
+						|| column.getValueExpression("sortBy") != null) {
 					org.richfaces.component.UIColumn col = 
 						(org.richfaces.component.UIColumn) column;
 					if (Ordering.ASCENDING.equals(col.getSortOrder()) ||
@@ -520,11 +512,7 @@
 					if (clientId != null) {
 						if (children.getClientId(context).equals(clientId)) {
 							String id = children.getId();
-							Collection sortPriority = table.getSortPriority();
-							if (sortPriority == null) {
-								sortPriority = new ArrayList();
-								table.getValueExpression("sortPriority").setValue(elContext, sortPriority);
-							}
+							Collection<Object> sortPriority = table.getSortPriority();
 							if (isSingleSortMode) {
 								sortPriority.clear();
 							}
@@ -533,13 +521,12 @@
 							}
 							column.toggleSortOrder(elContext);
 						} else if(isSingleSortMode){
-							column.getValueExpression("sortOrder").setValue(elContext, Ordering.UNSORTED);
+							column.setSortOrder(Ordering.UNSORTED);
 						}
 					}
 					String filterValue = map.get(children.getClientId(context) + SORT_FILTER_PARAMETER);
 					if (filterValue != null) {
-						children.getAttributes()
-								.put("filterValue", filterValue);
+						column.setFilterValue(filterValue);
 					}
 				}
 




More information about the richfaces-svn-commits mailing list