Please... Need help on DragnDrop Tree...
alclientview Aug 21, 2009 5:42 AMI have the following code almost the same as the demo website except I hoping to enable drag and drop to any folder and not only the
top folders (under root):
<rich:dragIndicator id="indicator1" >
 <f:facet name="single">
 <h:graphicImage styleClass="indicatorPicture" value="/richfaces/jQuery/images/{draggedImage}" />
 </f:facet>
 </rich:dragIndicator>
 <rich:dragIndicator id="indicator2" />
 <h:panelGrid columns="2" width="100%" columnClasses="col1,col2">
 <rich:tree ajaxKeys="#{null}" style="width:300px" nodeSelectListener="#{treeDndBean.processSelection}"
 reRender="#{areaToRerender}" ajaxSubmitSelection="true" switchType="client" dragIndicator="indicator2"
 value="#{treeDndBean.treeNode}" var="item" id="tree" treeNodeVar="treeNode"
 dropListener="#{treeDndBean.dropListener}" nodeFace="#{treeNode.leaf ? 'leaf' : 'node'}">
 <rich:treeNode type="node" acceptedTypes="pic">
 <h:outputText value="#{item}"/>
 </rich:treeNode>
 <rich:treeNode type="leaf" dragType="pic">
 <rich:dndParam name="label" type="drag">#{item}</rich:dndParam>
 <h:outputText value="#{item}"/>
 </rich:treeNode>
 </rich:tree>
 <a4j:commandButton value="New folder" action="#{treeDndBean.newFolder}" reRender="tree" />
 <a4j:commandButton value="New leaf" action="#{treeDndBean.newLeaf}" reRender="tree" />
 </h:panelGrid>
Everything works fine except that the dropListener is never called eventhough it is allowed to drop (based on the drag indicator). I overwrote the isLeaf method of TreeNode in my implementation and I made sure, leaf is really a leaf (that is, it has no children). If I replace
nodeFace="#{treeNode.leaf ? 'leaf' : 'node'}"
with
nodeFace="#{treeNode.parent == null ? 'node' : 'leaf'}"
I can drop into top folders (same as the demo).
Another thing I don't understand is that if I write something like nodeFace="#{treeNode.type == 'leaf' ? 'leaf' : 'node'}" when I select a node I have the following exception: Property 'type' not found on type org.richfaces.model.CacheableTreeNodeImpl
No idea where does CacheableTreeNodeImpl come from and to be honest it is hard to understand how this works with the available documentation.
I would really appreciate any help...
Thanks in advance!
Arnaud.
 
    