Hi all,

    From looking inside of Tree.as class, I got the understanding that
Tree's dataProvider is updated with a new position of draggedNode
inside event handler for "dragComplete" event called
'dragCompleteHandler'.

   Thus, I've subscribed to "dragComplete" event to work with the
updated copy of Tree's dataProvider.

    Unfortunately, I had found out that I cannot get an access to
'draggedItems' Array based on data from DragEvent inside custom
"dragComplete" event handler.

My custom event handler function listing:
---------------------------------------------------------
private function onDragComplete(event : DragEvent) : void {
                                event.preventDefault();
                                var draggedItems : Array =
(event.dragSource.dataForFormat("treeItems") as Array);
                                for each (var draggedItem : XML in 
draggedItems) {
                                        var parentTarget : XML = 
tree.getParentItem(draggedItem);
                                        trace ("onDragComplete", 
draggedItems.length);
                                }
                        }
---------------------------------------------------------

  The trace command inside this function outputs that 'draggedItems'
Array length is 0, when I successfully finish the drag operation
within a Tree with dragged Item.

  When I subscribe to "dragDrop" event, I have an access to
'draggedItems' Array without the problems - you can check it by
yourself by running the code below.

Full MXML listing code follows:
-----------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";       
        layout="vertical"
        creationComplete="onCreationComplete()">
        
        <mx:Script>
                <![CDATA[
                        import mx.events.DragEvent;
                        private static const itemsXML : XML =
                                <root>
                                        <item label="item 1">
                                                <a label="a1">
                                                        <x label="x1" />
                                                        <y label="y1" />
                                                        <z label="z1" />
                                                </a>
                                                <b label="b1" />
                                                <c label="c1" />
                                        </item>                                 
                                </root>;
                                
                        private function onCreationComplete() : void {
                                tree.dataProvider = itemsXML;
                        }                                               
                        
                        private function onDragDrop(event : DragEvent) : void {
                                var draggedItems : Array =
(event.dragSource.dataForFormat("treeItems") as Array);
                                for each (var draggedItem : XML in 
draggedItems) {                              
                                    var parentTarget : XML = 
tree.getParentItem(draggedItem);
                                    trace ("onDragDrop", draggedItems.length);
                                }                                               
                
                        }
                        private function onDragComplete(event : DragEvent) : 
void {
                                event.preventDefault();
                                var draggedItems : Array =
(event.dragSource.dataForFormat("treeItems") as Array);
                                for each (var draggedItem : XML in 
draggedItems) {
                                        var parentTarget : XML = 
tree.getParentItem(draggedItem);
                                        trace ("onDragComplete", 
draggedItems.length);
                                }
                        }
                        
                ]]>
        </mx:Script>    
        <mx:Tree id="tree"
                width="500"
                height="500"
                labelField="@label"
                dragEnabled="true"
                dropEnabled="true"
                showRoot="false"
                dragDrop="onDragDrop(event)"
                dragComplete="onDragComplete(event)"/>
</mx:Application>
-----------------------------------------------------------------------

--
Med venlig hilsen / Best regards
Andriy Panas
[EMAIL PROTECTED]

Reply via email to