Here's a bit of code that might help.
Silly test app: -----------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<Application xmlns="http://www.adobe.com/2006/mxml" layout="absolute"
creationComplete="_onLoad()" xmlns:local="*">
<Script>
<![CDATA[
import mx.events.*;
import mx.collections.ArrayCollection;
[Bindable] private var _data:ArrayCollection;
private function _onLoad():void
{
var a:Array = [];
var o:Object = {};
var o1:Object = {};
var o2:Object = {};
var o3:Object = {};
var c:int, d:int, e:int;
for( var i:int = 0; i < 100; i++ )
{
c = _randIntRange(2,20);
o = {name:'Great Grand-Parent '+(i+1), children:[]};
for( var j:int = 0; j < c; j++ )
{
o1 = {name:'Grand Parent '+(j+1), children:[]};
d = _randIntRange(1,5);
for( var k:int = 0; k < d; k++ )
{
o2 = {name:'Parent '+(k+1), children:[]};
e = _randIntRange(1,2);
for( var l:int = 0; l < e; l++ )
{
o3 = {name:'Child '+(l+1)};
o2.children.push(o3);
}
o1.children.push(o2);
}
o.children.push(o1);
}
a.push(o);
}
_data = new ArrayCollection(a);
}
private function _randIntRange( start:Number, end:Number ):int
{
return int(Math.floor(start +(Math.random() * (end - start))));
}
]]>
</Script>
<local:TestTree id="tr" width="250" height="100%" dataProvider="{_data}"
labelField="name"
dragEnabled="true" dropEnabled="true" dragMoveEnabled="true"/>
</Application>
Silly test tree: -----------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<Tree xmlns="http://www.adobe.com/2006/mxml">
<Script>
<![CDATA[
import mx.events.*;
import mx.controls.listClasses.*;
private var _currentRenderer:IListItemRenderer;
private var _draggedItem:Object;
override protected function mouseOverHandler(event:MouseEvent):void
{
super.mouseOverHandler(event);
var item:IListItemRenderer = mouseEventToItemRenderer(event);
if ( item != null && _currentRenderer != item )
{
_currentRenderer = item;
trace(className + '::mouseMoveHandler(): ' +
_currentRenderer.data['name'] );
}
}
override protected function dragOverHandler(event:DragEvent):void
{
_draggedItem = event.dragSource.dataForFormat('treeItems')[0];
trace(className + '::dragOverHandler(): dragging (' +
_draggedItem['name'] + ') over (' + _currentRenderer.data['name'] + ')' );
}
]]>
</Script>
</Tree>
Hope that helps a bit.
--Max