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" 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..