Have you found the line of code that changes the functionality? If not, do that.
Tracy ________________________________ From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On Behalf Of Rachel Maxim Sent: Tuesday, January 09, 2007 12:49 PM To: flexcoders@yahoogroups.com Subject: [flexcoders] Drag and Drop within TileList - why does my code copy instead of move? Hello, I would really appreciate another set of eyes taking a look at this code to see what I'm doing wrong. I have several tile lists where tiles can be dragged and dropped around. This code is pretty much straight out of the docs plus a few rules, It's working fine except that the tiles are copying, not moving as I want them to. Before I overrode the default drag-and-drop functionality, they moved, but when I implemented my rules to ensure they are being dragged to a list that accepts them, they started copying. Thanks so much for any help! Rachel Maxim <?xml version="1.0" encoding="utf-8"?> <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml <http://www.adobe.com/2006/mxml> " verticalScrollPolicy="auto" horizontalScrollPolicy="off"> <!-- component properties to identify this item for drag and drop listeners --> <mx:String id="userName">{ data.userName}</mx:String> <mx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.controls.List; import mx.core.DragSource; import mx.events.DragEvent; import mx.managers.DragManager; import mx.containers.Tile; import mx.collections.IList; //drag enter handler private function doDragEnter(event:DragEvent):void { //drag target - where item is being dragged var dragInitiator:TileList = TileList(event.currentTarget); //dragged items var items:Array = event.dragSource.dataForFormat("items") as Array; for (var i:uint = 0; i < items.length; i ++) { var fromCaseName:String = items[i].caseName; //the case name that the deal is being dragged from var toCaseName:String = data.caseName; //the case name that the deal is being dragged too //check to ensure drop is allowed on this object if (isDropAllowed(fromCaseName, toCaseName)) { DragManager.acceptDragDrop(dragInitiator); } else { DragManager.NONE; } } } private function doDragOver(event:DragEvent):void { //dragged items var items:Array = event.dragSource.dataForFormat("items") as Array; for (var i:uint = 0; i < items.length; i ++) { var fromCaseName:String = items[i].caseName; //the case name that the deal is being dragged from var toCaseName:String = data.caseName; //the case name that the deal is being dragged too //check to ensure drop is allowed on this object if (isDropAllowed(fromCaseName, toCaseName)) { DragManager.showFeedback(DragManager.MOVE); } else { DragManager.showFeedback (DragManager.NONE); } } } //drop handler private function doDragDrop(event:DragEvent):void { //define the drop target var dropTarget:TileList = TileList(event.currentTarget); //dragged items var items:Array = event.dragSource.dataForFormat("items") as Array; //get the drop location in the destination var dropLoc:int = dropTarget.calculateDropIndex(event); //loop over dragged items to get data from each for (var i:uint = 0; i < items.length; i ++) { trace("The deal " + items[i].caseID + " " + items[i].companyName + " " + items[i].caseName + " was assigned to " + userName); //debugging trace //add to drop target IList(dropTarget.dataProvider).addItemAt(items[i], dropLoc); trace("the deal was dropped at " + dropTarget.dataProvider.getItemAt(dropLoc).caseName); } //once complete, dispatch the drag complete event var dragComplete:Event = new Event('dragComplete',true); this.dispatchEvent(dragComplete); } //business rules that determine if this object can be dropped on the intended target private function isDropAllowed(fromCaseName:String, toCaseName:String):Boolean { //if deal is being dragged to the same caseName, drop is allowed if (fromCaseName == toCaseName) { return true; } else { return false; } } ]]> </mx:Script> <mx:Label text="{data.userName}" top="5" left="5" id="lblCreditName" fontWeight="bold" width="231" textAlign="left"/> <mx:TileList dataProvider="{data.userDeals}" itemRenderer="DealButton" id="tlDeals" columnCount="2" verticalScrollPolicy="auto" horizontalScrollPolicy="off" rowCount="0" rowHeight="40" columnWidth="160" maxHeight="80" direction="horizontal" allowMultipleSelection="false" dragEnabled="true" dragEnter="doDragEnter(event);" dragOver="doDragOver(event);" dragDrop="doDragDrop(event);" paddingBottom="1" paddingTop="1" paddingLeft="1" paddingRight="1" left="0" top="25" right="0" bottom="0" styleName="deal" themeColor="#ffffff"/> </mx:Canvas>