[richfaces-svn-commits] JBoss Rich Faces SVN: r11909 - trunk/ui/extendedDataTable/src/main/java/org/richfaces/component.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Fri Dec 19 07:52:52 EST 2008


Author: pgolawski
Date: 2008-12-19 07:52:52 -0500 (Fri, 19 Dec 2008)
New Revision: 11909

Modified:
   trunk/ui/extendedDataTable/src/main/java/org/richfaces/component/UIExtendedDataTable.java
Log:
changed tableState mechanism
https://jira.jboss.org/jira/browse/RF-5041

Modified: trunk/ui/extendedDataTable/src/main/java/org/richfaces/component/UIExtendedDataTable.java
===================================================================
--- trunk/ui/extendedDataTable/src/main/java/org/richfaces/component/UIExtendedDataTable.java	2008-12-19 12:51:44 UTC (rev 11908)
+++ trunk/ui/extendedDataTable/src/main/java/org/richfaces/component/UIExtendedDataTable.java	2008-12-19 12:52:52 UTC (rev 11909)
@@ -27,9 +27,9 @@
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Locale;
 import java.util.Map;
 
+import javax.el.ValueExpression;
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIViewRoot;
 import javax.faces.context.FacesContext;
@@ -73,7 +73,7 @@
 	 * COMPONENT_FAMILY
 	 */
 	public static final String COMPONENT_FAMILY = "org.richfaces.ExtendedDataTable";
-
+	
 	protected ExtendedDataTableState state;
 
 	public abstract Object getActiveRowKey();
@@ -83,6 +83,10 @@
 	public abstract String getGroupingColumn();
 	
 	public abstract void setGroupingColumn(String groupingColumn);
+	
+	public abstract void setTableState(String tableState);
+	
+	public abstract String getTableState();
 
 	public void broadcast(FacesEvent event) throws AbortProcessingException {
 		super.broadcast(event);
@@ -109,12 +113,12 @@
     			event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
     		} else if (event instanceof DragDropEvent) {
     			new AjaxEvent(this).queue();
-    			event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
+    			event.setPhaseId(PhaseId.UPDATE_MODEL_VALUES);
     		} else if (event instanceof ChangeColumnVisibilityEvent) {
     			new AjaxEvent(this).queue();
-    			event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
+    			event.setPhaseId(PhaseId.UPDATE_MODEL_VALUES);
     		} else if (event instanceof ColumnResizeEvent) {
-    			event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
+    			event.setPhaseId(PhaseId.UPDATE_MODEL_VALUES);
     		} else if (event instanceof ExtTableSortEvent) {
     			new AjaxEvent(this).queue();
     			event.setPhaseId(PhaseId.INVOKE_APPLICATION);
@@ -138,29 +142,16 @@
 		String dragValue = event.getDragValue().toString();// dnd_drag_script
 		String dropValue = event.getDropValue().toString();// dnd_drop_script
 
-		ensureTableStateInitialized();
-		state.changeColumnsOrder(dragValue, dropValue, event.isDropBefore());
-		state.publishChanges(getFacesContext(), this);
-
+		getState().changeColumnsOrder(dragValue, dropValue, event.isDropBefore());
 		getFacesContext().renderResponse();
 	}
 
 	public List<UIComponent> getSortedChildren() {
-		ensureTableStateInitialized();
-		return state.sortColumns(getFacesContext(), super.getChildren());
+		return getState().sortColumns(getFacesContext(), super.getChildren());
 	}
 
-	public void ensureTableStateInitialized() {
-		if (state == null) {
-			state = ExtendedDataTableState.getExtendedDataTableState(this);
-		}
-	}
-
 	public void processChangeColumnVisibility(ChangeColumnVisibilityEvent event) {
-		ensureTableStateInitialized();
-		state.toggleColumnVisibility(this, event.getColumnId());
-		state.publishChanges(getFacesContext(), this);
-
+		getState().toggleColumnVisibility(this, event.getColumnId());
 		getFacesContext().renderResponse();
 	}
 
@@ -188,21 +179,16 @@
 	}
 
 	public boolean isColumnVisible(UIComponent column) {
-		ensureTableStateInitialized();
-		return state.isColumnVisible(column.getId());
+		return getState().isColumnVisible(column.getId());
 	}
 
 	public void processColumnResize(ColumnResizeEvent event) {
-		ensureTableStateInitialized();
-		state.changeColumnSize(this, event.getColumnWidths());
-		state.publishChanges(getFacesContext(), this);
-
+		getState().changeColumnSize(this, event.getColumnWidths());
 		getFacesContext().renderResponse();
 	}
 
 	public String getColumnSize(UIComponent column) {
-		ensureTableStateInitialized();
-		return state.getColumnSize(column);
+		return getState().getColumnSize(column);
 	}
 
 	public boolean isGroupingOn() {
@@ -219,8 +205,7 @@
 	 * @return id of column which the data is grouped by
 	 */
 	public String getGroupByColumnId() {
-		ensureTableStateInitialized();
-		String id = state.getGroupingColumnId();
+		String id = getState().getGroupingColumnId();
 		if (id == null){//grouping is not saved in state
 			//get column id from attribute
 			id = getGroupingColumn();
@@ -250,35 +235,27 @@
 	}
 
 	public void setGroupByColumn(org.richfaces.component.UIColumn column) {
-		ensureTableStateInitialized();
 		if (column == null) {
-			state.disableGrouping();
+			getState().disableGrouping();
 		} else {
-			state.groupBy(column.getId(), column.getSortOrder());
+			getState().groupBy(column.getId(), column.getSortOrder());
 		}
-		state.publishChanges(getFacesContext(), this);
 	}
 
 	protected void resetGroupVisibilityState() {
-		ensureTableStateInitialized();
-		state.resetGroupVisibilityState();
+		getState().resetGroupVisibilityState();
 	}
 
 	public void disableGrouping() {
-		ensureTableStateInitialized();
-		state.disableGrouping();
-		state.publishChanges(getFacesContext(), this);
+		getState().disableGrouping();
 	}
 
 	public boolean groupIsExpanded(int index) {
-		ensureTableStateInitialized();
-		return state.groupIsExpanded(index);
+		return getState().groupIsExpanded(index);
 	}
 
 	public void toggleGroup(int index) {
-		ensureTableStateInitialized();
-		state.toggleGroup(index);
-		state.publishChanges(getFacesContext(), this);
+		getState().toggleGroup(index);
 	}
 	
 	protected Collection<Object> getGroupPriority(){
@@ -302,19 +279,19 @@
 		return priority;
 	}
 
-	public Object saveState(FacesContext context) {
-		Object values[] = new Object[2];
-		values[0] = super.saveState(context);
-		values[1] = state;
-		return values;
-	}
+//	public Object saveState(FacesContext context) {
+//		Object values[] = new Object[2];
+//		values[0] = super.saveState(context);
+//		values[1] = state;
+//		return values;
+//	}
+//
+//	public void restoreState(FacesContext context, Object state) {
+//		Object values[] = (Object[]) state;
+//		super.restoreState(context, values[0]);
+//		this.state = (ExtendedDataTableState) values[1];
+//	}
 
-	public void restoreState(FacesContext context, Object state) {
-		Object values[] = (Object[]) state;
-		super.restoreState(context, values[0]);
-		this.state = (ExtendedDataTableState) values[1];
-	}
-
 	public int getVisibleColumnsCount() {
 		int count = 0;
 		for (Iterator<UIColumn> iter = getChildColumns(); iter.hasNext();) {
@@ -449,6 +426,27 @@
 		}
 	}
 	
+	@Override
+	public void processUpdates(FacesContext context){
+		super.processUpdates(context);
+		updateTableState(context);
+	}
 	
+	/**
+	 * Puts own state into component state. 
+	 */
+	protected void updateTableState(FacesContext context){
+		ValueExpression ve = getValueExpression("tableState");
+		if ((null != ve) && (!ve.isReadOnly(context.getELContext()))) {
+			ve.setValue(context.getELContext(), getState().toString());
+		}
+	}//publishChanges
+	
+	protected ExtendedDataTableState getState() {
+		if (state == null){
+			state = ExtendedDataTableState.getExtendedDataTableState(this);
+		}
+		return state;
+	}
 
 }




More information about the richfaces-svn-commits mailing list