I forgot to mention that I posted the same question at stackoverflow.com (http://stackoverflow.com/questions/223324/how-does-one-cancelunaccept-a-drag-and-drop-operation-in-flex-3).
--- In [email protected], "Sean" <[EMAIL PROTECTED]> wrote: > > Goal: Allow the user to delete a record by dragging a row from an > AdvancedDataGrid, dropping it onto a trash-can icon and verify the > user meant to do that via a popup alert with "OK" and "Cancel" buttons. > > What is working: > * Dragging/Dropping a row onto the trash icon. > * If the user clicks the "OK" button, the record is deleted. > * If the user clicks the "Cancel" button, the operation is canceled. > > Problem: After the user clicks the "Cancel" button and the popup alert > closes, no rows in the ADG can be dragged. I've discovered that after > sorting the ADG, by clicking on a column header, the user can begin > dragging rows again. > > Code Flow: > 1. Drag/drop ADG row onto trash icon. > 2. Display confirmation Alert box. > 3. If user clicked "Cancel" button, redisplay the ADG. > > Code: > <mx:Image source="{trashImage}" buttonMode="true" > toolTip="drag a participant here to delete them from the project" > dragDrop="deleteParticipantDrop(event)" > dragEnter="deleteParticipantEnter(event)" > dragExit="deleteParticipantDragExit(event)" top="4" right="122" > id="image2" /> > > // trashImage Event Handlers: > private function deleteParticipantEnter(event:DragEvent):void > { > var component:IUIComponent = IUIComponent(event.currentTarget); > dragComponent = component; > DragManager.acceptDragDrop(component); > DragManager.showFeedback(DragManager.MOVE); > deleteParticipantDragEvent = event; > } > > private function deleteParticipantDrop(event:DragEvent):void > { > var selectedKitNum:String = memberRpt.selectedItem.KitNum; > var selectedName:String = memberRpt.selectedItem.ParticipantName; > var component:IUIComponent = IUIComponent(event.currentTarget); > dragComponent = component; > DragManager.acceptDragDrop(component); > isEditingParticipantInfo = false; > isDeletingParticipant = true; > deleteParticipantDropEvent = event; > event.stopImmediatePropagation(); // Added as per mrm > alert.confirm("Are you sure you want to delete this > participant, Kit #" + memberRpt.selectedItem.KitNum + " (" + > memberRpt.selectedItem.ParticipantName + ") from the > project? This cannot be reversed!! An email will be " + > "sent to notify this participant and you will receive > a copy of it for your records.", confirmRemoveParticipant); > } > > private function deleteParticipantDragExit(event:DragEvent):void > { > var component:IUIComponent = IUIComponent(event.currentTarget); > dragComponent = component; > DragManager.acceptDragDrop(component); > DragManager.showFeedback(DragManager.NONE); > } > > private function confirmRemoveParticipant(event:CloseEvent):void > { > if (event.detail == Alert.YES) > { > deleteReason = > DeleteParticipantTitleWindow(PopUpManager.createPopUp( this, > DeleteParticipantTitleWindow , true)); > dispatchEvent(deleteParticipantDropEvent); // Added as > per mrm > PopUpManager.centerPopUp(deleteReason); > deleteReason.showCloseButton = true; > deleteReason.title = "Reason for removal from project"; > deleteReason.addEventListener("close", > cleanupRemoveParticipant); > deleteReason["cancelButton"].addEventListener("click", > cleanupRemoveParticipant); > deleteReason["okButton"].addEventListener("click", > finalizeDeleteParticipant); > isDeletingParticipant = false; > } > else > { > cleanupRemoveParticipant(); > } > } > > private function cleanupRemoveParticipant(event:Event = null):void > { > memberRpt.invalidateDisplayList(); > memberRpt.executeBindings(); > if (deleteReason != null) > { > PopUpManager.removePopUp(deleteReason); > deleteReason = null; > } > } > > public function finalizeDeleteParticipant(event:Event):void > { > if (deleteReason.reason.text != null) > { > selectedReportItem = memberRpt.selectedItem; > selectedReportItemIndex = memberRpt.selectedIndex; > memberReportData.removeItemAt(selectedReportItemIndex); > } > else > { > alert.info("You must provide a reason for removing a > participant from your project!!"); > } > > cleanupRemoveParticipant(); > } >

