Author: vbaranov
Date: 2008-04-08 09:59:37 -0400 (Tue, 08 Apr 2008)
New Revision: 7664
Modified:
trunk/ui/tree/src/main/java/org/richfaces/component/UITree.java
Log:
http://jira.jboss.com/jira/browse/RF-1629
Modified: trunk/ui/tree/src/main/java/org/richfaces/component/UITree.java
===================================================================
--- trunk/ui/tree/src/main/java/org/richfaces/component/UITree.java 2008-04-08 13:21:34
UTC (rev 7663)
+++ trunk/ui/tree/src/main/java/org/richfaces/component/UITree.java 2008-04-08 13:59:37
UTC (rev 7664)
@@ -125,6 +125,11 @@
*/
private String _treeNodeVar;
+ /**
+ * Stored state of "treeNodeVar" attribute
+ */
+ private Object treeNodeVarOrigValue = null;
+
public UITree() {
super();
@@ -570,6 +575,60 @@
public boolean hasAjaxSubmitSelection() {
return isAjaxSubmitSelection();
}
+
+ /**
+ * Save current state of data variable.
+ * Overrides the implementation in the base class for the case
+ * the base implementation will be changed.
+ */
+ @Override
+ public void captureOrigValue() {
+ this.captureOrigValue(FacesContext.getCurrentInstance());
+ }
+
+ /**
+ * Save current state of data variable.
+ *
+ * @param faces current faces context
+ */
+ @Override
+ public void captureOrigValue(FacesContext faces) {
+ super.captureOrigValue(faces);
+ String treeNodeVar = getTreeNodeVar();
+ if (treeNodeVar != null) {
+ Map<String, Object> attrs = faces.getExternalContext().getRequestMap();
+ this.treeNodeVarOrigValue = attrs.get(treeNodeVar);
+ }
+ }
+
+ /**
+ * Restore value of data variable after processing phase.
+ * Overrides the implementation in the base class for the case
+ * the base implementation will be changed.
+ */
+ @Override
+ public void restoreOrigValue() {
+ this.restoreOrigValue(FacesContext.getCurrentInstance());
+ }
+
+ /**
+ * Restore value of data variable after processing phase.
+ *
+ * @param faces current faces context
+ */
+ @Override
+ public void restoreOrigValue(FacesContext faces) {
+ super.restoreOrigValue(faces);
+ String treeNodeVar = getTreeNodeVar();
+ if (treeNodeVar != null) {
+ Map<String, Object> attrs = faces.getExternalContext().getRequestMap();
+ if (this.treeNodeVarOrigValue != null) {
+ attrs.put(treeNodeVar, this.treeNodeVarOrigValue);
+ } else {
+ attrs.remove(treeNodeVar);
+ }
+ }
+ }
private ExtendedDataModel createDataModel(boolean allowCached) {
Object value = this.getValue();
@@ -858,9 +917,10 @@
public Object saveState(FacesContext faces) {
- Object[] state = new Object[2];
+ Object[] state = new Object[3];
state[0] = super.saveState(faces);
state[1] = saveAttachedState(faces, defaultFacet);
+ state[2] = getTreeNodeVar();
return state;
}
@@ -875,6 +935,7 @@
defaultFacet.getChildren().add(createDefaultNodeFaceOutput(faces));
defaultFacet.setParent(this);
}
+ setTreeNodeVar((String) state[2]);
}
public String getResolvedDragIndicator(FacesContext facesContext) {