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

Reply via email to