Regression in trees drag and drop support in RF 3.3.0.BETA3
nfeybesse Dec 13, 2008 12:42 AMHi
The following code works nice in Richfaces 3.3.0.BETA2 and don't work anymore in Richfaces 3.3.0.BETA3.
Error message :
05:27:16,473 INFO [lifecycle] WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=form:tree:j__id3:0:j__id3:1:[severity=(ERROR 2), summary=(Dropzone [form:tree:j__id3:0:j__id3:1:] with accepted types null cannot accept Draggable [form:tree:j__id3:0:j__id3:1::treeNode-] with dragType [node]), detail=(Dropzone [form:tree:j__id3:0:j__id3:1:]with accepted types null cannot accept Draggable [form:tree:j__id3:0:j__id3:1::treeNode-] with dragType [node])]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:a="http://richfaces.org/a4j"
xmlns:c="http://java.sun.com/jstl/core"
xmlns:rich="http://richfaces.org/rich">
<body>
<f:view>
<rich:panel>
<rich:dragIndicator id="treeindicator" />
<a:form id="form">
<rich:tree id="tree">
<rich:recursiveTreeNodesAdaptor roots="#{test.root}" var="item"
nodes="#{item.subNodes}">
<rich:treeNode id="treeNode-#{item}"
acceptedTypes="node"
dragType="node"
dragValue="#{item}"
dropValue="#{item}"
dragIndicator=":treeindicator"
dropListener="#{test.processDrop}">
<rich:dndParam name="label" type="drag" value="#{item}" />
<h:outputText value="#{item.name}" />
</rich:treeNode>
</rich:recursiveTreeNodesAdaptor>
</rich:tree>
</a:form>
</rich:panel>
</f:view>
</body>
</html>
Bean code :
package com.genericsystem.application;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.log.Log;
import org.jboss.seam.log.Logging;
import org.richfaces.event.DropEvent;
@Name("test")
@Scope(ScopeType.SESSION)
public class Test {
private static final Log log=Logging.getLog(Test.class);
private Node root=new Node("Node1","Node1.1","Node1.2","Node1.3","Node1.4");
public Node getRoot() {
return root;
}
public void processDrop(DropEvent dropEvent){
log.info("processDrop on : "+this);
log.info("Drag value : "+dropEvent.getDragValue());
log.info("Drop value : "+dropEvent.getDropValue());
}
public class Node {
private List<Node> subNodes=new ArrayList<Node>();
private String name;
public Node(String name, String... subNodeNames){
this.name=name;
for(String subNodeName:Arrays.asList(subNodeNames))
subNodes.add(new Node(subNodeName));
}
public List<Node> getSubNodes() {
return subNodes;
}
public String getName() {
return name;
}
@Override
public String toString(){
return getName();
}
}
}