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]