[richfaces-svn-commits] JBoss Rich Faces SVN: r367 - in trunk/richfaces/tree/src/main/java/org/richfaces: renderkit and 1 other directory.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Wed Apr 11 12:51:04 EDT 2007


Author: nbelaevski
Date: 2007-04-11 12:51:03 -0400 (Wed, 11 Apr 2007)
New Revision: 367

Modified:
   trunk/richfaces/tree/src/main/java/org/richfaces/component/CacheableTreeDataModel.java
   trunk/richfaces/tree/src/main/java/org/richfaces/component/CacheableTreeRequestDataModel.java
   trunk/richfaces/tree/src/main/java/org/richfaces/component/UITree.java
   trunk/richfaces/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java
Log:
Fixed: tree doesn't expand in "ajax" switch mode

Modified: trunk/richfaces/tree/src/main/java/org/richfaces/component/CacheableTreeDataModel.java
===================================================================
--- trunk/richfaces/tree/src/main/java/org/richfaces/component/CacheableTreeDataModel.java	2007-04-11 14:58:17 UTC (rev 366)
+++ trunk/richfaces/tree/src/main/java/org/richfaces/component/CacheableTreeDataModel.java	2007-04-11 16:51:03 UTC (rev 367)
@@ -110,13 +110,20 @@
 	public void walk(FacesContext context, final DataVisitor dataVisitor,
 			Range range, TreeRowKey rowKey, Object argument, boolean last)
 			throws IOException {
-		if ((rowKey == null && ((TreeNode) getWrappedData()).isLeaf())
-				|| locateTreeNode(rowKey) == null) {
-			treeDataModel.walk(context, new Visitor(dataVisitor), range,
-					rowKey, argument, last);
-		} else {
-			super.walk(context, dataVisitor, range, rowKey, argument, last);
+		
+		TreeNode cachedTreeNode = locateTreeNode(rowKey);
+		TreeNode treeNode = treeDataModel.locateTreeNode(rowKey);
+		
+		if (treeNode != null) {
+			if (cachedTreeNode == null || (!treeNode.isLeaf() && cachedTreeNode.isLeaf())) {
+				//fill cache
+				treeDataModel.walk(context, new Visitor(dataVisitor), range,
+						rowKey, argument, last);
+			} else {
+				super.walk(context, dataVisitor, range, rowKey, argument, last);
+			}
 		}
+		
 	}
 
 	public void setRowData(Object object) {
@@ -148,6 +155,7 @@
 	public void resetSub(TreeRowKey key) {
 		TreeNode node = locateTreeNode(key);
 		for (Iterator iterator = node.getChildren(); iterator.hasNext();) {
+			iterator.next();
 			iterator.remove();
 		}
 	}

Modified: trunk/richfaces/tree/src/main/java/org/richfaces/component/CacheableTreeRequestDataModel.java
===================================================================
--- trunk/richfaces/tree/src/main/java/org/richfaces/component/CacheableTreeRequestDataModel.java	2007-04-11 14:58:17 UTC (rev 366)
+++ trunk/richfaces/tree/src/main/java/org/richfaces/component/CacheableTreeRequestDataModel.java	2007-04-11 16:51:03 UTC (rev 367)
@@ -33,14 +33,6 @@
 		super(model);
 	}
 
-	public void resetAll() {
-		throw new IllegalStateException("Should not be called for this class!");
-	}
-
-	public void resetSub(TreeRowKey key) {
-		throw new IllegalStateException("Should not be called for this class!");
-	}
-
 	public boolean isTransient() {
 		return true;
 	}

Modified: trunk/richfaces/tree/src/main/java/org/richfaces/component/UITree.java
===================================================================
--- trunk/richfaces/tree/src/main/java/org/richfaces/component/UITree.java	2007-04-11 14:58:17 UTC (rev 366)
+++ trunk/richfaces/tree/src/main/java/org/richfaces/component/UITree.java	2007-04-11 16:51:03 UTC (rev 367)
@@ -247,7 +247,6 @@
 		CacheableTreeDataModel cacheableModel = state.getTreeDataModel();
 		if (cacheableModel != null) {
 			if (cacheableModel.isTransient()) {
-				setExtendedDataModel(cacheableModel.getTreeDataModel());
 				state.setTreeDataModel(null);
 			}
 		}
@@ -483,18 +482,23 @@
 	protected ExtendedDataModel createDataModel() {
 		TreeState state = ((TreeState) getComponentState());
 		CacheableTreeDataModel stateModel = state.getTreeDataModel();
+
 		TreeDataModel treeDataModel = new TreeDataModel();
 		treeDataModel.setWrappedData(this.getValue());
+		
 		if (stateModel == null) {
 			String preserveModel = getPreserveModel();
 			if (PRESERVE_MODEL_REQUEST.equals(preserveModel)) {
 				stateModel = new CacheableTreeRequestDataModel(treeDataModel);
+				state.setTreeDataModel(stateModel);
 			} else if (PRESERVE_MODEL_STATE.equals(preserveModel)) {
 				stateModel = new CacheableTreeDataModel(treeDataModel);
+				state.setTreeDataModel(stateModel);
 			} else {
 				return treeDataModel;
 			}
 		} else {
+			//bind existing model to the state-saved model
 			stateModel.setTreeDataModel(treeDataModel);
 		}
 

Modified: trunk/richfaces/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java
===================================================================
--- trunk/richfaces/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java	2007-04-11 14:58:17 UTC (rev 366)
+++ trunk/richfaces/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java	2007-04-11 16:51:03 UTC (rev 367)
@@ -155,7 +155,7 @@
 				try {
 					Set ajaxKeys = tree.getAjaxKeys(); 
 					if (ajaxKeys != null) {
-						Iterator ajaxKeysItr = tree.getAjaxKeys().iterator();
+						Iterator ajaxKeysItr = ajaxKeys.iterator();
 						while (ajaxKeysItr.hasNext()) {
 							TreeRowKey key = (TreeRowKey) ajaxKeysItr.next();
 							tree.setRowKey(key);
@@ -168,6 +168,8 @@
 								encodedAreaIds.add(id);
 							}
 						}
+						
+						ajaxKeys.clear();
 					}
 				} catch (Exception e) {
 					throw new FacesException(e);




More information about the richfaces-svn-commits mailing list