You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by pe...@apache.org on 2015/10/05 18:03:46 UTC

git commit: [flex-asjs] [refs/heads/develop] - Changed DataGrid so that all of the columns (lists) scroll together. Fixed roll out bug in DataGrid.

Repository: flex-asjs
Updated Branches:
  refs/heads/develop e494d4bda -> 657ce8bdd


Changed DataGrid so that all of the columns (lists) scroll together. Fixed roll out bug in DataGrid.


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

Branch: refs/heads/develop
Commit: 657ce8bddff41e840eed3dd556d8db11cf8b52d8
Parents: e494d4b
Author: Peter Ent <pe...@apache.org>
Authored: Mon Oct 5 12:03:42 2015 -0400
Committer: Peter Ent <pe...@apache.org>
Committed: Mon Oct 5 12:03:42 2015 -0400

----------------------------------------------------------------------
 .../apache/flex/core/IListPresentationModel.as  |  11 +
 frameworks/projects/Core/asjs/defaults.css      |   1 -
 .../projects/Core/asjs/src/CoreASJSClasses.as   |   1 -
 .../src/org/apache/flex/core/IDataGridLayout.as |  55 ----
 .../apache/flex/core/IListPresentationModel.js  |   5 +
 frameworks/projects/Flat/as/defaults.css        |   1 -
 frameworks/projects/Flat/flat-manifest.xml      |   1 -
 frameworks/projects/HTML/as/defaults.css        |   5 +-
 .../DataItemRendererFactoryForArrayData.as      |  11 +-
 .../controllers/ItemRendererMouseController.as  |   1 +
 .../html/beads/models/ListPresentationModel.as  |  21 ++
 .../html/supportClasses/DataItemRenderer.as     |   2 +-
 .../html/supportClasses/ScrollingViewport.as    | 122 +++++++-
 .../html/supportClasses/UIItemRendererBase.as   |   9 +-
 .../apache/flex/html/supportClasses/Viewport.as |  54 +++-
 .../projects/HTML/asjs/src/HTMLASJSClasses.as   |   1 -
 .../org/apache/flex/html/beads/DataGridView.as  | 302 +++++++++++--------
 .../org/apache/flex/html/beads/IDataGridView.as |  36 ---
 .../flex/html/beads/layouts/DataGridLayout.as   | 157 ----------
 .../beads/models/DataGridPresentationModel.as   |   2 +
 frameworks/projects/HTML/basic-manifest.xml     |   1 -
 .../DataItemRendererFactoryForArrayData.js      |   5 +-
 .../html/beads/models/ListPresentationModel.js  |  19 ++
 23 files changed, 435 insertions(+), 388 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/657ce8bd/frameworks/projects/Core/as/src/org/apache/flex/core/IListPresentationModel.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/as/src/org/apache/flex/core/IListPresentationModel.as b/frameworks/projects/Core/as/src/org/apache/flex/core/IListPresentationModel.as
index 0e523aa..8166c59 100644
--- a/frameworks/projects/Core/as/src/org/apache/flex/core/IListPresentationModel.as
+++ b/frameworks/projects/Core/as/src/org/apache/flex/core/IListPresentationModel.as
@@ -39,5 +39,16 @@ package org.apache.flex.core
 		 */
 		function get rowHeight():Number;
 		function set rowHeight(value:Number):void;
+		
+		/**
+		 * The distance each row should be separated from the row above.
+		 * 
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		function get separatorThickness():Number;
+		function set separatorThickness(value:Number):void;
 	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/657ce8bd/frameworks/projects/Core/asjs/defaults.css
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/asjs/defaults.css b/frameworks/projects/Core/asjs/defaults.css
index 1cbc544..cb9a50f 100644
--- a/frameworks/projects/Core/asjs/defaults.css
+++ b/frameworks/projects/Core/asjs/defaults.css
@@ -65,7 +65,6 @@ DataGrid
     IDataGridPresentationModel: ClassReference("org.apache.flex.html.beads.models.DataGridPresentationModel");
     IBeadView: ClassReference("org.apache.flex.html.beads.DataGridView");
     IBeadModel: ClassReference("org.apache.flex.html.beads.models.DataGridModel");
-    IBeadLayout: ClassReference("org.apache.flex.html.beads.layouts.DataGridLayout");
     IItemRendererClassFactory: ClassReference("org.apache.flex.core.ItemRendererClassFactory");
     IItemRenderer: ClassReference("org.apache.flex.html.supportClasses.StringItemRenderer");
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/657ce8bd/frameworks/projects/Core/asjs/src/CoreASJSClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/asjs/src/CoreASJSClasses.as b/frameworks/projects/Core/asjs/src/CoreASJSClasses.as
index ef6790d..e385ade 100644
--- a/frameworks/projects/Core/asjs/src/CoreASJSClasses.as
+++ b/frameworks/projects/Core/asjs/src/CoreASJSClasses.as
@@ -27,7 +27,6 @@ package
  */
 internal class CoreASJSClasses
 {
-    import org.apache.flex.core.IDataGridLayout; IDataGridLayout;
     import org.apache.flex.core.IDataGridModel; IDataGridModel;
     import org.apache.flex.core.IDataGridPresentationModel; IDataGridPresentationModel;
     import org.apache.flex.core.IDateChooserModel; IDateChooserModel;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/657ce8bd/frameworks/projects/Core/asjs/src/org/apache/flex/core/IDataGridLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/asjs/src/org/apache/flex/core/IDataGridLayout.as b/frameworks/projects/Core/asjs/src/org/apache/flex/core/IDataGridLayout.as
deleted file mode 100644
index d50bc27..0000000
--- a/frameworks/projects/Core/asjs/src/org/apache/flex/core/IDataGridLayout.as
+++ /dev/null
@@ -1,55 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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.core
-{
-	/**
-	 *  The IDataGridLayout interface provides the features necessary to lay
-	 *  out the components of a DataGrid: the size and position of its column
-	 *  headers and the size and position of each column.
-	 *  
-	 *  @langversion 3.0
-	 *  @playerversion Flash 10.2
-	 *  @playerversion AIR 2.6
-	 *  @productversion FlexJS 0.0
-	 */
-	public interface IDataGridLayout extends IBeadLayout
-	{
-		/**
-		 *  The component used as the column header.
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 */
-		function get header():IUIBase;
-		function set header(value:IUIBase):void;
-		
-		/**
-		 *  The set of components used for the columns of the DataGrid.
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 */
-		function get columns():Array;
-		function set columns(value:Array):void;
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/657ce8bd/frameworks/projects/Core/js/src/org/apache/flex/core/IListPresentationModel.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/js/src/org/apache/flex/core/IListPresentationModel.js b/frameworks/projects/Core/js/src/org/apache/flex/core/IListPresentationModel.js
index 5b8be2e..4c78c74 100644
--- a/frameworks/projects/Core/js/src/org/apache/flex/core/IListPresentationModel.js
+++ b/frameworks/projects/Core/js/src/org/apache/flex/core/IListPresentationModel.js
@@ -41,6 +41,11 @@ Object.defineProperties(org.apache.flex.core.IListPresentationModel.prototype, {
     rowHeight: {
         set: function(value) {},
         get: function() {}
+    },
+    /** @export */
+    separatorThickness: {
+        set: function(value) {},
+        get: function() {}
     }
 });
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/657ce8bd/frameworks/projects/Flat/as/defaults.css
----------------------------------------------------------------------
diff --git a/frameworks/projects/Flat/as/defaults.css b/frameworks/projects/Flat/as/defaults.css
index 32ca37d..53a91f1 100644
--- a/frameworks/projects/Flat/as/defaults.css
+++ b/frameworks/projects/Flat/as/defaults.css
@@ -193,7 +193,6 @@ DataGrid
     IDataGridPresentationModel: ClassReference("org.apache.flex.html.beads.models.DataGridPresentationModel");
     IBeadView: ClassReference("org.apache.flex.html.beads.DataGridView");
     IBeadModel: ClassReference("org.apache.flex.html.beads.models.DataGridModel");
-    IBeadLayout: ClassReference("org.apache.flex.html.beads.layouts.DataGridLayout");
     IItemRendererClassFactory: ClassReference("org.apache.flex.core.ItemRendererClassFactory");
     IItemRenderer: ClassReference("org.apache.flex.html.supportClasses.StringItemRenderer");
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/657ce8bd/frameworks/projects/Flat/flat-manifest.xml
----------------------------------------------------------------------
diff --git a/frameworks/projects/Flat/flat-manifest.xml b/frameworks/projects/Flat/flat-manifest.xml
index 355a76a..ac05bf7 100644
--- a/frameworks/projects/Flat/flat-manifest.xml
+++ b/frameworks/projects/Flat/flat-manifest.xml
@@ -82,7 +82,6 @@
 
     <component id="DataGrid" class="org.apache.flex.html.DataGrid" lookupOnly="true" />
     <component id="DataGridColumn" class="org.apache.flex.html.supportClasses.DataGridColumn" lookupOnly="true" />
-    <component id="DataGridLayout" class="org.apache.flex.html.beads.layouts.DataGridLayout"  lookupOnly="true" />
 
     <component id="DateChooser" class="org.apache.flex.html.DateChooser" lookupOnly="true" />
     <component id="DateField" class="org.apache.flex.html.DateField" lookupOnly="true" />

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/657ce8bd/frameworks/projects/HTML/as/defaults.css
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/as/defaults.css b/frameworks/projects/HTML/as/defaults.css
index da3cb48..f3c15b9 100644
--- a/frameworks/projects/HTML/as/defaults.css
+++ b/frameworks/projects/HTML/as/defaults.css
@@ -104,7 +104,6 @@ DataGrid
     IDataGridPresentationModel: ClassReference("org.apache.flex.html.beads.models.DataGridPresentationModel");
     IBeadView: ClassReference("org.apache.flex.html.beads.DataGridView");
     IBeadModel: ClassReference("org.apache.flex.html.beads.models.DataGridModel");
-    IBeadLayout: ClassReference("org.apache.flex.html.beads.layouts.DataGridLayout");
     IItemRendererClassFactory: ClassReference("org.apache.flex.core.ItemRendererClassFactory");
     IItemRenderer: ClassReference("org.apache.flex.html.supportClasses.StringItemRenderer");
 
@@ -114,6 +113,10 @@ DataGrid
 	border-width: 1px;
 }
 
+.DataGridListArea {
+	background-color: #999999;
+}
+
 DateChooser {
     IBeadView:   ClassReference("org.apache.flex.html.beads.DateChooserView");
     IBeadModel:  ClassReference("org.apache.flex.html.beads.models.DateChooserModel");

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/657ce8bd/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.as
index 0889efa..609bfbc 100644
--- a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.as
+++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.as
@@ -27,6 +27,8 @@ package org.apache.flex.html.beads
 	import org.apache.flex.core.ISelectionModel;
 	import org.apache.flex.core.IStrand;
 	import org.apache.flex.core.IUIBase;
+	import org.apache.flex.core.SimpleCSSStyles;
+	import org.apache.flex.core.UIBase;
 	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
@@ -139,11 +141,16 @@ package org.apache.flex.html.beads
 			
 			var n:int = dp.length; 
 			for (var i:int = 0; i < n; i++)
-			{
+			{				
 				var ir:ISelectableItemRenderer = itemRendererFactory.createItemRenderer(dataGroup) as ISelectableItemRenderer;
 				ir.index = i;
 				ir.labelField = labelField;
-				if (presentationModel) IUIBase(ir).height = presentationModel.rowHeight;
+				if (presentationModel) {
+					var style:SimpleCSSStyles = new SimpleCSSStyles();
+					style.marginBottom = presentationModel.separatorThickness;
+					UIBase(ir).style = style;
+					UIBase(ir).height = presentationModel.rowHeight;
+				}
 				dataGroup.addElement(ir);
 				ir.data = dp[i];
 			}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/657ce8bd/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/ItemRendererMouseController.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/ItemRendererMouseController.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/ItemRendererMouseController.as
index 517cc5a..0b67de8 100644
--- a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/ItemRendererMouseController.as
+++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/ItemRendererMouseController.as
@@ -91,6 +91,7 @@ package org.apache.flex.html.beads.controllers
 			{
                 target.hovered = false;
                 target.down = false;
+				target.dispatchEvent(new Event("rollout",true));
 			}
 		}
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/657ce8bd/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/models/ListPresentationModel.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/models/ListPresentationModel.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/models/ListPresentationModel.as
index a97819f..897d8d6 100644
--- a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/models/ListPresentationModel.as
+++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/models/ListPresentationModel.as
@@ -68,6 +68,27 @@ package org.apache.flex.html.beads.models
 			dispatchEvent(new Event("rowHeightChanged"));
 		}
 		
+		private var _separatorThickness:Number = 0;
+		
+		/**
+		 *  The distance between rows.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function get separatorThickness():Number
+		{
+			return _separatorThickness;
+		}
+		
+		public function set separatorThickness(value:Number):void
+		{
+			_separatorThickness = value;
+			dispatchEvent(new Event("separatorThicknessChanged"));
+		}
+		
 		private var _strand:IStrand;
 		
 		/**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/657ce8bd/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/DataItemRenderer.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/DataItemRenderer.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/DataItemRenderer.as
index bf3f284..f14c736 100644
--- a/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/DataItemRenderer.as
+++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/DataItemRenderer.as
@@ -123,7 +123,7 @@ package org.apache.flex.html.supportClasses
 			super.updateRenderer();
 			
 			background.graphics.clear();
-			background.graphics.beginFill(backgroundColor, (down||selected||hovered)?1:0);
+			background.graphics.beginFill(useColor, 1);
 			background.graphics.drawRect(0, 0, this.width, this.height);
 			background.graphics.endFill();
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/657ce8bd/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/ScrollingViewport.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/ScrollingViewport.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/ScrollingViewport.as
index 2de82b1..96318c7 100644
--- a/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/ScrollingViewport.as
+++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/ScrollingViewport.as
@@ -35,25 +35,113 @@ package org.apache.flex.html.supportClasses
 	import org.apache.flex.html.beads.ScrollBarView;
 	import org.apache.flex.html.beads.models.ScrollBarModel;
 	
+	/**
+	 * The ScrollingViewport extends the Viewport class by adding horizontal and 
+	 * vertical scroll bars, if needed, to the content area of a Container. In
+	 * addition, the content of the Container is clipped so that items extending
+	 * outside the Container are hidden and reachable only by scrolling.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
 	public class ScrollingViewport extends Viewport implements IBead, IViewport
 	{		
+		/**
+		 * Constructor
+	     *  
+	     *  @langversion 3.0
+	     *  @playerversion Flash 10.2
+	     *  @playerversion AIR 2.6
+	     *  @productversion FlexJS 0.0
+		 */
 		public function ScrollingViewport()
 		{
 		}
+		
+		private var _showsVerticalScrollBar:Boolean = true;
+		
+		/**
+		 * Determines whether or not the vertical scroll bar will show if needed.
+		 * The default is true, it will show when needed.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function get showsVerticalScrollBar():Boolean
+		{
+			return _showsVerticalScrollBar;
+		}
+		public function set showsVerticalScrollBar(value:Boolean):void
+		{
+			_showsVerticalScrollBar = value;
+		}
+		
+		private var _showsHorizontalScrollBar:Boolean = true;
+		
+		/**
+		 * Determines whether or not the horizontal scroll bar will show if needed.
+		 * The default is true, it will show when needed.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function get showsHorizontalScrollBar():Boolean
+		{
+			return _showsHorizontalScrollBar;
+		}
+		public function set showsHorizontalScrollBar(value:Boolean):void
+		{
+			_showsHorizontalScrollBar = value;
+		}
 				
 		private var _verticalScroller:ScrollBar;
+		
+		/**
+		 * The vertical scrolling component element.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
 		public function get verticalScroller():IViewportScroller
 		{
 			return _verticalScroller;
 		}
 		
 		private var _horizontalScroller:ScrollBar
+		
+		/**
+		 * The horizontal scrolling component element.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
 		public function get horizontalScroller():IViewportScroller
 		{
 			return _horizontalScroller;
 		}
         
         private var _verticalScrollPosition:Number = 0;
+		
+		
+		/**
+		 * The position of top of the content, measured in pixels, represented by
+		 * the vertical scroller. 
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
         public function get verticalScrollPosition():Number
         {
             return _verticalScrollPosition;
@@ -65,6 +153,16 @@ package org.apache.flex.html.supportClasses
         }
         
         private var _horizontalScrollPosition:Number = 0;
+		
+		/**
+		 * The position of the left edge of the content, measured in pixels, 
+		 * represented by the horizontal scroller.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
         public function get horizontalScrollPosition():Number
         {
             return _horizontalScrollPosition;
@@ -77,6 +175,7 @@ package org.apache.flex.html.supportClasses
 		
         private var viewportWidth:Number;
         private var viewportHeight:Number;
+		
         /**
          * @copy org.apache.flex.core.IViewport 
          */
@@ -106,8 +205,8 @@ package org.apache.flex.html.supportClasses
     			var host:UIBase = UIBase(_strand);
     			var visibleWidth:Number;
                 var visibleHeight:Number;
-                var needV:Boolean = contentSize.height > viewportHeight;
-                var needH:Boolean = contentSize.width > viewportWidth;
+                var needV:Boolean = (contentSize.height > viewportHeight) && showsVerticalScrollBar;
+                var needH:Boolean = (contentSize.width > viewportWidth) && showsHorizontalScrollBar;
                 
                 if (needV)
                 {
@@ -193,7 +292,9 @@ package org.apache.flex.html.supportClasses
             return contentSize;
 		}
 		
-		
+		/**
+		 * @private
+		 */
 		private function createVerticalScrollBar():ScrollBar
 		{
 			var vsbm:ScrollBarModel = new ScrollBarModel();
@@ -211,6 +312,9 @@ package org.apache.flex.html.supportClasses
 			return vsb;
 		}
 		
+		/**
+		 * @private
+		 */
 		private function createHorizontalScrollBar():ScrollBar
 		{
 			var hsbm:ScrollBarModel = new ScrollBarModel();
@@ -228,6 +332,9 @@ package org.apache.flex.html.supportClasses
 			return hsb;
 		}
 		
+		/**
+		 * @private
+		 */
 		private function handleVerticalScroll(event:Event):void
 		{
 			var host:UIBase = UIBase(_strand);
@@ -239,6 +346,9 @@ package org.apache.flex.html.supportClasses
 			_verticalScrollPosition = vpos;
 		}
 		
+		/**
+		 * @private
+		 */
 		private function handleHorizontalScroll(event:Event):void
 		{
 			var host:UIBase = UIBase(_strand);
@@ -250,6 +360,9 @@ package org.apache.flex.html.supportClasses
 			_horizontalScrollPosition = hpos;
 		}
 		
+		/**
+		 * @private
+		 */
 		private function handleVerticalScrollChange():void
 		{
 			if (_verticalScroller) {
@@ -257,6 +370,9 @@ package org.apache.flex.html.supportClasses
 			}
 		}
 		
+		/**
+		 * @private
+		 */
 		private function handleHorizontalScrollChange():void
 		{
 			if (_horizontalScroller) {

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/657ce8bd/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/UIItemRendererBase.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/UIItemRendererBase.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/UIItemRendererBase.as
index d33a3aa..90c66fa 100644
--- a/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/UIItemRendererBase.as
+++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/UIItemRendererBase.as
@@ -124,6 +124,7 @@ package org.apache.flex.html.supportClasses
 		public var highlightColor:uint = 0xCEDBEF;
 		public var selectedColor:uint = 0xA8C6EE;
 		public var downColor:uint = 0x808080;
+		protected var useColor:uint = backgroundColor;
 		
 		private var _data:Object;
 		
@@ -247,11 +248,13 @@ package org.apache.flex.html.supportClasses
 		public function updateRenderer():void
 		{
 			if (down)
-				backgroundColor = downColor;
+				useColor = downColor;
 			else if (hovered)
-				backgroundColor = highlightColor;
+				useColor = highlightColor;
 			else if (selected)
-				backgroundColor = selectedColor;
+				useColor = selectedColor;
+			else
+				useColor = backgroundColor;
 		}
 		
 		/**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/657ce8bd/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/Viewport.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/Viewport.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/Viewport.as
index d731fa6..dc228f7 100644
--- a/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/Viewport.as
+++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/Viewport.as
@@ -35,15 +35,38 @@ package org.apache.flex.html.supportClasses
     import org.apache.flex.utils.CSSContainerUtils;
 	
     /**
-     * @copy org.apache.flex.core.IViewport
+     * A Viewport is the area of a Container set aside for displaying
+     * content and any scrolling controls.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
      */
 	public class Viewport implements IBead, IViewport
 	{	
+		/**
+		 * Constructor
+	     *  
+	     *  @langversion 3.0
+	     *  @playerversion Flash 10.2
+	     *  @playerversion AIR 2.6
+	     *  @productversion FlexJS 0.0
+		 */
 		public function Viewport()
 		{
 		}
 		
 		protected var contentArea:UIBase;
+		
+		/**
+		 * Get the actual parent of the container's content.
+	     *  
+	     *  @langversion 3.0
+	     *  @playerversion Flash 10.2
+	     *  @playerversion AIR 2.6
+	     *  @productversion FlexJS 0.0
+		 */
         public function get contentView():IUIBase
         {
             return contentArea;
@@ -51,6 +74,14 @@ package org.apache.flex.html.supportClasses
         
 		protected var _strand:IStrand;
 		
+		/**
+		 * @copy org.apache.flex.core.IStrand
+	     *  
+	     *  @langversion 3.0
+	     *  @playerversion Flash 10.2
+	     *  @playerversion AIR 2.6
+	     *  @productversion FlexJS 0.0
+		 */
 		public function set strand(value:IStrand):void
 		{
 			_strand = value;
@@ -63,7 +94,12 @@ package org.apache.flex.html.supportClasses
 		}
 		
         /**
-         * @copy org.apache.flex.core.IViewport 
+         * @copy org.apache.flex.core.IViewport#setPosition()
+	     *  
+	     *  @langversion 3.0
+	     *  @playerversion Flash 10.2
+	     *  @playerversion AIR 2.6
+	     *  @productversion FlexJS 0.0
          */
         public function setPosition(x:Number, y:Number):void
         {
@@ -72,7 +108,12 @@ package org.apache.flex.html.supportClasses
         }
         
         /**
-         * @copy org.apache.flex.core.IViewport 
+         * @copy org.apache.flex.core.IViewport#layoutViewportBeforeContentLayout()
+	     *  
+	     *  @langversion 3.0
+	     *  @playerversion Flash 10.2
+	     *  @playerversion AIR 2.6
+	     *  @productversion FlexJS 0.0
          */
 		public function layoutViewportBeforeContentLayout(width:Number, height:Number):void
 		{
@@ -83,7 +124,12 @@ package org.apache.flex.html.supportClasses
 		}
 		
         /**
-         * @copy org.apache.flex.core.IViewport 
+         * @copy org.apache.flex.core.IViewport#layoutViewportAfterContentLayout()
+	     *  
+	     *  @langversion 3.0
+	     *  @playerversion Flash 10.2
+	     *  @playerversion AIR 2.6
+	     *  @productversion FlexJS 0.0
          */
 		public function layoutViewportAfterContentLayout():Size
 		{

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/657ce8bd/frameworks/projects/HTML/asjs/src/HTMLASJSClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/asjs/src/HTMLASJSClasses.as b/frameworks/projects/HTML/asjs/src/HTMLASJSClasses.as
index 4e7b67f..73547db 100644
--- a/frameworks/projects/HTML/asjs/src/HTMLASJSClasses.as
+++ b/frameworks/projects/HTML/asjs/src/HTMLASJSClasses.as
@@ -31,7 +31,6 @@ internal class HTMLASJSClasses
 	import org.apache.flex.html.beads.DataGridView; DataGridView;
 	import org.apache.flex.html.beads.DateChooserView; DateChooserView;
 	import org.apache.flex.html.beads.DateFieldView; DateFieldView;
-	import org.apache.flex.html.beads.layouts.DataGridLayout; DataGridLayout;
     import org.apache.flex.html.beads.layouts.FlexibleFirstChildHorizontalLayout; FlexibleFirstChildHorizontalLayout;
 	import org.apache.flex.html.beads.models.DataGridModel; DataGridModel;
 	import org.apache.flex.html.beads.models.DateChooserModel; DateChooserModel;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/657ce8bd/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/DataGridView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/DataGridView.as b/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/DataGridView.as
index d578a6e..150294c 100644
--- a/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/DataGridView.as
+++ b/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/DataGridView.as
@@ -18,24 +18,26 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.html.beads
 {	
-    import org.apache.flex.core.BeadViewBase;
-    import org.apache.flex.core.IBead;
-    import org.apache.flex.core.IBeadModel;
-    import org.apache.flex.core.IDataGridLayout;
-    import org.apache.flex.core.IDataGridModel;
-    import org.apache.flex.core.ISelectionModel;
-    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.ButtonBar;
-    import org.apache.flex.html.Container;
-    import org.apache.flex.html.List;
-    import org.apache.flex.html.beads.layouts.ButtonBarLayout;
-    import org.apache.flex.html.beads.layouts.DataGridLayout;
-    import org.apache.flex.html.beads.models.ArraySelectionModel;
-    import org.apache.flex.html.beads.models.DataGridPresentationModel;
-    import org.apache.flex.html.supportClasses.DataGridColumn;
+	import org.apache.flex.core.IBeadModel;
+	import org.apache.flex.core.IBeadView;
+	import org.apache.flex.core.IDataGridModel;
+	import org.apache.flex.core.ISelectableItemRenderer;
+	import org.apache.flex.core.ISelectionModel;
+	import org.apache.flex.core.IStrand;
+	import org.apache.flex.core.IUIBase;
+	import org.apache.flex.core.SimpleCSSStyles;
+	import org.apache.flex.core.UIBase;
+	import org.apache.flex.events.Event;
+	import org.apache.flex.events.IEventDispatcher;
+	import org.apache.flex.html.ButtonBar;
+	import org.apache.flex.html.Container;
+	import org.apache.flex.html.List;
+	import org.apache.flex.html.beads.layouts.ButtonBarLayout;
+	import org.apache.flex.html.beads.layouts.VerticalLayout;
+	import org.apache.flex.html.beads.models.ArraySelectionModel;
+	import org.apache.flex.html.beads.models.DataGridPresentationModel;
+	import org.apache.flex.html.supportClasses.DataGridColumn;
+	import org.apache.flex.html.supportClasses.ScrollingViewport;
 	import org.apache.flex.html.supportClasses.Viewport;
 	
 	/**
@@ -48,7 +50,7 @@ package org.apache.flex.html.beads
 	 *  @playerversion AIR 2.6
 	 *  @productversion FlexJS 0.0
 	 */
-	public class DataGridView extends BeadViewBase implements IDataGridView
+	public class DataGridView implements IBeadView
 	{
 		/**
 		 *  constructor.
@@ -62,27 +64,19 @@ package org.apache.flex.html.beads
 		{
 		}
 		
-		//private var background:Shape;
-		private var buttonBar:ButtonBar;
-		private var buttonBarModel:ArraySelectionModel;
-		private var columnContainer:Container;
-		private var columns:Array;
+		private var _strand:IStrand;
+		private var _header:ButtonBar;
+		private var _listArea:Container;
+		private var _lists:Array;
 		
 		/**
-		 *  The array of org.apache.flex.html.supportClasses.DataGridColumn instances.
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
+		 * @private
 		 */
-		public function getColumnLists():Array
+		public function get host():IUIBase
 		{
-			return columns;
+			return _strand as IUIBase;
 		}
 		
-		private var _strand:IStrand;
-		
 		/**
 		 *  @copy org.apache.flex.core.IBead#strand
 		 *  
@@ -91,130 +85,146 @@ package org.apache.flex.html.beads
 		 *  @playerversion AIR 2.6
 		 *  @productversion FlexJS 0.0
 		 */
-		override public function set strand(value:IStrand):void
+		public function set strand(value:IStrand):void
 		{
 			_strand = value;
-			super.strand = value;
 			
-			IEventDispatcher(_strand).addEventListener("sizeChanged", onSizeChanged);
-			IEventDispatcher(_strand).addEventListener("widthChanged", onSizeChanged);
-			IEventDispatcher(_strand).addEventListener("heightChanged", onSizeChanged);
+			var host:UIBase = value as UIBase;
+			
+			_header = new ButtonBar();
+			_header.id = "dataGridHeader";
+			
+			var scrollPort:ScrollingViewport = new ScrollingViewport();
+			scrollPort.showsHorizontalScrollBar = false;
+			
+			_listArea = new Container();
+			_listArea.id = "dataGridListArea";
+			_listArea.className = "DataGridListArea";
+			_listArea.addBead(scrollPort);
+			
+			// place a border around the list area
+			var style:SimpleCSSStyles = new SimpleCSSStyles();
+			style.borderWidth = 1;
+			style.borderColor = 0x333333;
+			style.borderStyle = "solid";
+			_listArea.style = style;
+			
+			finishSetup(null);
+		}
+		
+		/**
+		 * @private
+		 */
+		private function finishSetup(event:Event):void
+		{
+			var host:UIBase = _strand as UIBase;
 			
 			// see if there is a presentation model already in place. if not, add one.
-			var modBead:IBead = _strand.getBeadByType(DataGridPresentationModel);
-			var presentationModel:DataGridPresentationModel;
-			if (modBead == null) {
+			var presentationModel:DataGridPresentationModel = _strand.getBeadByType(DataGridPresentationModel) as DataGridPresentationModel;
+			if (presentationModel == null) {
 				presentationModel = new DataGridPresentationModel();
 				_strand.addBead(presentationModel);
 			}
-			else {
-				presentationModel = modBead as DataGridPresentationModel;
-			}
 			
 			var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) as IDataGridModel;
-			IEventDispatcher(sharedModel).addEventListener("dataProviderChanged",onDataProviderChanged);
+			IEventDispatcher(sharedModel).addEventListener("dataProviderChanged",handleDataProviderChanged);
 			
-			// create an array of columnLabels for use by the ButtonBar/DataGrid header.
 			var columnLabels:Array = new Array();
+			var buttonWidths:Array = new Array();
+			
 			for(var i:int=0; i < sharedModel.columns.length; i++) {
 				var dgc:DataGridColumn = sharedModel.columns[i] as DataGridColumn;
 				columnLabels.push(dgc.label);
+				if (!isNaN(dgc.columnWidth)) buttonWidths.push(dgc.columnWidth);
 			}
+			
 			var bblayout:ButtonBarLayout = new ButtonBarLayout();
+			if (buttonWidths.length == sharedModel.columns.length) {
+				bblayout.buttonWidths = buttonWidths;
+			}
 			
-			buttonBarModel = new ArraySelectionModel();
+			var buttonBarModel:ArraySelectionModel = new ArraySelectionModel();
 			buttonBarModel.dataProvider = columnLabels;
 			
-			buttonBar = new ButtonBar();
-			buttonBar.addBead(buttonBarModel);
-			buttonBar.addBead(bblayout);
-			buttonBar.addBead(new Viewport());
-			buttonBar.height = 25;
-			buttonBar.width = UIBase(_strand).width;
-			UIBase(_strand).addElement(buttonBar);
-			
-			// Create a List for each column, storing a reference to each List in
-			// the columns property.
-			columns = new Array();
-			for(i=0; i < sharedModel.columns.length; i++) 
-			{
-				// Each list shares the same dataProvider but needs its own model to
-				// keep track of its own data.
-				var listModel:ISelectionModel = new ArraySelectionModel();
-				listModel.dataProvider = sharedModel.dataProvider;
-				
-				var dataGridColumn:DataGridColumn = sharedModel.columns[i] as DataGridColumn;
-				
-				var list:List = new List();
-				list.addBead(listModel); 
-				list.itemRenderer = dataGridColumn.itemRenderer;
-				list.labelField = dataGridColumn.dataField;
-				list.addBead(presentationModel);
-				
-				var colWidth:Number = dataGridColumn.columnWidth;
-				if (!isNaN(colWidth)) list.width = colWidth;
-
-				UIBase(_strand).addElement(list);
-				columns.push(list);
-				list.addEventListener('change',columnListChangeHandler);
-				list.addEventListener('rollover',columnListRollOverHandler);
-				list.addEventListener('layoutComplete',forwardEvent);
-			}
+			_header.addBead(buttonBarModel);
+			_header.addBead(bblayout);
+			_header.addBead(new Viewport());
+			host.addElement(_header);
+			
+			host.addElement(_listArea);
 			
-			// TODO: allow a developer to specify their own DataGridLayout
-			// possibly by seeing if a bead already exists
+			// do we know what the size is? If not, wait to be sized
 			
-			onSizeChanged(null);
-			IEventDispatcher(_strand).dispatchEvent(new Event("itemsCreated"));
+			if (host.isHeightSizedToContent() || host.isWidthSizedToContent()) {
+				host.addEventListener("sizeChanged", handleSizeChanges);
+			}
+				
+				// else size now
+			else {
+				handleDataProviderChanged(event);
+			}
 		}
 		
-		private function onSizeChanged(event:Event):void
+		/**
+		 * @private
+		 */
+		private function handleSizeChanges(event:Event):void
 		{
-			var bead:IBead = _strand.getBeadByType(IDataGridLayout);
-			var layout:IDataGridLayout;
-			if (bead == null) {
-				// NOTE: the following line will not cross-compile correctly into JavaScript
-				// so it has been commented and the class hard-coded.
-				//layout = new ValuesManager.valuesImpl.getValue(_strand, "iBeadLayout")) as IDataGridLayout;
-				layout = new DataGridLayout();
-				_strand.addBead(layout);
-			} else {
-				layout = bead as IDataGridLayout;
+			_header.x = 0;
+			_header.y = 0;
+			_header.width = host.width;
+			_header.height = 25;
+			
+			_listArea.x = 0;
+			_listArea.y = 26;
+			_listArea.width = host.width;
+			_listArea.height = host.height - _header.height;
+			
+			if (_lists != null) {
+				var xpos:Number = 0;
+				for (var i:int=0; i < _lists.length; i++) {
+					var list:List = _lists[i] as List;
+					list.x = xpos;
+					list.y = 0;
+					
+					xpos += list.width + 1;
+				}
 			}
-			layout.header = buttonBar;
-			layout.columns = columns;
-			layout.layout();
 		}
 		
 		/**
 		 * @private
-		 * When the dataProvider is changed for the DataGrid, this updates each List (column)
-		 * with the new (or changed) dataProvider.
 		 */
-		private function onDataProviderChanged(event:Event):void
+		private function handleDataProviderChanged(event:Event):void
 		{
 			var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) as IDataGridModel;
 			
-			for (var i:int=0; i < columns.length; i++)
+			if (_lists == null || _lists.length == 0) {
+				createLists();
+			}
+			
+			for (var i:int=0; i < _lists.length; i++)
 			{
-				var list:List = columns[i] as List;
+				var list:List = _lists[i] as List;
 				var listModel:ISelectionModel = list.getBeadByType(IBeadModel) as ISelectionModel;
 				listModel.dataProvider = sharedModel.dataProvider;
 			}
+			
+			handleSizeChanges(event);
 		}
 		
 		/**
 		 * @private
 		 */
-		private function columnListChangeHandler(event:Event):void
+		private function handleColumnListChange(event:Event):void
 		{
 			var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) as IDataGridModel;
 			var list:List = event.target as List;
 			sharedModel.selectedIndex = list.selectedIndex;
 			
-			for(var i:int=0; i < columns.length; i++) {
-				if (list != columns[i]) {
-					var otherList:List = columns[i] as List;
+			for(var i:int=0; i < _lists.length; i++) {
+				if (list != _lists[i]) {
+					var otherList:List = _lists[i] as List;
 					otherList.selectedIndex = list.selectedIndex;
 				}
 			}
@@ -225,14 +235,15 @@ package org.apache.flex.html.beads
 		/**
 		 * @private
 		 */
-		private function columnListRollOverHandler(event:Event):void
+		private function handleColumnListRollOver(event:Event):void
 		{
-			var list:List = event.target as List;
+			var itemRenderer:ISelectableItemRenderer = event.target as ISelectableItemRenderer;
+			var list:List = event.currentTarget as List;
 			if (list == null) return;
-			for(var i:int=0; i < columns.length; i++) {
-				if (list != columns[i]) {
-					var otherList:List = columns[i] as List;
-					otherList.rollOverIndex = list.rollOverIndex;
+			for(var i:int=0; i < _lists.length; i++) {
+				if (list != _lists[i]) {
+					var otherList:List = _lists[i] as List;
+					otherList.rollOverIndex = itemRenderer.index;
 				}
 			}
 			
@@ -242,10 +253,63 @@ package org.apache.flex.html.beads
 		/**
 		 * @private
 		 */
-		private function forwardEvent(event:Event):void
+		private function handleColumnListRollOut(event:Event):void
+		{
+			for(var i:int=0; i < _lists.length; i++) {
+				var otherList:List = _lists[i] as List;
+				otherList.rollOverIndex = -1;
+			}
+			
+			IEventDispatcher(_strand).dispatchEvent(new Event('rollOver'));
+		}
+		
+		/**
+		 * @private
+		 */
+		private function createLists():void
 		{
-			IEventDispatcher(_strand).dispatchEvent(event);
+			var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) as IDataGridModel;
+			var presentationModel:DataGridPresentationModel = _strand.getBeadByType(DataGridPresentationModel) as DataGridPresentationModel;
+			var listWidth:Number = host.width / sharedModel.columns.length;
+			
+			_lists = new Array();
+			
+			for (var i:int=0; i < sharedModel.columns.length; i++) {
+				
+				var listModel:ISelectionModel = new ArraySelectionModel();
+				listModel.dataProvider = sharedModel.dataProvider;
+				
+				var dataGridColumn:DataGridColumn = sharedModel.columns[i] as DataGridColumn;
+				
+				var list:List = new List();
+				list.id = "dataGridColumn"+String(i);
+				list.className = "DataGridColumn";
+				list.addBead(listModel); 
+				list.addBead(new Viewport()); // do not want lists to scroll independently
+				list.addBead(new VerticalLayout());
+				list.itemRenderer = dataGridColumn.itemRenderer;
+				list.labelField = dataGridColumn.dataField;
+				list.addEventListener('change',handleColumnListChange);
+				list.addEventListener('rollover',handleColumnListRollOver);
+				list.addEventListener('rollout',handleColumnListRollOut);
+				list.addBead(presentationModel);
+				
+				// do not want lists to have their own sizes
+				var style:SimpleCSSStyles = new SimpleCSSStyles();
+				style.borderWidth = 0;
+				style.backgroundColor = 0xFFFFFF;
+				list.style = style;
+				
+				var colWidth:Number = dataGridColumn.columnWidth;
+				if (!isNaN(colWidth)) list.width = colWidth - 1;
+				else list.width = listWidth - 1;
+				
+				_listArea.addElement(list);	
+				_lists.push(list);
+			}
+			
+			_listArea.dispatchEvent(new Event("layoutNeeded"));
 		}
-		 
 	}
 }
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/657ce8bd/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/IDataGridView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/IDataGridView.as b/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/IDataGridView.as
deleted file mode 100644
index 8f04d11..0000000
--- a/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/IDataGridView.as
+++ /dev/null
@@ -1,36 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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.IBeadView;
-	
-	/**
-	 *  The IDataGridView interface marks as a component as being the bead that
-	 *  can create the visual pieces for a org.apache.flex.html.DataGrid. 
-	 *  
-	 *  @langversion 3.0
-	 *  @playerversion Flash 10.2
-	 *  @playerversion AIR 2.6
-	 *  @productversion FlexJS 0.0
-	 */
-	public interface IDataGridView extends IBeadView
-	{
-		
-	}
-}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/657ce8bd/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/DataGridLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/DataGridLayout.as b/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/DataGridLayout.as
deleted file mode 100644
index f6849ce..0000000
--- a/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/layouts/DataGridLayout.as
+++ /dev/null
@@ -1,157 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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.layouts
-{	
-	import org.apache.flex.core.IBeadLayout;
-	import org.apache.flex.core.IDataGridLayout;
-	import org.apache.flex.core.IDataGridModel;
-	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.ButtonBar;
-	import org.apache.flex.html.supportClasses.DataGridColumn;
-	
-	/**
-	 * DataGridLayout is a class that handles the size and positioning of the
-	 * elements of a DataGrid. This includes the ButtonBar used for the column
-	 * headers and the Lists that are the columns.
-	 *  
-	 *  @langversion 3.0
-	 *  @playerversion Flash 10.2
-	 *  @playerversion AIR 2.6
-	 *  @productversion FlexJS 0.0
-	 */
-	public class DataGridLayout implements IBeadLayout, IDataGridLayout
-	{
-		/**
-		 *  constructor
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 */
-		public function DataGridLayout()
-		{
-		}
-		
-		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
-		 */
-		public function set strand(value:IStrand):void
-		{
-			_strand = value;
-		}
-		
-		private var _header:UIBase;
-		
-		/**
-		 * The element that is the header for the DataGrid
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 */
-		public function get header():IUIBase
-		{
-			return _header;
-		}
-		public function set header(value:IUIBase):void
-		{
-			_header = UIBase(value);
-		}
-		
-		private var _columns:Array;
-		
-		/**
-		 * The array of column elements.
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10.2
-		 *  @playerversion AIR 2.6
-		 *  @productversion FlexJS 0.0
-		 */
-		public function get columns():Array
-		{
-			return _columns;
-		}
-		public function set columns(value:Array):void
-		{
-			_columns = value;
-		}
-		
-        /**
-         * @copy org.apache.flex.core.IBeadLayout#layout
-         */
-		public function layout():Boolean
-		{						
-			var sw:Number = UIBase(_strand).width;
-			var sh:Number = UIBase(_strand).height;
-			
-			var columnHeight:Number = Math.floor(sh - header.height);
-			var columnWidth:Number  = Math.floor(sw / columns.length);
-			
-			var xpos:Number = 0;
-			var ypos:Number = Math.floor(header.height);
-			
-			// TODO: change the layout so that the model's DataGridColumn.columnWidth
-			// isn't used blindly, but is considered in the overall width. In other words,
-			// right now the width could exceed the strand's width.
-			var model:IDataGridModel = _strand.getBeadByType(IDataGridModel) as IDataGridModel;
-			
-			var buttonWidths:Array = new Array();
-			
-			for(var i:int=0; i < columns.length; i++) {
-				var column:UIBase = columns[i] as UIBase;
-				column.x = xpos;
-				column.y = ypos;
-				column.height = columnHeight;
-				
-				var dgc:DataGridColumn = model.columns[i];
-				if (!isNaN(dgc.columnWidth)) column.width = dgc.columnWidth;
-				else column.width  = columnWidth;
-				
-				xpos += column.width;
-				
-				buttonWidths.push(column.width);
-			}
-			
-			var bar:ButtonBar = header as ButtonBar;
-			var barLayout:ButtonBarLayout = bar.getBeadByType(ButtonBarLayout) as ButtonBarLayout;
-			barLayout.buttonWidths = buttonWidths;
-			
-			header.x = 0;
-			header.y = 0;
-			header.width = sw;
-			header.dispatchEvent(new Event("layoutNeeded"));
-			
-			return true;
-		}
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/657ce8bd/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/models/DataGridPresentationModel.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/models/DataGridPresentationModel.as b/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/models/DataGridPresentationModel.as
index 2959aad..0a00edb 100644
--- a/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/models/DataGridPresentationModel.as
+++ b/frameworks/projects/HTML/asjs/src/org/apache/flex/html/beads/models/DataGridPresentationModel.as
@@ -44,6 +44,8 @@ package org.apache.flex.html.beads.models
 		public function DataGridPresentationModel()
 		{
 			super();
+			
+			separatorThickness = 1;
 		}
 		
 		private var _columnLabels:Array;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/657ce8bd/frameworks/projects/HTML/basic-manifest.xml
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/basic-manifest.xml b/frameworks/projects/HTML/basic-manifest.xml
index 5ddd403..71a4049 100644
--- a/frameworks/projects/HTML/basic-manifest.xml
+++ b/frameworks/projects/HTML/basic-manifest.xml
@@ -81,7 +81,6 @@
 
     <component id="DataGrid" class="org.apache.flex.html.DataGrid"/>
     <component id="DataGridColumn" class="org.apache.flex.html.supportClasses.DataGridColumn"/>
-    <component id="DataGridLayout" class="org.apache.flex.html.beads.layouts.DataGridLayout" />
 
     <component id="DateChooser" class="org.apache.flex.html.DateChooser"/>
     <component id="DateField" class="org.apache.flex.html.DateField"/>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/657ce8bd/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.js b/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.js
index 73fe84e..4971449 100644
--- a/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.js
+++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.js
@@ -129,7 +129,10 @@ org.apache.flex.html.beads.DataItemRendererFactoryForArrayData.
     ir.index = i;
     ir.labelField = this.model.labelField;
     ir.data = dp[i];
-    if (presModel) ir.height = presModel.rowHeight;
+    if (presModel) {
+      ir.element.style['margin-bottom'] = presModel.separatorThickness;
+      ir.height = presModel.rowHeight;
+    }
   }
 
   var newEvent = new org.apache.flex.events.Event('itemsCreated');

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/657ce8bd/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/models/ListPresentationModel.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/models/ListPresentationModel.js b/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/models/ListPresentationModel.js
index 9b9bfeb..91d4371 100644
--- a/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/models/ListPresentationModel.js
+++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/models/ListPresentationModel.js
@@ -42,6 +42,13 @@ org.apache.flex.html.beads.models.ListPresentationModel.prototype.rowHeight_ = 3
 
 
 /**
+ * @private
+ * @type {number}
+ */
+org.apache.flex.html.beads.models.ListPresentationModel.prototype.separatorThickness_ = 0;
+
+
+/**
  * Metadata
  *
  * @type {Object.<string, Array.<Object>>}
@@ -71,5 +78,17 @@ Object.defineProperties(org.apache.flex.html.beads.models.ListPresentationModel.
             this.rowHeight_ = value;
             this.dispatchEvent('rowHeightChanged');
         }
+    },
+    /** @export */
+    separatorThickness: {
+        /** @this {org.apache.flex.html.beads.models.ListPresentationModel} */
+        get: function() {
+            return this.separatorThickness_;
+        },
+        /** @this {org.apache.flex.html.beads.models.ListPresentationModel} */
+        set: function(value) {
+            this.separatorThickness_ = value;
+            this.dispatchEvent('separatorThicknessChanged');
+        }
     }
 });