Author: nbelaevski
Date: 2007-12-27 15:48:39 -0500 (Thu, 27 Dec 2007)
New Revision: 5050
Added:
branches/3.1.x/samples/treeModelDemo/src/main/java/org/richfaces/model/SimpleRecursiveNode.java
Modified:
branches/3.1.x/samples/treeModelDemo/src/main/java/org/richfaces/TreeModelBean.java
branches/3.1.x/samples/treeModelDemo/src/main/webapp/pages/index.jsp
branches/3.1.x/ui/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java
branches/3.1.x/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java
Log:
http://jira.jboss.com/jira/browse/RF-980
Modified:
branches/3.1.x/samples/treeModelDemo/src/main/java/org/richfaces/TreeModelBean.java
===================================================================
---
branches/3.1.x/samples/treeModelDemo/src/main/java/org/richfaces/TreeModelBean.java 2007-12-27
19:45:44 UTC (rev 5049)
+++
branches/3.1.x/samples/treeModelDemo/src/main/java/org/richfaces/TreeModelBean.java 2007-12-27
20:48:39 UTC (rev 5050)
@@ -3,7 +3,10 @@
*/
package org.richfaces;
+import java.util.List;
+
import org.richfaces.component.UITree;
+import org.richfaces.model.SimpleRecursiveNode;
/**
* @author Nick Belaevski
@@ -15,4 +18,25 @@
public Boolean adviseNodeOpened(UITree tree) {
return Boolean.TRUE;
}
+
+ private SimpleRecursiveNode simpleRecursiveNode;
+
+ public TreeModelBean() {
+ simpleRecursiveNode = new SimpleRecursiveNode(null, null);
+ for (int i = 0; i < 5; i++) {
+ SimpleRecursiveNode node2 = new SimpleRecursiveNode(simpleRecursiveNode, "Node
" + i);
+
+ for (int j = 0; j < 6; j++) {
+ SimpleRecursiveNode node3 = new SimpleRecursiveNode(node2, "Node " + i +
" " + j);
+
+ for (int k = 0; k < 4; k++) {
+ SimpleRecursiveNode node4 = new SimpleRecursiveNode(node3, "Node " + i +
" " + j + " " + k);
+ }
+ }
+ }
+ }
+
+ public List getSimpleResursiveNodes() {
+ return simpleRecursiveNode.getChildren();
+ }
}
Copied:
branches/3.1.x/samples/treeModelDemo/src/main/java/org/richfaces/model/SimpleRecursiveNode.java
(from rev 4967,
trunk/samples/treeModelDemo/src/main/java/org/richfaces/model/SimpleRecursiveNode.java)
===================================================================
---
branches/3.1.x/samples/treeModelDemo/src/main/java/org/richfaces/model/SimpleRecursiveNode.java
(rev 0)
+++
branches/3.1.x/samples/treeModelDemo/src/main/java/org/richfaces/model/SimpleRecursiveNode.java 2007-12-27
20:48:39 UTC (rev 5050)
@@ -0,0 +1,79 @@
+/**
+ * License Agreement.
+ *
+ * JBoss RichFaces - Ajax4jsf Component Library
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.richfaces.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * <br /><br />
+ *
+ * Created 22.12.2007
+ * @author Nick Belaevski
+ * @since 3.2
+ */
+
+public class SimpleRecursiveNode {
+
+ private SimpleRecursiveNode parent;
+
+ private List children = new ArrayList();
+
+ private String text;
+
+ public SimpleRecursiveNode(SimpleRecursiveNode parent,
+ String text) {
+ super();
+ this.parent = parent;
+ if (parent != null) {
+ parent.addChild(this);
+ }
+ this.text = text;
+ }
+
+ public void addChild(SimpleRecursiveNode node) {
+ children.add(node);
+ }
+
+ public void removeChild(SimpleRecursiveNode node) {
+ children.remove(node);
+ }
+
+ public void remove() {
+ if (parent != null) {
+ parent.removeChild(this);
+ }
+ }
+
+ public SimpleRecursiveNode getParent() {
+ return parent;
+ }
+
+ public List getChildren() {
+ return children;
+ }
+
+ public String getText() {
+ return text;
+ }
+}
Modified: branches/3.1.x/samples/treeModelDemo/src/main/webapp/pages/index.jsp
===================================================================
--- branches/3.1.x/samples/treeModelDemo/src/main/webapp/pages/index.jsp 2007-12-27
19:45:44 UTC (rev 5049)
+++ branches/3.1.x/samples/treeModelDemo/src/main/webapp/pages/index.jsp 2007-12-27
20:48:39 UTC (rev 5050)
@@ -85,6 +85,14 @@
</model:treeNodes--%>
</model:treeNodesAdaptor>
</tree:tree>
+
+ <tree:tree adviseNodeOpened="#{treeModelBean.adviseNodeOpened}"
switchType="client">
+ <model:recursiveTreeNodesAdaptor
roots="#{treeModelBean.simpleResursiveNodes}" var="node"
nodes="#{node.children}">
+ <tree:treeNode>
+ <h:commandLink value="#{node.text}" action="#{node.remove}"
/>
+ </tree:treeNode>
+ </model:recursiveTreeNodesAdaptor>
+ </tree:tree>
</h:form>
</f:view>
</body>
Modified:
branches/3.1.x/ui/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java
===================================================================
---
branches/3.1.x/ui/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java 2007-12-27
19:45:44 UTC (rev 5049)
+++
branches/3.1.x/ui/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java 2007-12-27
20:48:39 UTC (rev 5050)
@@ -66,10 +66,11 @@
String id = treeNode.getClientId(context);
if (UITree.SWITCH_AJAX.equals(tree.getSwitchType())) {
- JSFunction function = AjaxRendererUtils.buildAjaxFunction(tree.getNodeFacet(),
+ UITreeNode nodeFacet = tree.getNodeFacet();
+ JSFunction function = AjaxRendererUtils.buildAjaxFunction(nodeFacet,
context);
Map eventOptions = AjaxRendererUtils.buildEventOptions(context,
- tree.getNodeFacet());
+ nodeFacet);
Map parameters = (Map) eventOptions.get("parameters");
parameters.remove(id);
Modified:
branches/3.1.x/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java
===================================================================
---
branches/3.1.x/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java 2007-12-27
19:45:44 UTC (rev 5049)
+++
branches/3.1.x/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java 2007-12-27
20:48:39 UTC (rev 5050)
@@ -492,7 +492,9 @@
Object rowKey = tree.getRowKey();
try {
tree.setRowKey(selectedNodeKey);
- result = tree.getNodeFacet().getClientId(context);
+ if (tree.isRowAvailable()) {
+ result = tree.getNodeFacet().getClientId(context);
+ }
} finally {
try {
tree.setRowKey(rowKey);