[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