Follow-up on TreePanel

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:

{"text":"myNode","id":"myNodeID","leaf":true,"cls":"file"}

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.

Advertisement

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s