[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