Merge branch 'develop' into feature/dragAndDrop

* develop: (24 commits)
  Allow chained assignment to non-existent children
  Add MDLDynamicTableExample to ilustrate how add/remove items to MDL Table - Currently only adding is working. The rest job will be done as part of FLEX-35354
  Forgot header
  Returns parameter passed into setAttribute and setChild to enable chained assignment of values.
  Added missing pieces for TextBlock management Fixed bug in GroupElement.replaceElements()
  Added helper function
  FLEX-35354 - Rename TabsItemRendererFactoryForArrayListData  to TabsDynamicItemsRendererFactoryForArrayListData - Update TabsDynamicItemsRendererFactoryForArrayListData with new implementation of DynamicItemsRendererFactoryForArrayListData - Update example MDLDynamicTabsExample
  FLEX-35354 - Add DynamicItemsRendererFactoryForArrayListData to allow add items dynamically to MDL Table - Bead can be used in other components - Update TabsItemRendererFactoryForArrayListData with new DynamicItemsRendererFactoryForArrayListData
  Switch MDLDynamicTabsExample to JSFlex only build in Maven
  “Stringables” should be assignable to XML
  Partially fixed FormatExample
  Fixed a few errors in DataGridXcompile
  Fixed TLFEditTestFlexJS manual test
  Added maven build for UnitTests
  -refactored ant builds of manual tests to be closer to examples, and support for 'maven_compat' from test level ant scripts. -renamed GenericTests to UnitTests and fixed some display issues due to layout changes etc
  Quick fix for FormExample (avoid 0 width, 0 height clipping)
  Quick fix for ListsTest
  Quick fix for ImageTest
  FLEX-35350 - THead and TBody need to be created a bit early cause MDL complaining with NPE when dataProvider is null
  quick fix to get compiling and something displaying
  ...
diff --git a/frameworks/projects/Basic/src/main/flex/BasicClasses.as b/frameworks/projects/Basic/src/main/flex/BasicClasses.as
index bc62158..9abaf14 100644
--- a/frameworks/projects/Basic/src/main/flex/BasicClasses.as
+++ b/frameworks/projects/Basic/src/main/flex/BasicClasses.as
@@ -174,6 +174,7 @@
 	import org.apache.flex.html.DataGridButtonBar; DataGridButtonBar;
 	import org.apache.flex.html.beads.DataGridColumnView; DataGridColumnView;
 	import org.apache.flex.html.beads.DataGridView; DataGridView;
+	import org.apache.flex.html.beads.IDataGridView; IDataGridView;
 	import org.apache.flex.html.beads.DataGridPercentageView; DataGridPercentageView;
 	import org.apache.flex.html.beads.DateChooserView; DateChooserView;
 	import org.apache.flex.html.beads.DateFieldView; DateFieldView;
@@ -243,6 +244,8 @@
     COMPILE::SWF
     {
         import org.apache.flex.css2.Copy; Copy;
+		import org.apache.flex.css2.DragMove; DragMove;
+		import org.apache.flex.css2.DragReject; DragReject;
     }
 }
 
diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/css2/DragMove.fxg b/frameworks/projects/Basic/src/main/flex/org/apache/flex/css2/DragMove.fxg
new file mode 100644
index 0000000..212ef6c
--- /dev/null
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/css2/DragMove.fxg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+
+  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.
+
+-->
+<Graphic version="2.0" ATE:version="1.0.0" flm:version="1.0.0" d:using="" 
+	xmlns="http://ns.adobe.com/fxg/2008" xmlns:ATE="http://ns.adobe.com/ate/2009" xmlns:d="http://ns.adobe.com/fxg/2008/dt" 
+	xmlns:flm="http://ns.adobe.com/flame/2008"
+	xmlns:afx="http://ns.apache.org/flex/2012" afx:className="org.apache.flex.css2.DragMove" afx:baseClassName="flash.display.Sprite" >
+  <Library>
+    <Definition name="Drag_Cursors_Elements_Cursor" flm:originalName="Drag Cursors/Elements/Cursor">
+      <Group>
+        <Group d:type="layer" d:userLabel="Layer 1">
+          <Path data="M265.85 158 264.85 158 264.85 157 263.85 157 263.85 168 264.85 168 264.85 169 263.85 169 263.85 170 262.85 170 262.85 155 263.85 155 263.85 156 264.85 156 264.85 157 265.85 157 265.85 158 266.85 158 266.85 159 267.85 159 267.85 160 266.85 160
+ 266.85 159 265.85 159 265.85 158M269.85 162 268.85 162 268.85 161 267.85 161 267.85 160 268.85 160 268.85 161 269.85 161 269.85 162 270.85 162 270.85 163 271.85 163 271.85 164 270.85 164 270.85 163 269.85 163 269.85 162M266.85 167 265.85 167
+ 265.85 168 264.85 168 264.85 167 265.85 167 265.85 166 266.85 166 266.85 167 267.85 167 267.85 169 268.85 169 268.85 171 270.85 171 270.85 169 269.85 169 269.85 167 268.85 167 268.85 165 271.85 165 271.85 164 272.85 164 272.85 165 273.85 165
+ 273.85 166 269.85 166 269.85 167 270.85 167 270.85 169 271.85 169 271.85 172 268.85 172 268.85 171 267.85 171 267.85 169 266.85 169 266.85 167">
+            <fill>
+              <SolidColor color="#FFFFFF"/>
+            </fill>
+          </Path>
+          <Path data="M270.85 169 270.85 171 268.85 171 268.85 169 267.85 169 267.85 167 266.85 167 266.85 166 265.85 166 265.85 167 264.85 167 264.85 168 263.85 168 263.85 157 264.85 157 264.85 158 265.85 158 265.85 159 266.85 159 266.85 160 267.85 160 267.85 161
+ 268.85 161 268.85 162 269.85 162 269.85 163 270.85 163 270.85 164 271.85 164 271.85 165 268.85 165 268.85 167 269.85 167 269.85 169 270.85 169">
+            <fill>
+              <SolidColor/>
+            </fill>
+          </Path>
+        </Group>
+      </Group>
+    </Definition>
+  </Library>
+          <Drag_Cursors_Elements_Cursor x="-263.85" y="-157"/>
+  <Private/>
+</Graphic>
\ No newline at end of file
diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/css2/DragReject.fxg b/frameworks/projects/Basic/src/main/flex/org/apache/flex/css2/DragReject.fxg
new file mode 100644
index 0000000..d85703a
--- /dev/null
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/css2/DragReject.fxg
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+
+  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.
+
+-->
+<Graphic version="2.0" ATE:version="1.0.0" flm:version="1.0.0" d:using="" 
+	xmlns="http://ns.adobe.com/fxg/2008" xmlns:ATE="http://ns.adobe.com/ate/2009" xmlns:d="http://ns.adobe.com/fxg/2008/dt" 
+	xmlns:flm="http://ns.adobe.com/flame/2008"
+	xmlns:afx="http://ns.apache.org/flex/2012" afx:className="org.apache.flex.css2.DragReject" afx:baseClassName="flash.display.Sprite" >
+  <Library>
+    <Definition name="Drag_Cursors_Elements_Cursor" flm:originalName="Drag Cursors/Elements/Cursor">
+      <Group>
+        <Group d:type="layer" d:userLabel="Layer 1">
+          <Path data="M265.85 158 264.85 158 264.85 157 263.85 157 263.85 168 264.85 168 264.85 169 263.85 169 263.85 170 262.85 170 262.85 155 263.85 155 263.85 156 264.85 156 264.85 157 265.85 157 265.85 158 266.85 158 266.85 159 267.85 159 267.85 160 266.85 160
+ 266.85 159 265.85 159 265.85 158M269.85 162 268.85 162 268.85 161 267.85 161 267.85 160 268.85 160 268.85 161 269.85 161 269.85 162 270.85 162 270.85 163 271.85 163 271.85 164 270.85 164 270.85 163 269.85 163 269.85 162M266.85 167 265.85 167
+ 265.85 168 264.85 168 264.85 167 265.85 167 265.85 166 266.85 166 266.85 167 267.85 167 267.85 169 268.85 169 268.85 171 270.85 171 270.85 169 269.85 169 269.85 167 268.85 167 268.85 165 271.85 165 271.85 164 272.85 164 272.85 165 273.85 165
+ 273.85 166 269.85 166 269.85 167 270.85 167 270.85 169 271.85 169 271.85 172 268.85 172 268.85 171 267.85 171 267.85 169 266.85 169 266.85 167">
+            <fill>
+              <SolidColor color="#FFFFFF"/>
+            </fill>
+          </Path>
+          <Path data="M270.85 169 270.85 171 268.85 171 268.85 169 267.85 169 267.85 167 266.85 167 266.85 166 265.85 166 265.85 167 264.85 167 264.85 168 263.85 168 263.85 157 264.85 157 264.85 158 265.85 158 265.85 159 266.85 159 266.85 160 267.85 160 267.85 161
+ 268.85 161 268.85 162 269.85 162 269.85 163 270.85 163 270.85 164 271.85 164 271.85 165 268.85 165 268.85 167 269.85 167 269.85 169 270.85 169">
+            <fill>
+              <SolidColor/>
+            </fill>
+          </Path>
+        </Group>
+      </Group>
+    </Definition>
+  </Library>
+          <Group>
+            <Path data="M11.9 16.075Q10.014648 14.18125 10.025 11.475 10.014648 8.7685547 11.9 6.875 13.80625 4.9769531 16.525 4.975 19.231055 4.9769531 21.125 6.875 23.022852 8.7685547 23.025 11.475 23.022852 14.18125 21.125 16.075 19.231055 17.972852 16.525 17.975
+ 13.80625 17.972852 11.9 16.075">
+              <fill>
+                <SolidColor alpha="0.2"/>
+              </fill>
+            </Path>
+          </Group>
+          <Group>
+            <Path data="M13.65 5.45Q14.75 5 16 5 18.45 5 20.2 6.75 21.95 8.5 22 11 22 13.45 20.2 15.2 18.45 16.95 16 17 14.75 17 13.65 16.5 12.55 16.05 11.75 15.2 10.9 14.4 10.45 13.3 10 12.2 10 11 10 9.75 10.45 8.65 10.9 7.55 11.75 6.75 12.55 5.9 13.65 5.45">
+              <fill>
+                <RadialGradient x="16" y="11" scaleX="11.975" scaleY="11.975">
+                  <GradientEntry ratio="0" color="#FE5050"/>
+                  <GradientEntry ratio="1" color="#CC0000"/>
+                </RadialGradient>
+              </fill>
+            </Path>
+          </Group>
+          <Drag_Cursors_Elements_Cursor x="-263.85" y="-157"/>
+          <Group>
+            <Path data="M12.45 8.85 13.85 7.45 15.975 9.575 18.1 7.45 19.5 8.85 17.375 10.975 19.5 13.1 18.1 14.5 15.975 12.375 13.85 14.5 12.45 13.1 14.575 10.975 12.45 8.85">
+              <fill>
+                <SolidColor color="#FFFFFF"/>
+              </fill>
+            </Path>
+          </Group>
+  <Private/>
+</Graphic>
\ No newline at end of file
diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/DataGridPercentageView.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/DataGridPercentageView.as
index 74bd364..be2260f 100644
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/DataGridPercentageView.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/DataGridPercentageView.as
@@ -31,6 +31,7 @@
 	import org.apache.flex.html.DataGrid;
 	import org.apache.flex.html.DataGridButtonBar;
 	import org.apache.flex.html.Container;
+	import org.apache.flex.html.beads.IDataGridView;
 	import org.apache.flex.html.beads.layouts.ButtonBarLayout;
 	import org.apache.flex.html.beads.models.ButtonBarModel;
 	import org.apache.flex.html.supportClasses.DataGridColumn;
@@ -53,7 +54,7 @@
 	 *  @playerversion AIR 2.6
 	 *  @productversion FlexJS 0.0
 	 */
-	public class DataGridPercentageView extends GroupView implements IBeadView
+	public class DataGridPercentageView extends GroupView implements IBeadView, IDataGridView
 	{
 		/**
 		 *  constructor.
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 10e317f..58ee8c7 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
@@ -31,6 +31,7 @@
 	import org.apache.flex.html.DataGrid;
 	import org.apache.flex.html.DataGridButtonBar;
 	import org.apache.flex.html.Container;
+	import org.apache.flex.html.beads.IDataGridView;
 	import org.apache.flex.html.beads.layouts.ButtonBarLayout;
 	import org.apache.flex.html.beads.models.ButtonBarModel;
 	import org.apache.flex.html.supportClasses.DataGridColumn;
@@ -52,7 +53,7 @@
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
 		 */
-		public class DataGridView extends GroupView implements IBeadView
+		public class DataGridView extends GroupView implements IBeadView, IDataGridView
 		{
 			/**
 			 *  constructor.
diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/IDataGridView.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/IDataGridView.as
index 8f04d11..fb6b5f4 100644
--- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/IDataGridView.as
+++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/IDataGridView.as
@@ -19,6 +19,8 @@
 package org.apache.flex.html.beads
 {
 	import org.apache.flex.core.IBeadView;
+	import org.apache.flex.core.IUIBase;
+	import org.apache.flex.html.Container;
 	
 	/**
 	 *  The IDataGridView interface marks as a component as being the bead that
@@ -31,6 +33,8 @@
 	 */
 	public interface IDataGridView extends IBeadView
 	{
-		
+		function get columnLists():Array;
+		function get listArea():Container;
+		function get header():IUIBase;
 	}
 }
diff --git a/frameworks/projects/Basic/src/main/resources/defaults.css b/frameworks/projects/Basic/src/main/resources/defaults.css
index f267363..ea7537e 100644
--- a/frameworks/projects/Basic/src/main/resources/defaults.css
+++ b/frameworks/projects/Basic/src/main/resources/defaults.css
@@ -494,7 +494,7 @@
 StringItemRenderer
 {
 	IBeadController: ClassReference("org.apache.flex.html.beads.controllers.ItemRendererMouseController");
-	height: 24;
+	height: 24px;
 	flex-shrink: 0;
 	flex-grow: 1;
 	cursor: pointer;
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 a0158b1..a3bf905 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
@@ -75,7 +75,7 @@
                 do {
                     x -= element.offsetLeft;
                     y -= element.offsetTop;
-                    if (local.hasOwnProperty('parent')) {
+					if (local['parent'] !== undefined) {
                         local = local.parent;
                         element = local.element as HTMLElement;
                     } else {
diff --git a/frameworks/projects/DragDrop/src/main/flex/DragDropClasses.as b/frameworks/projects/DragDrop/src/main/flex/DragDropClasses.as
index f2fd9c1..0ae4f1c 100644
--- a/frameworks/projects/DragDrop/src/main/flex/DragDropClasses.as
+++ b/frameworks/projects/DragDrop/src/main/flex/DragDropClasses.as
@@ -34,6 +34,13 @@
 	import org.apache.flex.html.beads.SingleSelectionDragSourceBead; SingleSelectionDragSourceBead;
 	import org.apache.flex.html.beads.SingleSelectionDropIndicatorBead; SingleSelectionDropIndicatorBead;
 	import org.apache.flex.html.beads.SingleSelectionDropTargetBead; SingleSelectionDropTargetBead;
+	
+	import org.apache.flex.html.beads.DataGridDrawingLayerBead; DataGridDrawingLayerBead;
+	import org.apache.flex.html.beads.DataGridWithDrawingLayerLayout; DataGridWithDrawingLayerLayout;
+	import org.apache.flex.html.beads.IDrawingLayerBead; IDrawingLayerBead;
+	import org.apache.flex.html.beads.DragDropListView; DragDropListView;
+	import org.apache.flex.html.beads.ListDrawingLayerBead; ListDrawingLayerBead;
+	
 }
 
 }
diff --git a/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/DataGridDrawingLayerBead.as b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/DataGridDrawingLayerBead.as
new file mode 100644
index 0000000..c6fff19
--- /dev/null
+++ b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/DataGridDrawingLayerBead.as
@@ -0,0 +1,103 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.IStrand;
+	import org.apache.flex.core.IUIBase;
+	import org.apache.flex.core.UIBase;
+	import org.apache.flex.events.Event;
+	import org.apache.flex.events.IEventDispatcher;
+	import org.apache.flex.html.beads.IDataGridView;
+	import org.apache.flex.html.beads.IDrawingLayerBead;
+	
+    
+	/**
+	 *  DataGridDrawingLayerBead places a graphic space into the DataGrid that is
+	 *  positioned above the Container used to hold the columns. This graphic space
+	 *  can be used to insert visualizations into the DataGrid.
+     *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.8
+	 */
+	public class DataGridDrawingLayerBead implements IBead, IDrawingLayerBead
+	{
+		/**
+		 * Constructor
+	     *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.8
+		 */
+		public function DataGridDrawingLayerBead()
+		{
+			super();
+		}
+		
+		private var _strand:IStrand;
+		
+		/**
+		 * @private
+		 */
+		public function set strand(value:IStrand):void
+		{
+			_strand = value;
+			
+			IEventDispatcher(_strand).addEventListener("beadsAdded", handleBeadsAdded);
+		}
+		
+		private var _layer:UIBase;
+		
+		/**
+		 * The component used as the drawing layer.
+	     *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.8
+		 */
+		public function get layer():UIBase
+		{
+			return _layer;
+		}
+		
+		/**
+		 * @private
+		 */
+		private function handleBeadsAdded(event:Event):void
+		{
+			var view:IDataGridView = UIBase(_strand).view as IDataGridView;
+			if (view != null) {
+				_layer = new UIBase();
+				_layer.className = "DataGridDrawingLayer";
+				COMPILE::JS {
+					_layer.element.style.position = "absolute";
+					_layer.element.style['pointer-events'] = 'none';
+					_layer.element.style['overflow'] = 'hidden';
+				}
+				UIBase(_strand).addElement(_layer);
+			}
+			// else: this is an error as this bead cannot be used with anything but
+			// a DataGrid.
+		}
+	}
+}
diff --git a/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/DataGridWithDrawingLayerLayout.as b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/DataGridWithDrawingLayerLayout.as
new file mode 100644
index 0000000..31c7c30
--- /dev/null
+++ b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/DataGridWithDrawingLayerLayout.as
@@ -0,0 +1,117 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.IStrand;
+	import org.apache.flex.core.IUIBase;
+	import org.apache.flex.core.UIBase;
+	import org.apache.flex.html.beads.IDataGridView;
+	import org.apache.flex.html.beads.layouts.VerticalFlexLayout;
+	
+	COMPILE::SWF {
+		import org.apache.flex.html.supportClasses.ScrollingViewport;
+		import org.apache.flex.html.supportClasses.ScrollBar;
+	}
+	
+	/**
+	 * DataGridWithDrawingLayerLayout is a class that extends VerticalFlexLayout
+	 * and positions the drawing layer created by a DataGridDrawingLayerBead.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	public class DataGridWithDrawingLayerLayout extends VerticalFlexLayout
+	{
+		/**
+		 *  constructor
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function DataGridWithDrawingLayerLayout()
+		{
+			super();
+		}
+		
+		private var _strand:IStrand;
+		
+		/**
+		 *  @copy org.apache.flex.core.IBead#strand
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		override public function set strand(value:IStrand):void
+		{
+			super.strand = value;
+			_strand = value;
+		}
+		
+		/**
+		 * @private
+		 */
+		override public function layout():Boolean
+		{
+			// If there is a drawing layer, remove it so the super.layout function
+			// will not include it.
+			var layerBead:IDrawingLayerBead = _strand.getBeadByType(IDrawingLayerBead) as IDrawingLayerBead;
+			if (layerBead) {
+				UIBase(_strand).removeElement(layerBead.layer);
+			}
+			
+			// Run the actual layout
+			var result:Boolean = super.layout();
+			
+			// Put the drawing layer back, sizing it to fit over the listArea.
+			if (layerBead) {
+				UIBase(_strand).addElement(layerBead.layer);
+				
+				var layerX:Number = 0;
+				var layerY:Number = 0;
+				var useWidth:Number = UIBase(_strand).width;
+				var useHeight:Number = UIBase(_strand).height;
+				
+				var view:IDataGridView = UIBase(_strand).view as IDataGridView;
+				var listArea:UIBase = view.listArea;
+				
+				COMPILE::SWF {
+					var scrollViewport:ScrollingViewport = listArea.getBeadByType(ScrollingViewport) as ScrollingViewport;
+					if (scrollViewport) {
+						var vbar:ScrollBar = scrollViewport.verticalScroller as ScrollBar;
+						if (vbar != null && vbar.visible) useWidth -= vbar.width;
+						var hbar:ScrollBar = scrollViewport.horizontalScroller as ScrollBar;
+						if (hbar != null && hbar.visible) useHeight -= hbar.height;
+					}
+				}
+				
+				layerBead.layer.x = layerX; 
+				layerBead.layer.y = layerY;
+				layerBead.layer.setWidthAndHeight(useWidth, useHeight, true);
+				
+			}
+			return result;
+		}
+	}
+}
diff --git a/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/DragDropListView.as b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/DragDropListView.as
new file mode 100644
index 0000000..c900d50
--- /dev/null
+++ b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/DragDropListView.as
@@ -0,0 +1,134 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.IItemRendererParent;
+	import org.apache.flex.core.IContainer;
+	import org.apache.flex.core.IStrand;
+	import org.apache.flex.core.UIBase;
+	import org.apache.flex.events.Event;
+	import org.apache.flex.events.IEventDispatcher;
+	import org.apache.flex.html.beads.ListView;
+	import org.apache.flex.html.beads.layouts.VerticalLayout;
+	import org.apache.flex.html.supportClasses.DataGroup;
+	import org.apache.flex.html.supportClasses.ScrollingViewport;
+
+
+	/**
+	 *  DragDropListView is the view to use for Lists when you want to use
+	 *  drag and drop beads. This view provides a drawing layer in which the
+	 *  the drop indicator can be displayed when the list is the target for
+	 *  drag and drop operations.
+     *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.8
+	 */
+	COMPILE::JS
+	public class DragDropListView extends ListView
+	{
+		private var _strand:IStrand;
+		
+		private var _layer:UIBase;
+		
+		/**
+		 * @private
+		 */
+		override public function set strand(value:IStrand):void
+		{
+			_strand = value;
+			super.strand = value;
+			
+			var layerBead:ListDrawingLayerBead = new ListDrawingLayerBead();
+			_strand.addBead(layerBead);
+			_layer = layerBead.layer;
+			
+			var chost:IContainer = host as IContainer;
+			chost.strandChildren.addElement(_layer);
+			
+			UIBase(_strand).element.style['overflow'] = 'auto';
+			
+		}
+		
+		/**
+		 * @private
+		 */
+		override public function afterLayout():void
+		{
+			super.afterLayout();
+			
+			_layer.x = 0;
+			_layer.y = 0;
+			_layer.width = UIBase(_strand).width;
+			_layer.height = UIBase(_strand).height;
+		}
+	}
+	
+	COMPILE::SWF
+	public class DragDropListView extends ListView
+	{
+		/**
+		 * Constructor
+	     *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.8
+		 */
+		public function DragDropListView()
+		{
+			super();
+		}
+
+		private var _strand:IStrand;
+		
+		private var _layer:UIBase;
+
+		/**
+		 * @private
+		 */
+		override public function set strand(value:IStrand):void
+		{
+			_strand = value;
+			super.strand = value;
+			
+			var layerBead:ListDrawingLayerBead = new ListDrawingLayerBead();
+			_strand.addBead(layerBead);
+			_layer = layerBead.layer;
+			
+			var chost:IContainer = host as IContainer;
+			chost.strandChildren.addElement(_layer);
+			
+		}
+		
+		/**
+		 * @private
+		 */
+		override public function afterLayout():void
+		{
+			super.afterLayout();
+			
+			_layer.x = 0;
+			_layer.y = 0;
+			_layer.width = UIBase(_strand).width;
+			_layer.height = UIBase(_strand).height;
+		}
+	}
+}
diff --git a/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/IDrawingLayerBead.as b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/IDrawingLayerBead.as
new file mode 100644
index 0000000..f2bc37d
--- /dev/null
+++ b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/IDrawingLayerBead.as
@@ -0,0 +1,45 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.UIBase;
+	
+    
+	/**
+	 *  The IDrawingLayerBead interface is implemented by beads that providing a
+	 *  a drawing surface within a component.
+     *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.8
+	 */
+	public interface IDrawingLayerBead
+	{
+		/**
+		 * Returns the component to use as the actual drawing surface.
+	     *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+	 	 *  @productversion FlexJS 0.8
+		 */
+		function get layer():UIBase;
+	}
+}
diff --git a/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/ListDrawingLayerBead.as b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/ListDrawingLayerBead.as
new file mode 100644
index 0000000..8a466ce
--- /dev/null
+++ b/frameworks/projects/DragDrop/src/main/flex/org/apache/flex/html/beads/ListDrawingLayerBead.as
@@ -0,0 +1,97 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.IStrand;
+	import org.apache.flex.core.IUIBase;
+	import org.apache.flex.core.UIBase;
+	import org.apache.flex.events.Event;
+	import org.apache.flex.events.IEventDispatcher;
+	import org.apache.flex.html.beads.IDrawingLayerBead;
+	
+	COMPILE::SWF {
+		import flash.display.DisplayObjectContainer;
+	}
+	
+    
+	/**
+	 *  ListDrawingLayerBead places a graphic space into the List that is
+	 *  positioned the item renderers.
+     *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.8
+	 */
+	public class ListDrawingLayerBead implements IBead, IDrawingLayerBead
+	{
+		/**
+		 * Constructor
+	     *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.8
+		 */
+		public function ListDrawingLayerBead()
+		{
+			super();
+			
+			_layer = new UIBase();
+			_layer.className = "ListDrawingLayer";
+			
+			COMPILE::SWF {
+				var doc:DisplayObjectContainer = _layer.$displayObject as DisplayObjectContainer;
+				doc.mouseEnabled = false;
+				doc.mouseChildren = false;
+			}
+			COMPILE::JS {
+				_layer.element.style.position = 'absolute';
+				_layer.element.style['pointer-events'] = 'none';
+				_layer.element.style['overflow'] = 'hidden';
+			}
+		}
+		
+		private var _strand:IStrand;
+		
+		/**
+		 * @private
+		 */
+		public function set strand(value:IStrand):void
+		{
+			_strand = value;
+		}
+		
+		private var _layer:UIBase;
+		
+		/**
+		 * Returns the component drawing layer.
+	     *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.8
+		 */
+		public function get layer():UIBase
+		{
+			return _layer;
+		}
+	}
+}
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 aaab245..8b4e1f1 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
@@ -120,8 +120,8 @@
 			trace("SingleSelectionDragSourceBead received the DragStart");
 						
 			DragEvent.dragInitiator = this;
-			DragMouseController.dragImageOffsetX = -5;
-			DragMouseController.dragImageOffsetY = -5;
+			DragMouseController.dragImageOffsetX = 0;
+			DragMouseController.dragImageOffsetY = -30;
 			
 			var startHere:Object = event.target;
 			while( !(startHere is DataItemRenderer) && startHere != null) {
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 fcf8ec4..ee93eca 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
@@ -23,7 +23,6 @@
 	import org.apache.flex.core.IBead;
 	import org.apache.flex.core.IDataProviderModel;
 	import org.apache.flex.core.IItemRenderer;
-	import org.apache.flex.core.IItemRendererParent;
 	import org.apache.flex.core.IParent;
 	import org.apache.flex.core.IStrand;
 	import org.apache.flex.core.IUIBase;
@@ -66,25 +65,13 @@
 			super();
 		}
 		
-		private var _strand:IStrand;
 		private var _dropController:DropMouseController;
+		private var _dropIndicatorBead:SingleSelectionDropIndicatorBead;
 		private var _dropIndicator:UIBase;
 		private var lastItemVisited:Object;
 		private var indicatorVisible:Boolean = false;
 		
-		/**
-		 * @private
-		 */
-		protected function getDropIndicator(ir:Object, width:Number, height:Number):UIBase
-		{
-			if (_dropIndicator == null) {
-				var bead:SingleSelectionDropIndicatorBead = _strand.getBeadByType(SingleSelectionDropIndicatorBead) as SingleSelectionDropIndicatorBead;
-				if (bead == null) return null;
-				
-				_dropIndicator = bead.getDropIndicator(ir, width, height);
-			}
-			return _dropIndicator;
-		}
+		private var _strand:IStrand;
 		
 		/**
 		 * @private
@@ -102,12 +89,41 @@
 			IEventDispatcher(_dropController).addEventListener(DragEvent.DRAG_DROP, handleDragDrop);
 		}
 		
+		protected var _indicatorParent:UIBase;
+		
+		protected function get indicatorParent():UIBase
+		{
+			if (_indicatorParent == null) {
+				var layerBead:IDrawingLayerBead = _strand.getBeadByType(IDrawingLayerBead) as IDrawingLayerBead;
+				if (layerBead != null) {
+					_indicatorParent = layerBead.layer;
+				}
+			}
+			return _indicatorParent;
+		}
+		
+		/**
+		 * @private
+		 */
+		protected function getDropIndicator(ir:Object, width:Number, height:Number):UIBase
+		{
+			if (_dropIndicatorBead == null) {
+				_dropIndicatorBead = _strand.getBeadByType(SingleSelectionDropIndicatorBead) as SingleSelectionDropIndicatorBead;
+				if (_dropIndicatorBead == null) return null;
+			}
+			_dropIndicator = _dropIndicatorBead.getDropIndicator(ir, width, height);
+			return _dropIndicator;
+		}
+		
 		/**
 		 * @private
 		 */
 		private function handleDragEnter(event:DragEvent):void
 		{
 			trace("SingleSelectionDropTargetBead received DragEnter via: "+event.relatedObject.toString());
+			var pt0:Point;
+			var pt1:Point;
+			var pt2:Point;
 			
 			_dropController.acceptDragDrop(event.target as IUIBase, DropType.COPY);
 			
@@ -121,19 +137,24 @@
 				lastItemVisited = ir;
 			}
 			
-			if (lastItemVisited && !indicatorVisible) {
-				var host:UIBase = UIUtils.findPopUpHost(_strand as UIBase) as UIBase;
-				var orgPoint:Point = new Point((lastItemVisited as UIBase).x, (lastItemVisited as UIBase).y);
-				var pt1:Point = PointUtils.localToGlobal(orgPoint, lastItemVisited.parent);
-				var pt2:Point = PointUtils.globalToLocal(pt1, host);
+			if (lastItemVisited && !indicatorVisible && indicatorParent) {
+				var di:UIBase = getDropIndicator(lastItemVisited, indicatorParent.width, 4);
 				indicatorVisible = true;
-				var di:UIBase = getDropIndicator(lastItemVisited, (_strand as UIBase).width, 4);
-				di.x = pt2.x;
-				di.y = pt2.y;
-				
-				trace("=== over item "+(lastItemVisited as DataItemRenderer).data.toString()+", at "+pt2.x+", "+pt2.y);
-				
-				if (_dropIndicator) host.addElement(di);
+				COMPILE::SWF {
+					pt0 = new Point(0, (lastItemVisited as UIBase).y);
+					pt1 = PointUtils.localToGlobal(pt0, lastItemVisited.parent ? lastItemVisited.parent : _strand);
+					pt2 = PointUtils.globalToLocal(pt1, indicatorParent);
+					di.x = 0;
+					di.y = pt2.y;
+				}
+				COMPILE::JS {
+					di.x = 0;
+					di.y = (lastItemVisited as UIBase).y;
+				}
+								
+				if (indicatorParent != null) {
+					indicatorParent.addElement(di);
+				}
 			}
 			
 		}
@@ -146,8 +167,9 @@
 			trace("SingleSelectionDropTargetBead received DragExit via: "+event.relatedObject.toString());
 			
 			if (indicatorVisible) {
-				var host:UIBase = UIUtils.findPopUpHost(_strand as UIBase) as UIBase;
-				if (_dropIndicator) host.removeElement(_dropIndicator);
+				if (indicatorParent != null) {
+					indicatorParent.removeElement(_dropIndicator);
+				}
 				indicatorVisible = false;
 			}
 		}
@@ -158,37 +180,44 @@
 		private function handleDragOver(event:DragEvent):void
 		{
 			trace("SingleSelectionDropTargetBead received DragOver via: "+event.relatedObject.toString());
+			var pt0:Point;
+			var pt1:Point;
+			var pt2:Point;
 			
 			var startHere:Object = event.relatedObject;
 			while( !(startHere is DataItemRenderer) && startHere != null) {
 				startHere = startHere.parent;
 			}
-			if ((startHere is DataItemRenderer) && _dropIndicator != null) {
-				var host:UIBase = UIUtils.findPopUpHost(_strand as UIBase) as UIBase;
-				var orgPoint:Point = new Point((startHere as UIBase).x, (startHere as UIBase).y);
-				var pt1:Point = PointUtils.localToGlobal(orgPoint, startHere.parent);
-				var pt2:Point = PointUtils.globalToLocal(pt1, host);
-				_dropIndicator.x = pt2.x;
-				_dropIndicator.y = pt2.y - 1;
+			
+			if ((startHere is DataItemRenderer) && _dropIndicator != null && indicatorParent) {
+				COMPILE::SWF {
+					pt0 = new Point(0, (startHere as UIBase).y);
+					pt1 = PointUtils.localToGlobal(pt0, startHere.parent);
+					pt2 = PointUtils.globalToLocal(pt1, indicatorParent);
+					_dropIndicator.x = 0;
+					_dropIndicator.y = pt2.y - 1;
+				}
+				COMPILE::JS {
+					_dropIndicator.x = 0;
+					_dropIndicator.y = (startHere as UIBase).y;
+				}
 				
 				lastItemVisited = startHere;
 				
-				trace("== over item "+(startHere as DataItemRenderer).data.toString()+", at "+pt2.x+", "+pt2.y);
-			} else if (lastItemVisited && _dropIndicator != null) {
-				trace("== beyond last item");
-				
-				var p:UIBase = (lastItemVisited as UIBase).parent as UIBase;
-				if (p == null) return;
-				
-				var n:int = p.numElements;
-				var lastItem:UIBase = p.getElementAt(n-1) as UIBase;
-				
-				host = UIUtils.findPopUpHost(_strand as UIBase) as UIBase;
-				orgPoint = new Point(lastItem.x, lastItem.y);
-				pt1 = PointUtils.localToGlobal(orgPoint, p);
-				pt2 = PointUtils.globalToLocal(pt1, host);
-				_dropIndicator.x = pt2.x;
-				_dropIndicator.y = pt2.y + lastItem.height + 1;
+			} 
+			else if (lastItemVisited && _dropIndicator != null && indicatorParent) {
+				var lastItem:UIBase = lastItemVisited as UIBase;
+				COMPILE::SWF {
+					pt0 = new Point(0, lastItem.y);
+					pt1 = PointUtils.localToGlobal(pt0, lastItem.parent);
+					pt2 = PointUtils.globalToLocal(pt1, indicatorParent);
+					_dropIndicator.x = 0;
+					_dropIndicator.y = pt2.y + lastItem.height + 1;
+				}
+				COMPILE::JS {
+					_dropIndicator.x = 0;
+					_dropIndicator.y = lastItem.y;
+				}
 			}
 		}
 		
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 fc6b07a..869f031 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
@@ -37,6 +37,7 @@
 	import org.apache.flex.geom.Point;
 	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.
@@ -216,7 +217,7 @@
                     dragEvent = DragEvent.createDragEvent("dragStart", event);
 					dragEvent.clientX = mouseDownX;
 					dragEvent.clientY = mouseDownY;
-					trace("DRAG-MOUSE: sending dragStart via "+event.target.toString());
+					trace("DRAG-MOUSE: sending dragStart via "+event.target.toString()+" == "+dragImageOffsetX);
 					DragEvent.dispatchDragEvent(dragEvent, event.target);
 					dispatchEvent(dragEvent);
 					
@@ -242,7 +243,7 @@
             }
             else
             {
-                trace("DRAG-MOUSE: sending dragMove via " + event.target.toString());
+                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;
diff --git a/frameworks/projects/DragDrop/src/main/resources/basic-manifest.xml b/frameworks/projects/DragDrop/src/main/resources/basic-manifest.xml
index ba07658..68804ac 100644
--- a/frameworks/projects/DragDrop/src/main/resources/basic-manifest.xml
+++ b/frameworks/projects/DragDrop/src/main/resources/basic-manifest.xml
@@ -27,5 +27,10 @@
 	<component id="SingleSelectionDropTargetBead" class="org.apache.flex.html.beads.SingleSelectionDropTargetBead" />
     <component id="DragMouseController" class="org.apache.flex.html.beads.controllers.DragMouseController" />
     <component id="DropMouseController" class="org.apache.flex.html.beads.controllers.DropMouseController" />
-
+    	
+	<component id="DataGridDrawingLayerBead" class="org.apache.flex.html.beads.DataGridDrawingLayerBead" />
+	<component id="DataGridWithDrawingLayerLayout" class="org.apache.flex.html.beads.DataGridWithDrawingLayerLayout" />
+	<component id="DragDropListView" class="org.apache.flex.html.beads.DragDropListView" />
+	<component id="ListDrawingLayerBead" class="org.apache.flex.html.beads.ListDrawingLayerBead" />
+	
 </componentPackage>
diff --git a/frameworks/projects/Express/pom.xml b/frameworks/projects/Express/pom.xml
index c25a04b..6ea9cfe 100644
--- a/frameworks/projects/Express/pom.xml
+++ b/frameworks/projects/Express/pom.xml
@@ -139,6 +139,20 @@
       <type>swc</type>
       <classifier>js</classifier>
     </dependency>
+    <dependency>
+        <groupId>org.apache.flex.flexjs.framework</groupId>
+        <artifactId>DragDrop</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <type>swc</type>
+        <classifier>swf</classifier>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.flex.flexjs.framework</groupId>
+        <artifactId>DragDrop</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <type>swc</type>
+        <classifier>js</classifier>
+    </dependency>
   </dependencies>
 
 </project>
diff --git a/frameworks/projects/Express/src/main/config/compile-swf-config.xml b/frameworks/projects/Express/src/main/config/compile-swf-config.xml
index d6743a0..1e90b48 100644
--- a/frameworks/projects/Express/src/main/config/compile-swf-config.xml
+++ b/frameworks/projects/Express/src/main/config/compile-swf-config.xml
@@ -35,6 +35,7 @@
             <path-element>../../../../../libs/Graphics.swc</path-element>
             <path-element>../../../../../libs/Collections.swc</path-element>
             <path-element>../../../../../libs/Basic.swc</path-element>
+            <path-element>../../../../../libs/DragDrop.swc</path-element>
         </external-library-path>
         
         <allow-subclass-overrides>true</allow-subclass-overrides>
diff --git a/frameworks/projects/Express/src/main/flex/org/apache/flex/express/List.as b/frameworks/projects/Express/src/main/flex/org/apache/flex/express/List.as
index af4e97b..530d27a 100644
--- a/frameworks/projects/Express/src/main/flex/org/apache/flex/express/List.as
+++ b/frameworks/projects/Express/src/main/flex/org/apache/flex/express/List.as
@@ -26,6 +26,10 @@
 	import org.apache.flex.html.beads.DataItemRendererFactoryForArrayList;
 	import org.apache.flex.html.beads.models.ArrayListSelectionModel;
 	import org.apache.flex.html.beads.models.ArraySelectionModel;
+	import org.apache.flex.html.beads.SingleSelectionDragSourceBead;
+	import org.apache.flex.html.beads.SingleSelectionDragImageBead;
+	import org.apache.flex.html.beads.SingleSelectionDropTargetBead;
+	import org.apache.flex.html.beads.SingleSelectionDropIndicatorBead;
 	
 	public class List extends org.apache.flex.html.List
 	{
@@ -34,6 +38,40 @@
 			super();
 		}
 		
+		private var _dragEnabled:Boolean = false;
+		public function get dragEnabled():Boolean
+		{
+			return _dragEnabled;
+		}
+		public function set dragEnabled(value:Boolean):void
+		{
+			_dragEnabled = value;
+		}
+		
+		private var _dropEnabled:Boolean = false;
+		public function get dropEnabled():Boolean
+		{
+			return _dropEnabled;
+		}
+		public function set dropEnabled(value:Boolean):void
+		{
+			_dropEnabled = value;
+		}
+		
+		override public function addedToParent():void
+		{
+			super.addedToParent();
+			
+			if (dragEnabled) {
+				addBead(new SingleSelectionDragSourceBead());
+				addBead(new SingleSelectionDragImageBead());
+			}
+			if (dropEnabled) {
+				addBead(new SingleSelectionDropTargetBead());
+				addBead(new SingleSelectionDropIndicatorBead());
+			}
+		}
+		
 		override public function set dataProvider(value:Object):void
 		{			
 			if (value is Array) {