[richfaces-svn-commits] JBoss Rich Faces SVN: r6176 - 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
Tue Feb 19 12:05:41 EST 2008


Author: konstantin.mishin
Date: 2008-02-19 12:05:41 -0500 (Tue, 19 Feb 2008)
New Revision: 6176

Modified:
   trunk/ui/dataTable/src/main/config/component/dataTable.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/dataTable.xml
===================================================================
--- trunk/ui/dataTable/src/main/config/component/dataTable.xml	2008-02-19 17:03:45 UTC (rev 6175)
+++ trunk/ui/dataTable/src/main/config/component/dataTable.xml	2008-02-19 17:05:41 UTC (rev 6176)
@@ -175,8 +175,15 @@
 		</property>
 		<property>
 			<name>sortPriority</name>
-			<classname>java.util.List</classname>
+			<classname>java.util.Collection</classname>
 			<description></description>
 		</property>
+		<property>
+			<name>sortMode</name>
+			<classname>java.lang.String</classname>
+			<description>
+			Defines mode of sorting. Possible values are 'single' for sorting of one column and 'multi' for some.
+			</description>
+		</property>
 	</component>
 </components>

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-19 17:03:45 UTC (rev 6175)
+++ trunk/ui/dataTable/src/main/java/org/richfaces/component/UIColumn.java	2008-02-19 17:05:41 UTC (rev 6176)
@@ -21,6 +21,7 @@
 
 package org.richfaces.component;
 
+import javax.el.ELContext;
 import javax.el.MethodExpression;
 import javax.el.ValueExpression;
 
@@ -75,11 +76,11 @@
 		return sortField2;
 	}
 	
-	public void toggleSortOrder(){
+	public void toggleSortOrder(ELContext elContext){
 		if(Ordering.ASCENDING.equals(getSortOrder())) {
-			setSortOrder(Ordering.DESCENDING);
+			getValueExpression("sortOrder").setValue(elContext, Ordering.DESCENDING);
 		} else {
-			setSortOrder(Ordering.ASCENDING);							
+			getValueExpression("sortOrder").setValue(elContext, Ordering.ASCENDING);
 		}		
 	}
 }

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-19 17:03:45 UTC (rev 6175)
+++ trunk/ui/dataTable/src/main/java/org/richfaces/component/UIDataTable.java	2008-02-19 17:05:41 UTC (rev 6176)
@@ -21,19 +21,15 @@
 
 package org.richfaces.component;
 
+import java.util.Collection;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
-import javax.el.ELContext;
-import javax.el.ExpressionFactory;
-import javax.el.MethodExpression;
-import javax.el.ValueExpression;
 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;
@@ -41,10 +37,8 @@
 import org.apache.commons.collections.Predicate;
 import org.apache.commons.collections.iterators.FilterIterator;
 import org.apache.commons.collections.iterators.IteratorChain;
-import org.richfaces.model.ExtendedFilterField;
 import org.richfaces.model.FilterField;
 import org.richfaces.model.ModifiableModel;
-import org.richfaces.model.Ordering;
 import org.richfaces.model.SortField2;
 
 
@@ -186,7 +180,7 @@
 			
 		}
 		List<SortField2> sortFields = new LinkedList<SortField2>();
-		List sortPriority = getSortPriority();
+		Collection sortPriority = getSortPriority();
 		if (sortPriority != null) {
 			for (Object object : sortPriority) {
 				if (object instanceof String) {
@@ -206,7 +200,8 @@
 		return new ModifiableModel(dataModel, getVar(), getFilterFields(), getSortFields());
 	}
 	
-	public abstract List getSortPriority();
-	public abstract void setSortPriority(List sortPriority);
-
+	public abstract Collection getSortPriority();
+	public abstract void setSortPriority(Collection sortPriority);
+	public abstract String getSortMode();
+	public abstract void setSortMode(String sortMode);
 }
\ 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-19 17:03:45 UTC (rev 6175)
+++ trunk/ui/dataTable/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java	2008-02-19 17:05:41 UTC (rev 6176)
@@ -23,10 +23,12 @@
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
+import javax.el.ELContext;
 import javax.faces.component.UIColumn;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
@@ -486,26 +488,35 @@
 	protected void doDecode(FacesContext context, UIComponent component) {
 		Map<String, String> map = context.getExternalContext().getRequestParameterMap();
 		if (SORT_FILTER_PARAMETER.equals(map.get(component.getClientId(context)))) {
+			ELContext elContext = context.getELContext();
 			String clientId = map.get(SORT_FILTER_PARAMETER);
 			List<UIComponent> list = component.getChildren();
+			UIDataTable table = (UIDataTable) component;
+			boolean isSingleSortMode = !"multi".equals(table.getSortMode());
 			for (Iterator<UIComponent> iterator = list.iterator(); iterator
 					.hasNext();) {
 				UIComponent children = iterator.next();
 				if (children instanceof org.richfaces.component.UIColumn) {
 					org.richfaces.component.UIColumn column = (org.richfaces.component.UIColumn) children;
 					children.setId(children.getId());
-					if(children.getClientId(context).equals(clientId)) {
-						String id = children.getId();
-						UIDataTable table = (UIDataTable)component;
-						List sortPriority = table.getSortPriority();
-						if(sortPriority == null){
-							sortPriority = new ArrayList();
-							table.setSortPriority(sortPriority);
+					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);
+							}
+							if (isSingleSortMode) {
+								sortPriority.clear();
+							}
+							if(!sortPriority.contains(id)) {
+								sortPriority.add(id);
+							}
+							column.toggleSortOrder(elContext);
+						} else if(isSingleSortMode){
+							column.getValueExpression("sortOrder").setValue(elContext, Ordering.UNSORTED);
 						}
-						if(!sortPriority.contains(id)) {
-							sortPriority.add(id);
-						}
-						column.toggleSortOrder();
 					}
 					String filterValue = map.get(children.getClientId(context) + SORT_FILTER_PARAMETER);
 					if (filterValue != null) {




More information about the richfaces-svn-commits mailing list