If you look at the implementations in Tree.as, you'll see that dragDropHandler and dragCompleteHandler are special. One or the other handles the remove and add instead of the default way where dragDrop adds and dragComplete removes.
That's because we have to remove from XML before adding. So, knowing that, I think you need a preventDefault() call in onDragDrop ________________________________ From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of sk_acura Sent: Monday, June 02, 2008 12:59 PM To: [email protected] Subject: [flexcoders] Moving Nodes across Trees (with in the tree is works fine) Hi All, I am trying to have the drag and drop feature acoross two trees in my app. (the two trees are called source Tree and traget Tree). Here i am posting the code below ( i got this from one of the post in this forum and added a second tree..) I can move the items with in the tree without any problems..How ever i cannot move items from one tree to another..!! [CODE] <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml <http://www.adobe.com/2006/mxml> " creationComplete="init()" width="100%" height="100%" layout="absolute" backgroundColor="white"> <mx:Script> <![CDATA[ import test.Collections; import mx.managers.CursorManager; import mx.collections.ItemResponder; import mx.rpc.AsyncToken; import mx.rpc.remoting.RemoteObject; import test.Node; import test.CollectionBrowserNode; import mx.controls.List; import mx.core.DragSource; import mx.managers.DragManager; import mx.events.*; import mx.rpc.events.ResultEvent; import mx.controls.Alert; import mx.collections.ArrayCollection; import mx.utils.ObjectUtil; private var sourceArrayCollection:ArrayCollection = null; private var targetArrayCollection:ArrayCollection = null; public function init():void{ trace("Here in init() of RearrangeCollection "); sourceArrayCollection = new ArrayCollection(); targetArrayCollection = new ArrayCollection(); var collectionList:ArrayCollection = new ArrayCollection(); populateChildNodes("Source Tree",sourceArrayCollection); populateChildNodes("Target Tree",targetArrayCollection); sourceCollectionTree.dataProvider = sourceArrayCollection; targetCollectionTree.dataProvider = targetArrayCollection; } private function populateChildNodes (nodeNamePrefix:String,collection:ArrayCollection):void{ for(var i:int =0;i<5;i++){ var node:CollectionBrowserNode = new CollectionBrowserNode(); node.nodeId =nodeNamePrefix+"-Id["+i+"]"; node.nodeLabel =nodeNamePrefix+"-Label["+i+"]"; node.children = new ArrayCollection(); var childNode:CollectionBrowserNode = new CollectionBrowserNode(); childNode.nodeId =nodeNamePrefix+"child-Id["+i+"]"; childNode.nodeLabel =nodeNamePrefix+"Child Label ["+i+"]"; node.children.addItem(childNode); collection.addItem(node); } } //event for tree Click private function treeClickHandler(evt:MouseEvent):void{ var id:String = [EMAIL PROTECTED]; var treeType:String = [EMAIL PROTECTED]; Alert.show("Here in click Handler"); } public function treeLabel( item:Object ) : String{ //trace("Here in treeLabel"); var node:CollectionBrowserNode = null; node = CollectionBrowserNode(item); //trace(" Here in treeLabel and Node ="+node.className); return node.nodeLabel; } private function itemSelected():void{ trace("Here in itemSelected.."); } private function onDragDrop(event : DragEvent) : void { var draggedItems : Array = (event.dragSource.dataForFormat("treeItems") as Array); for each (var draggedItem : CollectionBrowserNode in draggedItems) { var parentTarget : CollectionBrowserNode = (Tree (event.currentTarget)).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 : CollectionBrowserNode in draggedItems) { var parentTarget : CollectionBrowserNode = (Tree (event.currentTarget)).getParentItem (draggedItem); trace ("onDragComplete", draggedItems.length); } } ]]> </mx:Script> <mx:HDividedBox width="100%" height="100%"> <mx:VBox verticalAlign="top" height="100%" width="100%"> <mx:Tree id="sourceCollectionTree" labelFunction="treeLabel" showRoot="true" width="100%" height="100%" dragEnabled="true" dropEnabled="true" dragDrop="onDragDrop(event)" dragComplete="onDragComplete(event)" /> </mx:VBox> <mx:VBox verticalAlign="top" height="100%" width="100%"> <mx:Tree id="targetCollectionTree" labelFunction="treeLabel" showRoot="true" width="100%" height="100%" dragEnabled="true" dropEnabled="true" dragDrop="onDragDrop(event)" dragComplete="onDragComplete(event)" /> </mx:VBox> </mx:HDividedBox> </mx:Application> [/CODE] CollectionBrowserNode.as [CODE] package test { public class CollectionBrowserNode extends Node { public function CollectionBrowserNode() { super(); } public function setNode(node:Node):void{ if(node!=null){ this.childElements = node.childElements; this.children = node.children; this.leaf = node.leaf; this.nodeId = node.nodeId; this.nodeLabel = node.nodeLabel; this.parent = node.parent; this.root = node.root; } } public var dateCreated:String; public var propertyHolderMap:Object; public override function toString():String{ return "CollectionBrowserNode[ nodeId="+nodeId+", nodeLabel="+nodeLabel+"]"; } } } [/CODE] Node.as [CODE] package test { import mx.collections.ArrayCollection; public class Node { public var description:String; public var nodeId:String; public var nodeLabel:String; public var className:String; public var root:Boolean; public var leaf:Boolean; public var container:Boolean; public var childElements:ArrayCollection; public var children:ArrayCollection; public var parent:Node; public function toString():String{ return "Node[ nodeId="+nodeId+", nodeLabel="+nodeLabel+"]"; } } } [/CODE] setting the dragMoveEnabled has no effect. Thanks Mars..

