I have done something similar lately except for the spring loaded opening mechanism. The problem that I saw with Alex Harui's approach was that you had to turn a leaf into a branch before being able to drop a node on it. That impacts the icons that represent the nodes and I still wanted a leaf node to be represented with a leaf icon up to the point where it contains children. If all your nodes (leaf or branch) have the same icon, then you could make all the nodes branches through a custom ITreeDataDescriptor. You'll have to live with having the small arrow to the left on every node. What I finally did was to overload some tree methods. If the drag & drop is over the bottom half portion of a node, I highlight it and rewrite the parent and rowIndex properties of the _dropData property. That works well. You could extend the logic to open up the folder after the drop and add a spring loaded opening mechanism. I'm attaching some code but I had to clean it up to remove proprietary information. Not sure if it still compiles but that's a starting point :-) Hope it helps!
TreeEx.as
Description: TreeEx.as