asked
2013-10-11 11:46:49 +0800
cocoes 94 ● 6 Hi,
I'm trying to allow drag and drop on tree rows and columns, but I failed on the first one and have no idea on the second one.
On drag and drop dynamically generated rows , and updated in realtime by a different thread, I've added the following code:
DefaultTreeNode treeNode = (DefaultTreeNode) data;
treeItem.setValue(treeNode);
Treerow tr;
if (treeItem.getTreerow() == null) {
tr = new Treerow();
tr.setParent(treeItem);
} else {
tr = treeItem.getTreerow();
tr.getChildren().clear();
}
MyRowInfo row = (MyRowInfo)treeNode.getData();
if (!row.isLeaf() ) {
tr.setDraggable("true");
tr.setDroppable("true");
tr.addEventListener(Events.ON_DROP, new EventListener<Event>() {
@SuppressWarnings("unchecked")
@Override
public void onEvent(Event event) throws Exception {
Treeitem draggedItem = (Treeitem) ((DropEvent) event).getDragged().getParent();
Treeitem targetItem = (Treeitem) ((DropEvent) event).getTarget().getParent();
draggedItem.getParent().removeChild(draggedItem);
targetItem.getParent().insertBefore(draggedItem, targetItem);
}
});
... some more stuff
But it sometimes duplicate some rows, and sometimes it gets blocked.
So my question is if my code is the best solution to move tree rows considering that the tree rows can have child nodes.
And regarding the columns drag and drop, I've added the following code to each treecol on zul file:
draggable="true" droppable="true" onDrop="move(event.dragged)"
, but have no idea about moving columns code. Any idea?
Many thanx