Author: alevkovsky
Date: 2008-09-05 07:17:23 -0400 (Fri, 05 Sep 2008)
New Revision: 10321
Added:
trunk/samples/richfaces-demo/src/main/java/org/richfaces/demo/tree/DemoTreeNodeImpl.java
Modified:
trunk/samples/richfaces-demo/src/main/java/org/richfaces/demo/tree/SimpleTreeDndBean.java
trunk/samples/richfaces-demo/src/main/webapp/richfaces/tree/examples/simple-tree-data-dnd.properties
trunk/samples/richfaces-demo/src/main/webapp/richfaces/tree/examples/simpleDnd.xhtml
Log:
https://jira.jboss.org/jira/browse/RF-4394
Added:
trunk/samples/richfaces-demo/src/main/java/org/richfaces/demo/tree/DemoTreeNodeImpl.java
===================================================================
---
trunk/samples/richfaces-demo/src/main/java/org/richfaces/demo/tree/DemoTreeNodeImpl.java
(rev 0)
+++
trunk/samples/richfaces-demo/src/main/java/org/richfaces/demo/tree/DemoTreeNodeImpl.java 2008-09-05
11:17:23 UTC (rev 10321)
@@ -0,0 +1,34 @@
+/*
+ * DemoTreeNodeImpl.java Date created: 05.09.2008
+ * Last modified by: $Author$
+ * $Revision$ $Date$
+ */
+
+package org.richfaces.demo.tree;
+
+import org.richfaces.model.TreeNodeImpl;
+
+/**
+ * TODO Class description goes here.
+ * @author Alexandr Levkovsky
+ *
+ */
+public class DemoTreeNodeImpl<T> extends TreeNodeImpl<T>{
+
+ private String type;
+
+ /**
+ * @return the type
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * @param type the type to set
+ */
+ public void setType(String type) {
+ this.type = type;
+ }
+
+}
Property changes on:
trunk/samples/richfaces-demo/src/main/java/org/richfaces/demo/tree/DemoTreeNodeImpl.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Author Id Revision Date
Name: svn:eol-style
+ native
Modified:
trunk/samples/richfaces-demo/src/main/java/org/richfaces/demo/tree/SimpleTreeDndBean.java
===================================================================
---
trunk/samples/richfaces-demo/src/main/java/org/richfaces/demo/tree/SimpleTreeDndBean.java 2008-09-05
10:57:33 UTC (rev 10320)
+++
trunk/samples/richfaces-demo/src/main/java/org/richfaces/demo/tree/SimpleTreeDndBean.java 2008-09-05
11:17:23 UTC (rev 10321)
@@ -31,7 +31,6 @@
import java.util.Properties;
import javax.faces.FacesException;
-import javax.faces.component.UIComponent;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
@@ -43,183 +42,189 @@
import org.richfaces.event.DropEvent;
import org.richfaces.event.NodeSelectedEvent;
import org.richfaces.model.TreeNode;
-import org.richfaces.model.TreeNodeImpl;
import org.richfaces.model.TreeRowKey;
public class SimpleTreeDndBean {
-
- private TreeNode rootNode = null;
- private List<TreeNode<String>> selectedNodeChildren = new
ArrayList<TreeNode<String>>();
- private String nodeTitle;
-
- private static final String DATA_PATH =
"/richfaces/tree/examples/simple-tree-data-dnd.properties";
-
- private void addNodes(String path, TreeNode node, Properties properties) {
- boolean end = false;
- int counter = 1;
-
- while (!end) {
- String key = path != null ? path + '.' + counter : String.valueOf(counter);
- String value = properties.getProperty(key);
- if (value != null) {
- TreeNodeImpl nodeImpl = new TreeNodeImpl();
- nodeImpl.setData(value);
- node.addChild(new Integer(counter), nodeImpl);
-
- addNodes(key, nodeImpl, properties);
-
- counter++;
- } else {
- end = true;
- }
+ private TreeNode rootNode = null;
+
+ private List<TreeNode<String>> selectedNodeChildren = new
ArrayList<TreeNode<String>>();
+
+ private String nodeTitle;
+
+ private static final String DATA_PATH =
"/richfaces/tree/examples/simple-tree-data-dnd.properties";
+
+ private void addNodes(String path, TreeNode node, Properties properties) {
+ boolean end = false;
+ int counter = 1;
+
+ while (!end) {
+ String key = path != null ? path + '.' + counter : String.valueOf(counter);
+
+ String value = properties.getProperty(key);
+ if (value != null) {
+ DemoTreeNodeImpl nodeImpl = new DemoTreeNodeImpl();
+ String[] splittedValue = value.split(" - ");
+ if (splittedValue.length > 1) {
+ nodeImpl.setData(splittedValue[0]);
+ nodeImpl.setType(splittedValue[1]);
+ node.addChild(new Integer(counter), nodeImpl);
}
+ addNodes(key, nodeImpl, properties);
+
+ counter++;
+ } else {
+ end = true;
+ }
}
-
- private void loadTree() {
- FacesContext facesContext = FacesContext.getCurrentInstance();
- ExternalContext externalContext = facesContext.getExternalContext();
- InputStream dataStream = externalContext.getResourceAsStream(DATA_PATH);
+ }
+
+ private void loadTree() {
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ ExternalContext externalContext = facesContext.getExternalContext();
+ InputStream dataStream = externalContext.getResourceAsStream(DATA_PATH);
+ try {
+ Properties properties = new Properties();
+ properties.load(dataStream);
+
+ rootNode = new DemoTreeNodeImpl();
+ addNodes(null, rootNode, properties);
+
+ } catch (IOException e) {
+ throw new FacesException(e.getMessage(), e);
+ } finally {
+ if (dataStream != null) {
try {
- Properties properties = new Properties();
- properties.load(dataStream);
-
- rootNode = new TreeNodeImpl();
- addNodes(null, rootNode, properties);
-
+ dataStream.close();
} catch (IOException e) {
- throw new FacesException(e.getMessage(), e);
- } finally {
- if (dataStream != null) {
- try {
- dataStream.close();
- } catch (IOException e) {
- externalContext.log(e.getMessage(), e);
- }
- }
+ externalContext.log(e.getMessage(), e);
}
+ }
}
+ }
- public void processSelection(NodeSelectedEvent event) {
- HtmlTree tree = (HtmlTree) event.getComponent();
- nodeTitle = (String) tree.getRowData();
- selectedNodeChildren.clear();
- TreeNode<String> currentNode = tree.getModelTreeNode(tree.getRowKey());
- if (currentNode.isLeaf()){
- selectedNodeChildren.add(currentNode);
- }else
- {
- Iterator<Map.Entry<Object, TreeNode<String>>> it =
currentNode.getChildren();
- while (it!=null &&it.hasNext()) {
- Map.Entry<Object, TreeNode<String>> entry = it.next();
- selectedNodeChildren.add(entry.getValue());
- }
- }
+ public void processSelection(NodeSelectedEvent event) {
+ HtmlTree tree = (HtmlTree) event.getComponent();
+ nodeTitle = (String) tree.getRowData();
+ selectedNodeChildren.clear();
+ TreeNode<String> currentNode = tree.getModelTreeNode(tree.getRowKey());
+ DemoTreeNodeImpl<String> demoCurrentNodeImpl = currentNode instanceof
DemoTreeNodeImpl ? (DemoTreeNodeImpl) currentNode : null;
+ if (currentNode.isLeaf() && (demoCurrentNodeImpl != null &&
demoCurrentNodeImpl.getType().toLowerCase().equals("leaf") ||
demoCurrentNodeImpl == null )) {
+ selectedNodeChildren.add(currentNode);
+ } else {
+ Iterator<Map.Entry<Object, TreeNode<String>>> it =
currentNode.getChildren();
+ while (it != null && it.hasNext()) {
+ Map.Entry<Object, TreeNode<String>> entry = it.next();
+ selectedNodeChildren.add(entry.getValue());
+ }
}
+ }
- private Object getNewId(TreeNode parentNode) {
- Map<Object, TreeNode> childs = new HashMap<Object, TreeNode>();
- Iterator<Map.Entry<Object, TreeNode>> iter = parentNode.getChildren();
- while (iter != null && iter.hasNext()) {
- Map.Entry<Object, TreeNode> entry = iter.next();
- childs.put(entry.getKey(), entry.getValue());
- }
-
- Integer index = 1;
- while (childs.containsKey(index)) {
- index++;
- }
- return index;
+ private Object getNewId(TreeNode parentNode) {
+ Map<Object, TreeNode> childs = new HashMap<Object, TreeNode>();
+ Iterator<Map.Entry<Object, TreeNode>> iter = parentNode.getChildren();
+ while (iter != null && iter.hasNext()) {
+ Map.Entry<Object, TreeNode> entry = iter.next();
+ childs.put(entry.getKey(), entry.getValue());
+ }
+
+ Integer index = 1;
+ while (childs.containsKey(index)) {
+ index++;
+ }
+ return index;
}
-
- public void dropListener(DropEvent dropEvent) {
-
- // resolve drag destination attributes
- UITreeNode destNode = (dropEvent.getSource() instanceof UITreeNode) ? (UITreeNode)
dropEvent.getSource() : null;
- UITree destTree = destNode != null ? destNode.getUITree() : null;
- TreeRowKey dropNodeKey = (dropEvent.getDropValue() instanceof TreeRowKey) ?
(TreeRowKey) dropEvent.getDropValue() : null;
- TreeNode droppedInNode = dropNodeKey != null ? destTree.getTreeNode(dropNodeKey) :
null;
-
- // resolve drag source attributes
- UITreeNode srcNode = (dropEvent.getDraggableSource() instanceof UITreeNode) ?
(UITreeNode) dropEvent.getDraggableSource() : null;
- UITree srcTree = srcNode != null ? srcNode.getUITree() : null;
- TreeRowKey dragNodeKey = (dropEvent.getDragValue() instanceof TreeRowKey) ?
(TreeRowKey) dropEvent.getDragValue() : null;
- TreeNode draggedNode = dragNodeKey != null ? srcTree.getTreeNode(dragNodeKey) : null;
- if (dropEvent.getDraggableSource() instanceof UIDragSupport && srcTree == null
&& draggedNode == null && dropEvent.getDragValue() instanceof TreeNode) {
- srcTree = destTree;
- draggedNode = (TreeNode) dropEvent.getDragValue();
- dragNodeKey = srcTree.getTreeNodeRowKey(draggedNode) instanceof TreeRowKey ?
(TreeRowKey) srcTree.getTreeNodeRowKey(draggedNode) : null;
- }
-
- // Note: check if we dropped node on to itself or to item instead of folder here
- if (droppedInNode != null && (droppedInNode.equals(draggedNode) ||
droppedInNode.getParent().getParent() != null || draggedNode.getParent().getParent() ==
null)) {
- System.out.println("Warning: Can't drop on itself or to pic itself! Also
can't move folders");
- return;
- }
- FacesContext context = FacesContext.getCurrentInstance();
-
- if (dropNodeKey != null) {
- // add destination node for rerender
- destTree.addRequestKey(dropNodeKey);
-
- Object state = null;
- if (dragNodeKey != null) { // Drag from this or other tree
- TreeNode parentNode = draggedNode.getParent();
- // 1. remove node from tree
- state = srcTree.removeNode(dragNodeKey);
- // 2. add parent for rerender
- Object rowKey = srcTree.getTreeNodeRowKey(parentNode);
- srcTree.addRequestKey(rowKey);
- if (dropEvent.getDraggableSource() instanceof UIDragSupport){
- selectedNodeChildren.remove(draggedNode);
- // if node was gragged in it's parent place dragged node to the end of selected
nodes in grid
- if (droppedInNode.equals(parentNode)) {
- selectedNodeChildren.add(draggedNode);
- }
- }
- } else if (dropEvent.getDragValue() != null) { // Drag from some drag source
- draggedNode = new TreeNodeImpl<String>();
- draggedNode.setData(dropEvent.getDragValue().toString());
- }
-
- // generate new node id
- Object id = getNewId(destTree.getTreeNode(dropNodeKey));
- destTree.addNode(dropNodeKey, draggedNode, id, state);
- }
-
- AjaxContext ac = AjaxContext.getCurrentInstance();
- // Add destination tree to reRender
- try {
- ac.addComponentToAjaxRender(destTree);
- } catch (Exception e) {
- System.err.print(e.getMessage());
- }
-
-
+ public void dropListener(DropEvent dropEvent) {
+
+ // resolve drag destination attributes
+ UITreeNode destNode = (dropEvent.getSource() instanceof UITreeNode) ? (UITreeNode)
dropEvent.getSource() : null;
+ UITree destTree = destNode != null ? destNode.getUITree() : null;
+ TreeRowKey dropNodeKey = (dropEvent.getDropValue() instanceof TreeRowKey) ? (TreeRowKey)
dropEvent.getDropValue() : null;
+ TreeNode droppedInNode = dropNodeKey != null ? destTree.getTreeNode(dropNodeKey) :
null;
+
+ // resolve drag source attributes
+ UITreeNode srcNode = (dropEvent.getDraggableSource() instanceof UITreeNode) ?
(UITreeNode) dropEvent.getDraggableSource() : null;
+ UITree srcTree = srcNode != null ? srcNode.getUITree() : null;
+ TreeRowKey dragNodeKey = (dropEvent.getDragValue() instanceof TreeRowKey) ? (TreeRowKey)
dropEvent.getDragValue() : null;
+ TreeNode draggedNode = dragNodeKey != null ? srcTree.getTreeNode(dragNodeKey) : null;
+ if (dropEvent.getDraggableSource() instanceof UIDragSupport && srcTree == null
&& draggedNode == null && dropEvent.getDragValue() instanceof TreeNode) {
+ srcTree = destTree;
+ draggedNode = (TreeNode) dropEvent.getDragValue();
+ dragNodeKey = srcTree.getTreeNodeRowKey(draggedNode) instanceof TreeRowKey ?
(TreeRowKey) srcTree.getTreeNodeRowKey(draggedNode) : null;
}
-
- public List<TreeNode<String>> getSelectedNodeChildren() {
- return selectedNodeChildren;
+
+ // Note: check if we dropped node on to itself or to item instead of
+ // folder here
+ if (droppedInNode != null && (droppedInNode.equals(draggedNode) ||
droppedInNode.getParent().getParent() != null || draggedNode.getParent().getParent() ==
null)) {
+ System.out.println("Warning: Can't drop on itself or to pic itself! Also
can't move folders");
+ return;
}
- public void setSelectedNodeChildren(List<TreeNode<String>>
selectedNodeChildren) {
- this.selectedNodeChildren = selectedNodeChildren;
- }
-
- public TreeNode getTreeNode() {
- if (rootNode == null) {
- loadTree();
+ FacesContext context = FacesContext.getCurrentInstance();
+
+ if (dropNodeKey != null) {
+ // add destination node for rerender
+ destTree.addRequestKey(dropNodeKey);
+
+ Object state = null;
+ if (dragNodeKey != null) { // Drag from this or other tree
+ TreeNode parentNode = draggedNode.getParent();
+ // 1. remove node from tree
+ state = srcTree.removeNode(dragNodeKey);
+ // 2. add parent for rerender
+ Object rowKey = srcTree.getTreeNodeRowKey(parentNode);
+ srcTree.addRequestKey(rowKey);
+ if (dropEvent.getDraggableSource() instanceof UIDragSupport) {
+ selectedNodeChildren.remove(draggedNode);
+ // if node was gragged in it's parent place dragged node to
+ // the end of selected nodes in grid
+ if (droppedInNode.equals(parentNode)) {
+ selectedNodeChildren.add(draggedNode);
+ }
}
- return rootNode;
+ } else if (dropEvent.getDragValue() != null) { // Drag from some
+ // drag source
+ draggedNode = new DemoTreeNodeImpl<String>();
+ draggedNode.setData(dropEvent.getDragValue().toString());
+ }
+
+ // generate new node id
+ Object id = getNewId(destTree.getTreeNode(dropNodeKey));
+ destTree.addNode(dropNodeKey, draggedNode, id, state);
}
- public String getNodeTitle() {
- return nodeTitle;
+ AjaxContext ac = AjaxContext.getCurrentInstance();
+ // Add destination tree to reRender
+ try {
+ ac.addComponentToAjaxRender(destTree);
+ } catch (Exception e) {
+ System.err.print(e.getMessage());
}
- public void setNodeTitle(String nodeTitle) {
- this.nodeTitle = nodeTitle;
+ }
+
+ public List<TreeNode<String>> getSelectedNodeChildren() {
+ return selectedNodeChildren;
+ }
+
+ public void setSelectedNodeChildren(List<TreeNode<String>>
selectedNodeChildren) {
+ this.selectedNodeChildren = selectedNodeChildren;
+ }
+
+ public TreeNode getTreeNode() {
+ if (rootNode == null) {
+ loadTree();
}
+ return rootNode;
+ }
+ public String getNodeTitle() {
+ return nodeTitle;
+ }
+
+ public void setNodeTitle(String nodeTitle) {
+ this.nodeTitle = nodeTitle;
+ }
+
}
Modified:
trunk/samples/richfaces-demo/src/main/webapp/richfaces/tree/examples/simple-tree-data-dnd.properties
===================================================================
---
trunk/samples/richfaces-demo/src/main/webapp/richfaces/tree/examples/simple-tree-data-dnd.properties 2008-09-05
10:57:33 UTC (rev 10320)
+++
trunk/samples/richfaces-demo/src/main/webapp/richfaces/tree/examples/simple-tree-data-dnd.properties 2008-09-05
11:17:23 UTC (rev 10321)
@@ -1,11 +1,12 @@
-1=Unsorted
-1.1=pic1.jpg
-1.2=pic2.jpg
-1.3=pic3.jpg
-1.4=pic4.jpg
-1.5=pic5.jpg
-1.6=pic6.jpg
-1.7=pic7.jpg
-1.8=pic8.jpg
-2 = Favorites
-3 = Trash
\ No newline at end of file
+#path=name - type
+1=Unsorted - node
+1.1=pic1.jpg - leaf
+1.2=pic2.jpg - leaf
+1.3=pic3.jpg - leaf
+1.4=pic4.jpg - leaf
+1.5=pic5.jpg - leaf
+1.6=pic6.jpg - leaf
+1.7=pic7.jpg - leaf
+1.8=pic8.jpg - leaf
+2 = Favorites - node
+3 = Trash - node
\ No newline at end of file
Modified:
trunk/samples/richfaces-demo/src/main/webapp/richfaces/tree/examples/simpleDnd.xhtml
===================================================================
---
trunk/samples/richfaces-demo/src/main/webapp/richfaces/tree/examples/simpleDnd.xhtml 2008-09-05
10:57:33 UTC (rev 10320)
+++
trunk/samples/richfaces-demo/src/main/webapp/richfaces/tree/examples/simpleDnd.xhtml 2008-09-05
11:17:23 UTC (rev 10321)
@@ -21,7 +21,7 @@
<rich:dragIndicator id="indicator1" >
<f:facet name="single">
- {draggedImage}
+ <h:graphicImage styleClass="indicatorPicture"
value="/richfaces/jQuery/images/{draggedImage}" />
</f:facet>
</rich:dragIndicator>
<rich:dragIndicator id="indicator2" />
@@ -40,11 +40,9 @@
</rich:treeNode>
</rich:tree>
<rich:panel id="selectedNode">
- <rich:dataGrid id="selectedNodeGrid"
value="#{simpleTreeDndBean.selectedNodeChildren}" var="item"
columns="3" border="0">
+ <rich:dataGrid id="selectedNodeGrid" style="display: #{!empty
simpleTreeDndBean.selectedNodeChildren ? '' : 'none'}"
value="#{simpleTreeDndBean.selectedNodeChildren}" var="item"
columns="3" border="0">
<rich:dragSupport dragIndicator="indicator1" dragType="pic"
dragValue="#{item}" reRender="selectedNodeGrid">
- <rich:dndParam name="draggedImage">
- <h:graphicImage styleClass="indicatorPicture"
value="/richfaces/jQuery/images/#{item.data}" />
- </rich:dndParam>
+ <rich:dndParam name="draggedImage"
value="#{item.data}"/>
</rich:dragSupport>
<h:graphicImage value="/richfaces/jQuery/images/#{item.data}" />
</rich:dataGrid>