Repository: flex-asjs
Updated Branches:
  refs/heads/develop fd4ffd905 -> 49831cb0c


Created specialized bead for DataGrid drag and drop operations so that column 
re-order can work with DataGrids that also want to do drag and drop. Added 
events to the SingleSelection drag and drop beads.


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/49831cb0
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/49831cb0
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/49831cb0

Branch: refs/heads/develop
Commit: 49831cb0ca178fa3f5e10044ddc5c93f1fde3948
Parents: fd4ffd9
Author: Peter Ent <p...@apache.org>
Authored: Wed Sep 27 10:56:52 2017 -0400
Committer: Peter Ent <p...@apache.org>
Committed: Wed Sep 27 10:56:52 2017 -0400

----------------------------------------------------------------------
 .../org/apache/flex/html/beads/DataGridView.as  |   2 +
 .../flex/org/apache/flex/utils/PointUtils.as    |  24 +-
 .../DragDrop/src/main/flex/DragDropClasses.as   |   2 +
 .../flex/html/beads/ButtonBarReorderBead.as     |   7 +-
 .../flex/html/beads/DataGridDragDropBead.as     | 243 +++++++++++++++++++
 .../html/beads/SingleSelectionDragImageBead.as  |   6 +-
 .../html/beads/SingleSelectionDragSourceBead.as |  77 +++++-
 .../html/beads/SingleSelectionDropTargetBead.as |  90 +++++++
 .../beads/controllers/DragMouseController.as    | 118 +++++----
 .../beads/controllers/DropMouseController.as    |  74 +++---
 .../src/main/resources/basic-manifest.xml       |   2 +
 11 files changed, 533 insertions(+), 112 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/49831cb0/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/DataGridView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/DataGridView.as
 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/DataGridView.as
index 5f58cf5..6497e4d 100644
--- 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/DataGridView.as
+++ 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/DataGridView.as
@@ -200,6 +200,8 @@ package org.apache.flex.html.beads
 
                                host.addEventListener("widthChanged", 
handleSizeChanges);
                                host.addEventListener("heightChanged", 
handleSizeChanges);
+
+                               host.dispatchEvent(new 
Event("dataGridViewCreated"));
                        }
 
                        /**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/49831cb0/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/PointUtils.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/PointUtils.as 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/PointUtils.as
index a3bf905..c8dbfa7 100644
--- a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/PointUtils.as
+++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/PointUtils.as
@@ -24,14 +24,14 @@ package org.apache.flex.utils
         import flash.geom.Point;
            import flash.display.Stage;
     }
-    
+
     import org.apache.flex.core.IUIBase;
     import org.apache.flex.geom.Point;
 
        /**
         *  The PointUtils class is a collection of static functions that 
convert
      *  Points between coordinate spaces.
-        *  
+        *
         *  @langversion 3.0
         *  @playerversion Flash 10.2
         *  @playerversion AIR 2.6
@@ -46,13 +46,13 @@ package org.apache.flex.utils
                {
                        throw new Error("PointUtils should not be 
instantiated.");
                }
-               
+
                /**
                 *  Converts a point from global coordinates to local 
coordinates
-                * 
+                *
                 *  @param point The point being converted.
                 *  @param local The component used as reference for the 
conversion.
-                *  
+                *
                 *  @langversion 3.0
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
@@ -71,13 +71,13 @@ package org.apache.flex.utils
                 var x:Number = pt.x;
                 var y:Number = pt.y;
                 var element:HTMLElement = local.element as HTMLElement;
-                
+
                 do {
                     x -= element.offsetLeft;
                     y -= element.offsetTop;
                                        if (local['parent'] !== undefined) {
                         local = local.parent;
-                        element = local.element as HTMLElement;
+                        element = local ? local.element as HTMLElement : null;
                     } else {
                         element = null;
                     }
@@ -87,13 +87,13 @@ package org.apache.flex.utils
 
             }
                }
-               
+
         /**
          *  Converts a point from local coordinates to global coordinates
-         * 
+         *
          *  @param point The point being converted.
          *  @param local The component used as reference for the conversion.
-         *  
+         *
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
@@ -116,12 +116,12 @@ package org.apache.flex.utils
                 var x:Number = pt.x;
                 var y:Number = pt.y;
                 var element:HTMLElement = local.element as HTMLElement;
-                
+
                                if ( element.getBoundingClientRect ) {// TODO 
take scrollbar widths into account
                                        var rect:Object = 
element.getBoundingClientRect();
                                        x = rect.left + x;
                                        y = rect.top + y;
-                               } else { // for older browsers, but 
offsetParent is soon to be deprecated from from chrome 
+                               } else { // for older browsers, but 
offsetParent is soon to be deprecated from from chrome
                        do {
                            x += element.offsetLeft;
                            y += element.offsetTop;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/49831cb0/frameworks/projects/DragDrop/src/main/flex/DragDropClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/DragDrop/src/main/flex/DragDropClasses.as 
b/frameworks/projects/DragDrop/src/main/flex/DragDropClasses.as
index c62250d..1c09aac 100644
--- a/frameworks/projects/DragDrop/src/main/flex/DragDropClasses.as
+++ b/frameworks/projects/DragDrop/src/main/flex/DragDropClasses.as
@@ -45,6 +45,8 @@ internal class DragDropClasses
        import org.apache.flex.html.beads.DataGridColumnReorderView; 
DataGridColumnReorderView;
        import org.apache.flex.html.beads.ButtonBarReorderBead; 
ButtonBarReorderBead;
 
+       import org.apache.flex.html.beads.DataGridDragDropBead; 
DataGridDragDropBead;
+
 }
 
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/49831cb0/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/ButtonBarReorderBead.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/ButtonBarReorderBead.as
 
b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/ButtonBarReorderBead.as
index cc66ba7..866be8c 100644
--- 
a/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/ButtonBarReorderBead.as
+++ 
b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/ButtonBarReorderBead.as
@@ -82,16 +82,21 @@ package org.apache.flex.html.beads
 
                /**
                 * @private
+                * @flexjsignoretypecoercion 
org.apache.flex.events.IEventDispatcher
                 */
                public function set strand(value:IStrand):void
                {
                        _strand = value;
 
-                       dropDirection = "horizontal";
+                       dropDirection = "vertical";
 
                        _dragController = new DragMouseController();
                        _strand.addBead(_dragController);
 
+                       
IEventDispatcher(_strand).removeEventListener(DragEvent.DRAG_START, 
handleDragStart);
+                       
IEventDispatcher(_strand).removeEventListener(DragEvent.DRAG_MOVE, 
handleDragMove);
+                       
IEventDispatcher(_strand).removeEventListener(DragEvent.DRAG_END, 
handleDragEnd);
+
                        
IEventDispatcher(_strand).addEventListener(DragEvent.DRAG_START, 
handleDragStart);
                        
IEventDispatcher(_strand).addEventListener(DragEvent.DRAG_MOVE, handleDragMove);
                        
IEventDispatcher(_strand).addEventListener(DragEvent.DRAG_END, handleDragEnd);

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/49831cb0/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/DataGridDragDropBead.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/DataGridDragDropBead.as
 
b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/DataGridDragDropBead.as
new file mode 100644
index 0000000..439fe53
--- /dev/null
+++ 
b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/DataGridDragDropBead.as
@@ -0,0 +1,243 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.html.beads
+{
+       import org.apache.flex.core.IBead;
+       import org.apache.flex.core.IChild;
+       import org.apache.flex.core.IDataProviderModel;
+       import org.apache.flex.core.IStrand;
+       import org.apache.flex.core.IItemRenderer;
+       import org.apache.flex.core.UIBase;
+       import org.apache.flex.events.Event;
+       import org.apache.flex.events.EventDispatcher;
+       import org.apache.flex.events.IEventDispatcher;
+       import org.apache.flex.events.DragEvent;
+       import org.apache.flex.html.DataGrid;
+       import org.apache.flex.html.supportClasses.DataGridColumn;
+       import org.apache.flex.html.beads.IDataGridView;
+       import org.apache.flex.html.beads.SingleSelectionDragImageBead;
+       import org.apache.flex.html.beads.SingleSelectionDragSourceBead;
+       import org.apache.flex.html.beads.SingleSelectionDropTargetBead;
+       import org.apache.flex.html.beads.SingleSelectionDropIndicatorBead;
+       import org.apache.flex.html.beads.DataGridWithDrawingLayerLayout;
+       import org.apache.flex.html.beads.DataGridDrawingLayerBead;
+
+       /**
+        *  The DataGridDragDropBead bead should be added to the DataGrid when
+        *  drag and drop operations are required. Rather than using the drag 
and
+        *  drop beads individually, this bead will add them as needed and 
monitor
+        *  events to insure the drag and drop operations are handled property
+        *  for the DataGrid.
+        *
+        *  @viewbead
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.9
+        */
+       public class DataGridDragDropBead extends EventDispatcher implements 
IBead
+       {
+               /**
+                *  constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.9
+                */
+               public function DataGridDragDropBead()
+               {
+                       super();
+               }
+
+               private var _dragType:String = "move";
+
+               /**
+                * The type of drag operation to perform: move or copy.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.9
+                */
+               public function get dragType():String
+               {
+                       return _dragType;
+               }
+               public function set dragType(value:String):void
+               {
+                       _dragType = value;
+               }
+
+               private var _allowDrag:Boolean = true;
+
+               /**
+                * Sets whether or not to allow the DataGrid to be the source
+                * of a drag operation. The default is true.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.9
+                */
+               public function get allowDrag():Boolean
+               {
+                       return _allowDrag;
+               }
+               public function set allowDrag(value:Boolean):void
+               {
+                       _allowDrag = value;
+               }
+
+               private var _allowDrop:Boolean = true;
+
+               /**
+                * Sets whether or not to allow the DataGrid to be the target
+                * of a drag/drop operation. The default is true.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.9
+                */
+               public function get allowDrop():Boolean
+               {
+                       return _allowDrop;
+               }
+               public function set allowDrop(value:Boolean):void
+               {
+                       _allowDrop = value;
+               }
+
+
+               private var _strand:IStrand;
+               private var _listArea: UIBase;
+
+
+               /**
+                *  @copy org.apache.flex.core.IBead#strand
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.9
+                */
+               public function set strand(value:IStrand):void
+               {
+                       _strand = value;
+
+                       // need to add the layout bead early on to prevent the
+                       // default layout from being used.
+                       layoutBead = new DataGridWithDrawingLayerLayout();
+                       _strand.addBead(layoutBead);
+
+                       drawingLayerBead = new DataGridDrawingLayerBead();
+                       _strand.addBead(drawingLayerBead);
+
+                       
IEventDispatcher(_strand).addEventListener("dataGridViewCreated", 
handleViewCreated);
+               }
+
+               private var dragSourceBead: SingleSelectionDragSourceBead;
+               private var dropTargetBead: SingleSelectionDropTargetBead;
+               private var dragImageBead:  SingleSelectionDragImageBead;
+               private var dropIndicatorBead: SingleSelectionDropIndicatorBead;
+               private var drawingLayerBead: DataGridDrawingLayerBead;
+               private var layoutBead: DataGridWithDrawingLayerLayout;
+
+               private var continueDragOperation: Boolean = true;
+
+               /**
+                * @private
+                */
+               protected function handleViewCreated(event:Event):void
+               {
+                       var host:DataGrid = _strand as DataGrid;
+                       var view:IDataGridView = host.view as IDataGridView;
+
+                       _listArea = view.listArea;
+
+                       if (allowDrag) {
+                               dragSourceBead = new 
SingleSelectionDragSourceBead();
+                               dragSourceBead.dragType = dragType;
+                               dragSourceBead.addEventListener("start", 
handleDragStart);
+                               _strand.addBead(dragSourceBead);
+
+                               dragImageBead = new 
SingleSelectionDragImageBead();
+                               _strand.addBead(dragImageBead);
+                       }
+
+                       if (allowDrop) {
+                               dropTargetBead = new 
SingleSelectionDropTargetBead();
+                               dropTargetBead.addEventListener("enter", 
handleDragOver);
+                               dropTargetBead.addEventListener("exit", 
handleDragOver);
+                               dropTargetBead.addEventListener("over", 
handleDragOver);
+                               dropTargetBead.addEventListener("drop", 
handleDrop);
+                               _strand.addBead(dropTargetBead);
+
+                               dropIndicatorBead = new 
SingleSelectionDropIndicatorBead();
+                               _strand.addBead(dropIndicatorBead);
+                       }
+               }
+
+               /**
+                * @private
+                */
+               private function handleDragStart(event:Event):void
+               {
+                       var data:Object = DragEvent.dragSource;
+
+                       // In general, the DataGrid can accept anything because 
it does not
+                       // know about the structure of the data. Only when that 
data has been
+                       // dropped into it and it tries to incorporate it (or 
rather, its
+                       // itemRenderers try to display it) will it be 
discovered if the
+                       // data is compatible. However, some types of data are 
obvious that
+                       // they cannot be accepted.
+
+                       if (data is DataGridColumn) {
+                               continueDragOperation = false;
+                       } else if ((data is String) || (data is Number) || 
(data is Date)) {
+                               continueDragOperation = false;
+                       } else {
+                               continueDragOperation = true;
+                       }
+
+                       if (!continueDragOperation) {
+                               event.preventDefault();
+                       }
+               }
+
+               /**
+                * @private
+                */
+               private function handleDragOver(event:Event):void
+               {
+                       if (!continueDragOperation) {
+                               event.preventDefault();
+                       }
+               }
+
+               private function handleDrop(event:Event):void
+               {
+                       if (!continueDragOperation) {
+                               event.preventDefault();
+                       }
+               }
+       }
+}
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/49831cb0/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/SingleSelectionDragImageBead.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/SingleSelectionDragImageBead.as
 
b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/SingleSelectionDragImageBead.as
index 5eca009..7262cc6 100644
--- 
a/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/SingleSelectionDragImageBead.as
+++ 
b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/SingleSelectionDragImageBead.as
@@ -18,7 +18,7 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.html.beads
 {
-       
+
        import org.apache.flex.collections.ArrayList;
        import org.apache.flex.core.IBead;
        import org.apache.flex.core.IChild;
@@ -45,7 +45,7 @@ package org.apache.flex.html.beads
        import org.apache.flex.utils.PointUtils;
        import org.apache.flex.utils.getParentOrSelfByType;
 
-       COMPILE::JS 
+       COMPILE::JS
        {
                import org.apache.flex.core.WrappedHTMLElement;
        }
@@ -140,7 +140,7 @@ package org.apache.flex.html.beads
 
                /**
                 * @private
-                * 
+                *
                 */
                private function handleDragStart(event:DragEvent):void
                {

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/49831cb0/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/SingleSelectionDragSourceBead.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/SingleSelectionDragSourceBead.as
 
b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/SingleSelectionDragSourceBead.as
index d23e7d4..c8f465a 100644
--- 
a/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/SingleSelectionDragSourceBead.as
+++ 
b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/SingleSelectionDragSourceBead.as
@@ -44,6 +44,41 @@ package org.apache.flex.html.beads
        import org.apache.flex.utils.UIUtils;
        import org.apache.flex.utils.getParentOrSelfByType;
 
+       /**
+        * The start event is dispatched when a DragStart event happens. The 
DragEvent.dragSource
+        * is set before this event is dispatched. A listener for this event 
can then decide if
+        * if the drag-drop action should continue or not. If not, the event 
should be cancelled.
+     *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.9
+        */
+       [Event(name="start", type="org.apache.flex.events.Event")]
+
+       /**
+        * The accept event is dispatched when the drop happens but just before 
the data being
+        * dragged as been incorporated into the drop target's data source. 
Cancelling this event
+        * prevents that from happening.
+     *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.9
+        */
+       [Event(name="accept", type="org.apache.flex.events.Event")]
+
+       /**
+        * The complete event is dispatched when the entire drag-and-drop 
operation has completed
+        * from the drag source's perspective.
+     *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.9
+        */
+       [Event(name="complete", type="org.apache.flex.events.Event")]
+
 
        /**
         *  The SingleSelectionDragSourceBead brings drag capability to 
single-selection List components.
@@ -78,6 +113,7 @@ package org.apache.flex.html.beads
 
                private var _strand:IStrand;
                private var _dragController:DragMouseController;
+               private var continueDragOperation:Boolean = true;
 
                private var _dragType:String = "move";
 
@@ -113,7 +149,21 @@ package org.apache.flex.html.beads
                        
IEventDispatcher(_strand).addEventListener(DragEvent.DRAG_END, handleDragEnd);
                }
 
-               private var indexOfDragSource:int = -1;
+               private var _dragSourceIndex:int = -1;
+
+               /**
+                * The index into the dataProvider of the strand's model where 
the dragSource
+                * can be found. If -1, the dragSource is not in the 
dataProvider.
+            *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.9
+                */
+               public function get dragSourceIndex():int
+               {
+                       return _dragSourceIndex;
+               }
 
                /**
                 * @private
@@ -130,9 +180,15 @@ package org.apache.flex.html.beads
 
                        if (itemRenderer) {
                                var p:UIBase = itemRenderer.itemRendererParent 
as UIBase;
-                               indexOfDragSource = 
p.getElementIndex(itemRenderer as IChild);
+                               _dragSourceIndex = 
p.getElementIndex(itemRenderer as IChild);
                                DragEvent.dragSource = (itemRenderer as 
IItemRenderer).data;
                        }
+
+                       var newEvent:Event = new Event("start", false, true);
+                       dispatchEvent(newEvent);
+                       if (newEvent.defaultPrevented) {
+                               continueDragOperation = false;
+                       }
                }
 
                /**
@@ -140,6 +196,7 @@ package org.apache.flex.html.beads
                 */
                protected function handleDragMove(event:DragEvent):void
                {
+                       // ignored for now
                }
 
                /**
@@ -147,6 +204,7 @@ package org.apache.flex.html.beads
                 */
                protected function handleDragEnd(event:DragEvent):void
                {
+                       // ignored for now
                }
 
                /* IDragInitiator */
@@ -161,7 +219,13 @@ package org.apache.flex.html.beads
                 */
                public function acceptingDrop(dropTarget:Object, 
type:String):void
                {
+                       if (!continueDragOperation) return;
+
                        trace("SingleSelectionDragSourceBead accepting drop of 
type "+type);
+                       var newEvent:Event = new Event("accept", false, true);
+                       dispatchEvent(newEvent);
+                       if (newEvent.defaultPrevented) return;
+
                        if (dragType == "copy") return;
 
                        var dataProviderModel:IDataProviderModel = 
_strand.getBeadByType(IDataProviderModel) as IDataProviderModel;
@@ -169,7 +233,7 @@ package org.apache.flex.html.beads
                                var dataArray:Array = 
dataProviderModel.dataProvider as Array;
 
                                // remove the item being selected
-                               DragEvent.dragSource = 
dataArray.splice(indexOfDragSource,1)[0];
+                               DragEvent.dragSource = 
dataArray.splice(_dragSourceIndex,1)[0];
 
                                // refresh the dataProvider model
                                var newArray:Array = dataArray.slice()
@@ -179,7 +243,7 @@ package org.apache.flex.html.beads
                                var dataList:ArrayList = 
dataProviderModel.dataProvider as ArrayList;
 
                                // remove the item being selected
-                               DragEvent.dragSource = 
dataList.removeItemAt(indexOfDragSource);
+                               DragEvent.dragSource = 
dataList.removeItemAt(_dragSourceIndex);
 
                                // refresh the dataProvider model
                                var newList:ArrayList = new 
ArrayList(dataList.source);
@@ -199,9 +263,10 @@ package org.apache.flex.html.beads
                {
                        trace("SingleSelectionDragSourceBead accepted drop of 
type "+type);
                        var value:Object = DragEvent.dragSource;
-                       trace(" -- index: "+indexOfDragSource+" of data: 
"+value.toString());
 
-                       indexOfDragSource = -1;
+                       _dragSourceIndex = -1;
+
+                       dispatchEvent(new Event("complete"));
                }
 
        }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/49831cb0/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/SingleSelectionDropTargetBead.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/SingleSelectionDropTargetBead.as
 
b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/SingleSelectionDropTargetBead.as
index c4facda..3c36e1b 100644
--- 
a/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/SingleSelectionDropTargetBead.as
+++ 
b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/SingleSelectionDropTargetBead.as
@@ -41,6 +41,65 @@ package org.apache.flex.html.beads
 
 
        /**
+        * The enter event is dispatched when a DragEnter has been detected in 
the drop target
+        * strand. This event can be used to determine if the strand can and 
will accept the data
+        * being dragged onto it. If the data cannot be used by the drop target 
strand this event
+        * should be cancelled.
+     *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.9
+        */
+       [Event(name="enter", type="org.apache.flex.events.Event")]
+
+       /**
+        * The exit event is sent when the drag goes outside of the drop target 
space.
+     *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.9
+        */
+       [Event(name="exit", type="org.apache.flex.events.Event")]
+
+       /**
+        * The over event is dispatched while the drag is happening over the 
drop target space. This
+        * event may be cancelled if that particular area of the drop target 
cannot accept the
+        * drag source data.
+     *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.9
+        */
+       [Event(name="over", type="org.apache.flex.events.Event")]
+
+       /**
+        * The drop event is dispatched just prior to incorporating the drag 
source data into the drop
+        * target's dataProvider. This event may be cancelled to prevent that 
from happening.
+        * Note that a "exit" event always precedes this event to allow any 
drag-drop graphics
+        * to be cleared.
+     *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.9
+        */
+       [Event(name="drop", type="org.apache.flex.events.Event")]
+
+       /**
+        * The complete event is dispatched when the drop operation has 
completed from the drop
+        * target's perspective.
+     *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.9
+        */
+       [Event(name="complete", type="org.apache.flex.events.Event")]
+
+       /**
         *  The SingleSelectionDropTargetBead enables items to be dropped onto 
single-selection List
         *  components. This bead can be used with 
SingleSelectionDragSourceBead to enable the re-arrangement
         *  of rows within the same list.
@@ -93,6 +152,14 @@ package org.apache.flex.html.beads
 
                private var _dropDirection: String = "horizontal";
 
+               /**
+                * The direction the drop indicator should display. 
"horizontal" (default) or "vertical".
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.9
+                */
                public function get dropDirection():String
                {
                        return _dropDirection;
@@ -104,6 +171,9 @@ package org.apache.flex.html.beads
 
                protected var _indicatorParent:UIBase;
 
+               /**
+                * @private
+                */
                protected function get indicatorParent():UIBase
                {
                        if (_indicatorParent == null) {
@@ -134,6 +204,10 @@ package org.apache.flex.html.beads
                private function handleDragEnter(event:DragEvent):void
                {
                        trace("SingleSelectionDropTargetBead received DragEnter 
via: "+event.relatedObject.toString());
+                       var newEvent:Event = new Event("enter", false, true);
+                       dispatchEvent(newEvent);
+                       if (newEvent.defaultPrevented) return;
+
                        var pt0:Point;
                        var pt1:Point;
                        var pt2:Point;
@@ -169,6 +243,7 @@ package org.apache.flex.html.beads
                private function handleDragExit(event:DragEvent):void
                {
                        trace("SingleSelectionDropTargetBead received DragExit 
via: "+event.relatedObject.toString());
+                       dispatchEvent(new Event("exit", false, true));
 
                        if (indicatorVisible) {
                                if (indicatorParent != null) {
@@ -184,6 +259,12 @@ package org.apache.flex.html.beads
                private function handleDragOver(event:DragEvent):void
                {
                        trace("SingleSelectionDropTargetBead received DragOver 
via: "+event.relatedObject.toString());
+                       var newEvent:Event = new Event("over", false, true);
+                       dispatchEvent(newEvent);
+                       if (event.defaultPrevented) {
+                               return;
+                       }
+
                        var pt0:Point;
                        var pt1:Point;
                        var pt2:Point;
@@ -213,6 +294,12 @@ package org.apache.flex.html.beads
 
                        handleDragExit(event);
 
+                       var newEvent:Event = new Event("drop", false, true);
+                       dispatchEvent(newEvent);
+                       if (newEvent.defaultPrevented) {
+                               return;
+                       }
+
                        var targetIndex:int = -1; // indicates drop beyond 
length of items
                        var itemRendererParent:UIBase;
 
@@ -283,7 +370,10 @@ package org.apache.flex.html.beads
                                DragEvent.dragInitiator.acceptedDrop(_strand, 
"object");
                        }
 
+                       // is this event necessary? isn't "complete" enough?
                        IEventDispatcher(_strand).dispatchEvent(new 
Event("dragDropAccepted"));
+
+                       dispatchEvent(new Event("complete"));
                }
 
                COMPILE::SWF

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/49831cb0/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/controllers/DragMouseController.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/controllers/DragMouseController.as
 
b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/controllers/DragMouseController.as
index 869f031..4bde362 100644
--- 
a/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/controllers/DragMouseController.as
+++ 
b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/controllers/DragMouseController.as
@@ -22,8 +22,8 @@ package org.apache.flex.html.beads.controllers
        import flash.display.InteractiveObject;
        import flash.display.DisplayObjectContainer;
        }
-       
-       
+
+
        import org.apache.flex.core.IBead;
        import org.apache.flex.core.IDragInitiator;
        import org.apache.flex.core.IPopUpHost;
@@ -38,43 +38,43 @@ package org.apache.flex.html.beads.controllers
        import org.apache.flex.utils.PointUtils;
        import org.apache.flex.utils.UIUtils;
        import org.apache.flex.css2.Cursors;
-       
+
     /**
      *  Indicates that a drag/drop operation is starting.
-     *  
+     *
      *  @langversion 3.0
      *  @playerversion Flash 10.2
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.8
      */
     [Event(name="dragStart", type="org.apache.flex.events.DragEvent")]
-    
+
     /**
      *  Indicates that the mouse is moving during
      *  a drag/drop operation.
-     *  
+     *
      *  @langversion 3.0
      *  @playerversion Flash 10.2
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.8
      */
     [Event(name="dragMove", type="org.apache.flex.events.DragEvent")]
-    
+
     /**
      *  Indicates that a drag/drop operation is ending.
-     *  
+     *
      *  @langversion 3.0
      *  @playerversion Flash 10.2
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.8
      */
     [Event(name="dragEnd", type="org.apache.flex.events.DragEvent")]
-    
+
        /**
-        *  The DragMouseController bead handles mouse events on the 
+        *  The DragMouseController bead handles mouse events on the
         *  a component, looking for activity that constitutes the start
      *  of a drag drop operation.
-        *  
+        *
      *  @flexjsignoreimport org.apache.flex.core.IDragInitiator
      *
         *  @langversion 3.0
@@ -87,58 +87,58 @@ package org.apache.flex.html.beads.controllers
         /**
          *  Whether there is a drag operation
          *  in progress.
-         *  
+         *
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.8
          */
         public static var dragging:Boolean = false;
-        
+
         /**
          *  The drag image.
-         *  
+         *
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.8
          */
         public static var dragImage:IUIBase;
-        
+
         /**
          *  The offset of the drag image.
-         *  
+         *
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.8
          */
         public static var dragImageOffsetX:Number = 0;
-        
+
         /**
          *  The offset of the drag image.
-         *  
+         *
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.8
          */
         public static var dragImageOffsetY:Number = 0;
-        
+
         /**
          *  The default movement in x and or y that
          *  means a drag should start
-         *  
+         *
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.8
          */
         public static var defaultThreshold:int = 4;
-        
+
                /**
                 *  constructor.
-                *  
+                *
                 *  @langversion 3.0
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
@@ -148,23 +148,25 @@ package org.apache.flex.html.beads.controllers
                {
             threshold = defaultThreshold;
                }
-               
+
         /**
          *  The movement in x and or y that
          *  means a drag should start
-         *  
+         *
          *  @langversion 3.0
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.8
          */
         public var threshold:int = 4;
-        
+
                private var _strand:IStrand;
-               
+
+               public static var instanceNumber:int = 1;
+
                /**
                 *  @copy org.apache.flex.core.IBead#strand
-                *  
+                *
                 *  @langversion 3.0
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
@@ -173,58 +175,63 @@ package org.apache.flex.html.beads.controllers
                public function set strand(value:IStrand):void
                {
                        _strand = value;
-                       
+
+                       trace("DragMouseController instance 
"+DragMouseController.instanceNumber+"; isDragging 
"+DragMouseController.dragging);
+
             IEventDispatcher(_strand).addEventListener(MouseEvent.MOUSE_DOWN, 
dragMouseDownHandler);
+
+            DragMouseController.instanceNumber += 100;
                }
-               
+
                public function get strand():IStrand
                {
                        return _strand;
                }
-        
+
         private var mouseDownX:Number;
         private var mouseDownY:Number;
-        
+
         private var host:IPopUpHost;
-        
+
         /**
          *  @private
          */
         private function dragMouseDownHandler(event:MouseEvent):void
         {
-            trace("DRAG-MOUSE: dragMouseDown");
+//            trace("DRAG-MOUSE: dragMouseDown");
             
IUIBase(_strand).topMostEventDispatcher.addEventListener(MouseEvent.MOUSE_MOVE, 
dragMouseMoveHandler);
             
IUIBase(_strand).topMostEventDispatcher.addEventListener(MouseEvent.MOUSE_UP, 
dragMouseUpHandler);
             mouseDownX = event.screenX;
             mouseDownY = event.screenY;
             event.preventDefault();
         }
-        
+
         private function dragMouseMoveHandler(event:MouseEvent):void
         {
             var pt:Point;
             var dragEvent:DragEvent;
-            trace("DRAG-MOUSE: dragMouseMove");
-            
+//            trace("DRAG-MOUSE: dragMouseMove");
+
             event.preventDefault();
-            
+
             if (!dragging)
             {
-                trace("DRAG-MOUSE: not dragging anything else");
+//                trace("DRAG-MOUSE: not dragging anything else");
                 if (Math.abs(event.screenX - mouseDownX) > threshold ||
                     Math.abs(event.screenY - mouseDownY) > threshold)
-                {                                      
+                {
                     dragEvent = DragEvent.createDragEvent("dragStart", event);
                                        dragEvent.clientX = mouseDownX;
                                        dragEvent.clientY = mouseDownY;
-                                       trace("DRAG-MOUSE: sending dragStart 
via "+event.target.toString()+" == "+dragImageOffsetX);
+//                                     trace("DRAG-MOUSE: sending dragStart 
via "+event.target.toString()+" == "+dragImageOffsetX);
                                        DragEvent.dispatchDragEvent(dragEvent, 
event.target);
                                        dispatchEvent(dragEvent);
-                                       
+
                     if (DragEvent.dragSource != null)
                     {
                         dragging = true;
                         host = UIUtils.findPopUpHost(_strand as IUIBase);
+                        if (host == null) return;
                         host.addElement(dragImage);
                         pt = PointUtils.globalToLocal(new Point(event.clientX, 
event.clientY), host);
                         dragImage.x = pt.x + dragImageOffsetX;
@@ -243,7 +250,9 @@ package org.apache.flex.html.beads.controllers
             }
             else
             {
-                trace("DRAG-MOUSE: sending dragMove via " + 
event.target.toString()+" == "+dragImageOffsetX);
+               host = UIUtils.findPopUpHost(_strand as IUIBase);
+                if (host == null) return;
+//                trace("DRAG-MOUSE: sending dragMove via " + 
event.target.toString()+" == "+dragImageOffsetX);
                 dragEvent = DragEvent.createDragEvent("dragMove", event);
                 pt = PointUtils.globalToLocal(new Point(event.clientX, 
event.clientY), host);
                 dragImage.x = pt.x + dragImageOffsetX;
@@ -252,37 +261,40 @@ package org.apache.flex.html.beads.controllers
                                dispatchEvent(dragEvent);
             }
         }
-        
+
         private function dragMouseUpHandler(event:MouseEvent):void
         {
             trace("DRAG-MOUSE: dragMouseUp");
             var dragEvent:DragEvent;
-            
-            if (dragging)
+
+            host = UIUtils.findPopUpHost(_strand as IUIBase);
+            if (dragImage && host) {
+               host.removeElement(dragImage);
+            }
+
+            if (dragging && event.target)
             {
                 trace("DRAG-MOUSE: sending dragEnd via: 
"+event.target.toString());
-                               
+
                                var screenPoint:Point = new 
Point(event.screenX, event.screenY);
                                var newPoint:Point = 
PointUtils.globalToLocal(screenPoint, event.target);
                                dragEvent = 
DragEvent.createDragEvent("dragEnd", event);
                                dragEvent.clientX = newPoint.x;
                                dragEvent.clientY = newPoint.y;
-                               
+
                 DragEvent.dispatchDragEvent(dragEvent, event.target);
                                dispatchEvent(dragEvent);
                 event.preventDefault();
             }
-                       
+
             dragging = false;
             DragEvent.dragSource = null;
             DragEvent.dragInitiator = null;
-            if (dragImage && host)
-                host.removeElement(dragImage);
             dragImage = null;
-                       
+
             
IUIBase(_strand).topMostEventDispatcher.removeEventListener(MouseEvent.MOUSE_MOVE,
 dragMouseMoveHandler);
-            
IUIBase(_strand).topMostEventDispatcher.removeEventListener(MouseEvent.MOUSE_UP,
 dragMouseUpHandler);                      
+            
IUIBase(_strand).topMostEventDispatcher.removeEventListener(MouseEvent.MOUSE_UP,
 dragMouseUpHandler);
         }
-               
+
        }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/49831cb0/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/controllers/DropMouseController.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/controllers/DropMouseController.as
 
b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/controllers/DropMouseController.as
index cc2c7ac..8d9dc6e 100644
--- 
a/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/controllers/DropMouseController.as
+++ 
b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/controllers/DropMouseController.as
@@ -29,7 +29,7 @@ package org.apache.flex.html.beads.controllers
        import org.apache.flex.geom.Point;
        import org.apache.flex.utils.PointUtils;
        import org.apache.flex.css2.Cursors;
-       
+
        COMPILE::SWF {
                import flash.display.InteractiveObject;
        }
@@ -37,62 +37,62 @@ package org.apache.flex.html.beads.controllers
     /**
      *  Indicates that the mouse has entered the component during
      *  a drag operatino.
-     *  
+     *
      *  @langversion 3.0
      *  @playerversion Flash 10.2
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.8
      */
     [Event(name="dragEnter", type="org.apache.flex.events.DragEvent")]
-    
+
     /**
      *  Indicates that the mouse is moving over a component during
      *  a drag/drop operation.
-     *  
+     *
      *  @langversion 3.0
      *  @playerversion Flash 10.2
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.8
      */
     [Event(name="dragOver", type="org.apache.flex.events.DragEvent")]
-    
+
     /**
      *  Indicates that the mouse is moving out of a component during
      *  a drag/drop operation.
-     *  
+     *
      *  @langversion 3.0
      *  @playerversion Flash 10.2
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.8
      */
     [Event(name="dragExit", type="org.apache.flex.events.DragEvent")]
-    
+
     /**
      *  Indicates that a drop operation should be executed.
-     *  
+     *
      *  @langversion 3.0
      *  @playerversion Flash 10.2
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.8
      */
     [Event(name="dragDrop", type="org.apache.flex.events.DragEvent")]
-    
+
        /**
-        *  The DropMouseController bead handles mouse events on the 
+        *  The DropMouseController bead handles mouse events on the
         *  a component, looking for events from a drag/drop operation.
-        *  
+        *
      *  @flexjsignoreimport org.apache.flex.core.IDragInitiator
-     * 
+     *
         *  @langversion 3.0
         *  @playerversion Flash 10.2
         *  @playerversion AIR 2.6
         *  @productversion FlexJS 0.8
         */
        public class DropMouseController extends EventDispatcher implements 
IBead
-       {               
+       {
                /**
                 *  constructor.
-                *  
+                *
                 *  @langversion 3.0
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
@@ -101,12 +101,12 @@ package org.apache.flex.html.beads.controllers
                public function DropMouseController()
                {
                }
-                       
+
                private var _strand:IStrand;
-               
+
                /**
                 *  @copy org.apache.flex.core.IBead#strand
-                *  
+                *
                 *  @langversion 3.0
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
@@ -115,7 +115,7 @@ package org.apache.flex.html.beads.controllers
                public function set strand(value:IStrand):void
                {
                        _strand = value;
-                       
+
             COMPILE::SWF
             {
                 // consider using [Mixin] and requiring MixinManager
@@ -123,22 +123,22 @@ package org.apache.flex.html.beads.controllers
             }
             IEventDispatcher(_strand).addEventListener(DragEvent.DRAG_MOVE, 
dragMoveHandler);
                }
-               
+
                public function get strand():IStrand
                {
                        return _strand;
                }
-        
+
         private var inside:Boolean;
-        
+
         private var dragSource:Object;
         private var dragInitiator:IDragInitiator;
-        
+
         public function acceptDragDrop(target:IUIBase, type:String):void
         {
             // TODO: aharui: switch icons
         }
-        
+
         /**
          *  @private
                 * @flexjsignorecoercion org.apache.flex.events.MouseEvent
@@ -154,7 +154,7 @@ package org.apache.flex.html.beads.controllers
                 inside = true;
                 IUIBase(_strand).addEventListener(DragEvent.DRAG_END, 
dragEndHandler);
                 IUIBase(_strand).addEventListener(MouseEvent.ROLL_OUT, 
rollOutHandler);
-                               
+
                                Cursors.setCursor(_strand as IUIBase, 
Cursors.MOVE);
             }
             else
@@ -163,31 +163,31 @@ package org.apache.flex.html.beads.controllers
                                dispatchEvent(dragEvent);
             }
         }
-        
+
         private function rollOutHandler(event:MouseEvent):void
         {
             var dragEvent:DragEvent;
-            
+
             if (inside)
             {
                 dragEvent = DragEvent.createDragEvent("dragExit", event);
                                dispatchEvent(dragEvent);
                 inside = false;
-                               
+
                                Cursors.setCursor(_strand as IUIBase, 
Cursors.AUTO);
             }
             IUIBase(_strand).removeEventListener(DragEvent.DRAG_END, 
dragEndHandler);
-            IUIBase(_strand).removeEventListener(MouseEvent.ROLL_OUT, 
rollOutHandler);                 
+            IUIBase(_strand).removeEventListener(MouseEvent.ROLL_OUT, 
rollOutHandler);
         }
-        
+
                /**
                 * @flexjsignorecoercion org.apache.flex.events.MouseEvent
                 */
         private function dragEndHandler(event:DragEvent):void
         {
-            trace("DROP-MOUSE: dragEnd received for event via: 
"+event.target.toString());
+//            trace("DROP-MOUSE: dragEnd received for event via: 
"+event.target.toString());
             var dragEvent:DragEvent;
-                                   
+
                        var screenPoint:Point = new Point(event.screenX, 
event.screenY);
                        var newPoint:Point = 
PointUtils.globalToLocal(screenPoint, _strand);
             dragEvent = DragEvent.createDragEvent("dragDrop", event as 
MouseEvent);
@@ -199,15 +199,15 @@ package org.apache.flex.html.beads.controllers
                        COMPILE::JS {
                                dragEvent.relatedObject = event.target;
                        }
-                                               
-                       DragEvent.dispatchDragEvent(dragEvent, this); 
-            
+
+                       DragEvent.dispatchDragEvent(dragEvent, this);
+
             inside = false;
             IUIBase(_strand).removeEventListener(DragEvent.DRAG_END, 
dragEndHandler);
-            IUIBase(_strand).removeEventListener(MouseEvent.ROLL_OUT, 
rollOutHandler); 
-                       
+            IUIBase(_strand).removeEventListener(MouseEvent.ROLL_OUT, 
rollOutHandler);
+
                        Cursors.setCursor(_strand as IUIBase, Cursors.AUTO);
         }
-               
+
        }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/49831cb0/frameworks/projects/DragDrop/src/main/resources/basic-manifest.xml
----------------------------------------------------------------------
diff --git a/frameworks/projects/DragDrop/src/main/resources/basic-manifest.xml 
b/frameworks/projects/DragDrop/src/main/resources/basic-manifest.xml
index 75f426a..9ffe231 100644
--- a/frameworks/projects/DragDrop/src/main/resources/basic-manifest.xml
+++ b/frameworks/projects/DragDrop/src/main/resources/basic-manifest.xml
@@ -37,4 +37,6 @@
        <component id="DataGridColumnReorderView" 
class="org.apache.flex.html.beads.DataGridColumnReorderView" />
        <component id="ButtonBarReorderBead" 
class="org.apache.flex.html.beads.ButtonBarReorderBead" />
        
+       <component id="DataGridDragDropBead" 
class="org.apache.flex.html.beads.DataGridDragDropBead" />
+       
 </componentPackage>

Reply via email to