flex-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From p...@apache.org
Subject git commit: [flex-asjs] [refs/heads/develop] - 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.
Date Wed, 27 Sep 2017 14:56:55 GMT
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 <pent@apache.org>
Authored: Wed Sep 27 10:56:52 2017 -0400
Committer: Peter Ent <pent@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>


Mime
View raw message