In this post, I had the following questions:
- How do I set leaf node?
- How do I configure to change the initial “move” behavior of drag-and-drop into a “copy” action so the node in the source tree doesn’t disappear?
Here are my own answers:
To set leaf node, I just updated the
sandbox function to return an array of node definition objects instead of simple text. For example, a leaf node definition can look like the following:
To convert a “move” to a “copy” behavior, I had to listen on “beforeremove” event and call
appendchild() function with a new
Ext.tree.AsyncTreeNode object. The new node object contains data from the original node. This effectively undo
remove operation. I added in an extra if statement for situations when I actually want to remove a node.
Beyond that, I also wanted to add the ability to not add duplicate nodes. So, I had to listen on “beforenodedrop” event and call
findChild() function to find matching node based on
text attribute. If the function returns a non-null object, then I called remove function. The code will continue add the node and the net result will be a single node, which is what I wanted.