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 2014/01/20 16:09:31 UTC

git commit: [flex-asjs] [refs/heads/develop] - Completed DataGridColumn work: removed labelFields from the DataGridModel (now provided by DataGridColumn); added button widths (optional) to ButtonBar to support columnWidth property of DataGridColumn. Adde

Updated Branches:
  refs/heads/develop 9eb52b0aa -> ca0e19300


Completed DataGridColumn work: removed labelFields from the DataGridModel (now provided by DataGridColumn); added button widths (optional) to ButtonBar to support columnWidth property of DataGridColumn. Added RowHeightBead to optionally set row height (same or variable) for 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/ca0e1930
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/ca0e1930
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/ca0e1930

Branch: refs/heads/develop
Commit: ca0e19300471219f46e1518ef14916565d8a0e08
Parents: 9eb52b0
Author: Peter Ent <pe...@apache.org>
Authored: Mon Jan 20 10:09:18 2014 -0500
Committer: Peter Ent <pe...@apache.org>
Committed: Mon Jan 20 10:09:18 2014 -0500

----------------------------------------------------------------------
 .../src/org/apache/flex/core/IDataGridModel.as  |  5 +-
 .../src/org/apache/flex/core/ISelectionModel.as |  3 +
 .../apache/flex/html/staticControls/DataGrid.as |  9 ---
 .../org/apache/flex/html/staticControls/List.as |  9 +++
 .../staticControls/beads/DataGridColumnView.as  | 10 ---
 .../html/staticControls/beads/DataGridView.as   | 69 ++++++++++++-------
 .../DataItemRendererFactoryForArrayData.as      |  1 +
 .../DataItemRendererFactoryForColumnData.as     | 10 +--
 .../flex/html/staticControls/beads/ListView.as  |  2 +-
 .../beads/layouts/ButtonBarLayout.as            | 18 ++++-
 .../NonVirtualVerticalScrollingLayout.as        |  1 +
 .../beads/models/ArraySelectionModel.as         | 13 ++++
 .../beads/models/DataGridModel.as               | 19 ++----
 .../supportClasses/DataItemRenderer.as          | 10 +++
 .../supportClasses/StringItemRenderer.as        |  4 +-
 .../apache/flex/html/staticControls/DataGrid.js | 20 ------
 .../org/apache/flex/html/staticControls/List.js | 20 ++++++
 .../html/staticControls/beads/DataGridView.js   | 72 ++++++++++++--------
 .../DataItemRendererFactoryForArrayData.js      |  1 +
 .../DataItemRendererFactoryForColumnData.js     |  3 +-
 .../beads/layouts/ButtonBarLayout.js            | 24 ++++++-
 .../beads/layouts/NonVirtualVerticalLayout.js   |  2 +
 .../beads/models/ArraySelectionModel.js         | 21 ++++++
 .../beads/models/DataGridModel.js               | 20 ------
 .../supportClasses/DataItemRenderer.js          | 57 ++++------------
 .../supportClasses/StringItemRenderer.js        | 54 ++-------------
 26 files changed, 244 insertions(+), 233 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/IDataGridModel.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/IDataGridModel.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/IDataGridModel.as
index eb7e326..41b8827 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/IDataGridModel.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/IDataGridModel.as
@@ -19,10 +19,7 @@
 package org.apache.flex.core
 {
 	public interface IDataGridModel extends ISelectionModel
-	{
-		function get labelFields():Object;
-		function set labelFields(value:Object):void;
-		
+	{		
 		function get columns():Array;
 		function set columns(value:Array):void;
 	}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/ISelectionModel.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/ISelectionModel.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/ISelectionModel.as
index cdca279..518d5f9 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/ISelectionModel.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/ISelectionModel.as
@@ -30,5 +30,8 @@ package org.apache.flex.core
 		
 		function get selectedItem():Object;
 		function set selectedItem(value:Object):void;
+		
+		function get labelField():String;
+		function set labelField(value:String):void;
 	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/DataGrid.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/DataGrid.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/DataGrid.as
index ad35adf..63ff36e 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/DataGrid.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/DataGrid.as
@@ -48,15 +48,6 @@ package org.apache.flex.html.staticControls
 			IDataGridModel(model).dataProvider = value;
 		}
 		
-		public function get labelFields():Object
-		{
-			return IDataGridModel(model).labelFields;
-		}
-		public function set labelFields(value:Object):void
-		{
-			IDataGridModel(model).labelFields = value;
-		}
-		
 		public function get selectedIndex():int
 		{
 			return IDataGridModel(model).selectedIndex;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/List.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/List.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/List.as
index a74d65a..ab3a7d7 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/List.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/List.as
@@ -42,6 +42,15 @@ package org.apache.flex.html.staticControls
 			super();
 		}
 		
+		public function get labelField():String
+		{
+			return ISelectionModel(model).labelField;
+		}
+		public function set labelField(value:String):void
+		{
+			ISelectionModel(model).labelField = value;
+		}
+		
         public function get dataProvider():Object
         {
             return ISelectionModel(model).dataProvider;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/DataGridColumnView.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/DataGridColumnView.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/DataGridColumnView.as
index ae3398a..7246bf3 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/DataGridColumnView.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/DataGridColumnView.as
@@ -53,15 +53,5 @@ package org.apache.flex.html.staticControls.beads
 		{
 			_column = value;
 		}
-		
-		private var _labelField:String;
-		public function get labelField():String
-		{
-			return _labelField;
-		}
-		public function set labelField(value:String):void
-		{
-			_labelField = value;
-		}
 	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/DataGridView.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/DataGridView.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/DataGridView.as
index e069688..93350ee 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/DataGridView.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/DataGridView.as
@@ -24,18 +24,20 @@ package org.apache.flex.html.staticControls.beads
 	
 	import org.apache.flex.core.IBeadModel;
 	import org.apache.flex.core.IDataGridModel;
-	import org.apache.flex.core.IDataGridPresentationModel;
+	import org.apache.flex.core.ISelectionModel;
 	import org.apache.flex.core.IStrand;
 	import org.apache.flex.core.UIBase;
 	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
+	import org.apache.flex.html.staticControls.Button;
 	import org.apache.flex.html.staticControls.ButtonBar;
 	import org.apache.flex.html.staticControls.Container;
 	import org.apache.flex.html.staticControls.List;
-	import org.apache.flex.html.staticControls.SimpleList;
+	import org.apache.flex.html.staticControls.beads.layouts.ButtonBarLayout;
 	import org.apache.flex.html.staticControls.beads.layouts.NonVirtualHorizontalLayout;
 	import org.apache.flex.html.staticControls.beads.models.ArraySelectionModel;
+	import org.apache.flex.html.staticControls.supportClasses.DataGridColumn;
 	
 	public class DataGridView implements IDataGridView
 	{
@@ -49,19 +51,37 @@ package org.apache.flex.html.staticControls.beads
 		private var columnContainer:Container;
 		private var columns:Array;
 		
+		public function getColumnLists():Array
+		{
+			return columns;
+		}
+		
 		private var _strand:IStrand;
 		public function set strand(value:IStrand):void
 		{
 			_strand = value;
 			
+			var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) as IDataGridModel;
+			
 			background = new Shape();
 			DisplayObjectContainer(_strand).addChild(background);
 			
-			var pm:IDataGridPresentationModel = _strand.getBeadByType(IDataGridPresentationModel) as IDataGridPresentationModel;
+			// 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++) {
+				columnLabels.push(sharedModel.columns[i].label);
+				buttonWidths.push(sharedModel.columns[i].columnWidth);
+			}
+			var bblayout:ButtonBarLayout = new ButtonBarLayout();
+			bblayout.buttonWidths = buttonWidths;
+			
 			buttonBarModel = new ArraySelectionModel();
-			buttonBarModel.dataProvider = pm.columnLabels;
+			buttonBarModel.dataProvider = columnLabels;
+			
 			buttonBar = new ButtonBar();
 			buttonBar.addBead(buttonBarModel);
+			buttonBar.addBead(bblayout);
 			UIBase(_strand).addElement(buttonBar);
 			
 			columnContainer = new Container();
@@ -69,25 +89,25 @@ package org.apache.flex.html.staticControls.beads
 			columnContainer.addBead(layout);
 			UIBase(_strand).addElement(columnContainer);
 			
-			var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) as IDataGridModel;
-			
 			columns = new Array();
-			for(var i:int=0; i < pm.columnLabels.length; i++) {
-				var column:List = new List(); // NEW (old:) new SimpleList();
-				var columnView:DataGridColumnView = new DataGridColumnView();
-				//columnView.labelField = sharedModel.labelFields[i];
-				columnView.column = sharedModel.columns[i]; // NEW
-				column.itemRenderer = columnView.column.itemRenderer;
-				var factory:DataItemRendererFactoryForColumnData = new DataItemRendererFactoryForColumnData();
-				columnView.columnIndex = i;
-				column.addBead(sharedModel);
-				column.addBead(columnView);
-				column.addBead(factory);
-				columnContainer.addElement(column);
-				columns.push(column);
+			for(i=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.addBead(listModel);
+				list.itemRenderer = dataGridColumn.itemRenderer;
+				list.labelField = dataGridColumn.dataField;
 				
-				column.addEventListener('change',columnListChangeHandler);
-				column.addEventListener('rollover',columnListRollOverHandler);
+				var colWidth:Number = dataGridColumn.columnWidth;
+				if (!isNaN(colWidth)) list.width = colWidth;
+
+				columnContainer.addElement(list);
+				columns.push(list);
+				list.addEventListener('change',columnListChangeHandler);
+				list.addEventListener('rollover',columnListRollOverHandler);
 			}
 			
 			IEventDispatcher(_strand).addEventListener("widthChanged",handleSizeChange);
@@ -124,16 +144,19 @@ package org.apache.flex.html.staticControls.beads
 				var column:List = columns[i];
 			
 				var cw:Number = sw/(columns.length);
-				column.x = i*cw; // should be positioned by the Container's layout
 				column.y = 0;
-				column.width = cw;
 				column.height = columnContainer.height; // this will actually be Nitem*rowHeight
 			}
+			
+			IEventDispatcher(_strand).dispatchEvent(new Event("layoutComplete"));
 		}
 		
 		private function columnListChangeHandler(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]) {
 					columns[i].selectedIndex = list.selectedIndex;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForArrayData.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForArrayData.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForArrayData.as
index 94a8d7e..aed6c5b 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForArrayData.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForArrayData.as
@@ -83,6 +83,7 @@ package org.apache.flex.html.staticControls.beads
 			{
 				var ir:IItemRenderer = itemRendererFactory.createItemRenderer(dataGroup) as IItemRenderer;
 				ir.index = i;
+				ir.labelField = selectionModel.labelField;
 				dataGroup.addElement(ir);
 				ir.data = dp[i];
 			}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForColumnData.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForColumnData.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForColumnData.as
index fc9e88a..87e5366 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForColumnData.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForColumnData.as
@@ -20,6 +20,7 @@ package org.apache.flex.html.staticControls.beads
 {
 	import org.apache.flex.core.IBead;
 	import org.apache.flex.core.IBeadView;
+	import org.apache.flex.core.IDataGridModel;
 	import org.apache.flex.core.IDataProviderItemRendererMapper;
 	import org.apache.flex.core.IItemRenderer;
 	import org.apache.flex.core.IItemRendererClassFactory;
@@ -29,6 +30,7 @@ package org.apache.flex.html.staticControls.beads
 	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
+	import org.apache.flex.html.staticControls.supportClasses.DataGridColumn;
 	import org.apache.flex.html.staticControls.supportClasses.DataItemRenderer;
 	
 	public class DataItemRendererFactoryForColumnData implements IBead, IDataProviderItemRendererMapper
@@ -37,14 +39,14 @@ package org.apache.flex.html.staticControls.beads
 		{
 		}
 		
-		private var selectionModel:ISelectionModel;
+		private var selectionModel:IDataGridModel;
 		
 		private var _strand:IStrand;
 		
 		public function set strand(value:IStrand):void
 		{
 			_strand = value;
-			selectionModel = value.getBeadByType(ISelectionModel) as ISelectionModel;
+			selectionModel = value.getBeadByType(IDataGridModel) as IDataGridModel;
 			var listView:IListView = value.getBeadByType(IListView) as IListView;
 			dataGroup = listView.dataGroup;
 			selectionModel.addEventListener("dataProviderChanged", dataProviderChangeHandler);
@@ -82,13 +84,13 @@ package org.apache.flex.html.staticControls.beads
 			
 			var view:DataGridColumnView = _strand.getBeadByType(IBeadView) as DataGridColumnView;
 			if (view == null) return;
-			
+						
 			var n:int = dp.length; 
 			for (var i:int = 0; i < n; i++)
 			{
-				
 				var tf:DataItemRenderer = itemRendererFactory.createItemRenderer(dataGroup) as DataItemRenderer;
 				tf.index = i;
+				tf.labelField = view.column.dataField;
 				dataGroup.addElement(tf);
 				tf.data = dp[i];
 			}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/ListView.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/ListView.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/ListView.as
index c6d33b4..f1ac5d3 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/ListView.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/ListView.as
@@ -109,7 +109,7 @@ package org.apache.flex.html.staticControls.beads
 			_dataGroup = new NonVirtualDataGroup();
 			IParent(_strand).addElement(_dataGroup);
             
-            if (getBeadByType(IBeadLayout) == null)
+            if (_strand.getBeadByType(IBeadLayout) == null)
             {
                 var mapper:IBeadLayout = new (ValuesManager.valuesImpl.getValue(_strand, "iBeadLayout")) as IBeadLayout;
 				strand.addBead(mapper);

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/layouts/ButtonBarLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/layouts/ButtonBarLayout.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/layouts/ButtonBarLayout.as
index c7c0a2d..80ad0fa 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/layouts/ButtonBarLayout.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/layouts/ButtonBarLayout.as
@@ -44,6 +44,16 @@ package org.apache.flex.html.staticControls.beads.layouts
 			IEventDispatcher(value).addEventListener("itemsCreated", changeHandler);
 		}
 		
+		private var _buttonWidths:Array = null;
+		public function get buttonWidths():Array
+		{
+			return _buttonWidths;
+		}
+		public function set buttonWidths(value:Array):void
+		{
+			_buttonWidths = value;
+		}
+		
 		private function changeHandler(event:Event):void
 		{
 			var layoutParent:ILayoutParent = _strand.getBeadByType(ILayoutParent) as ILayoutParent;
@@ -59,10 +69,12 @@ package org.apache.flex.html.staticControls.beads.layouts
 				var child:DisplayObject = contentView.getChildAt(i);
 				
 				child.y = 0;
-				child.x = xpos;
-				child.width = useWidth;
 				child.height = useHeight;
-				xpos += useWidth;
+				child.x = xpos;
+				
+				if (buttonWidths) child.width = Number(buttonWidths[i]);
+				else child.width = useWidth;
+				xpos += child.width;
 			}
 		}
 	}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/layouts/NonVirtualVerticalScrollingLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/layouts/NonVirtualVerticalScrollingLayout.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/layouts/NonVirtualVerticalScrollingLayout.as
index 0bc9dfd..cb32137 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/layouts/NonVirtualVerticalScrollingLayout.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/layouts/NonVirtualVerticalScrollingLayout.as
@@ -49,6 +49,7 @@ package org.apache.flex.html.staticControls.beads.layouts
 			IEventDispatcher(value).addEventListener("heightChanged", changeHandler);
 			IEventDispatcher(value).addEventListener("widthChanged", changeHandler);
 			IEventDispatcher(value).addEventListener("itemsCreated", changeHandler);
+			IEventDispatcher(value).addEventListener("layoutNeeded", changeHandler);
 		}
 	
 		private function changeHandler(event:Event):void

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/models/ArraySelectionModel.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/models/ArraySelectionModel.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/models/ArraySelectionModel.as
index d1794be..6e0929b 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/models/ArraySelectionModel.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/models/ArraySelectionModel.as
@@ -51,6 +51,19 @@ package org.apache.flex.html.staticControls.beads.models
 
 		private var _selectedIndex:int = -1;
 		private var _rollOverIndex:int = -1;
+		private var _labelField:String = null;
+		
+		public function get labelField():String
+		{
+			return _labelField;
+		}
+		public function set labelField(value:String):void
+		{
+			if (value != _labelField) {
+				_labelField = value;
+				dispatchEvent(new Event("labelFieldChanged"));
+			}
+		}
 		
 		public function get selectedIndex():int
 		{

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/models/DataGridModel.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/models/DataGridModel.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/models/DataGridModel.as
index 74dbf2c..fb607ba 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/models/DataGridModel.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/beads/models/DataGridModel.as
@@ -28,20 +28,6 @@ package org.apache.flex.html.staticControls.beads.models
 			super();
 		}
 		
-		private var _labelFields:Object;
-		public function get labelFields():Object
-		{
-			return _labelFields;
-		}
-		
-		public function set labelFields(value:Object):void
-		{
-			if (value != _labelFields) {
-				_labelFields = value;
-				dispatchEvent( new Event("labelFieldsChanged"));
-			}
-		}
-		
 		private var _columns:Array;
 		public function get columns():Array
 		{
@@ -49,7 +35,10 @@ package org.apache.flex.html.staticControls.beads.models
 		}
 		public function set columns(value:Array):void
 		{
-			_columns = value;
+			if (_columns != value) {
+				_columns = value;
+				dispatchEvent( new Event("columnsChanged"));
+			}
 		}
 	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/supportClasses/DataItemRenderer.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/supportClasses/DataItemRenderer.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/supportClasses/DataItemRenderer.as
index b12050b..1eab8a7 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/supportClasses/DataItemRenderer.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/supportClasses/DataItemRenderer.as
@@ -47,6 +47,16 @@ package org.apache.flex.html.staticControls.supportClasses
 			_rowIndex = value;
 		}
 		
+		private var _dataField:String;
+		public function get dataField():String
+		{
+			return _dataField;
+		}
+		public function set dataField(value:String):void
+		{
+			_dataField = value;
+		}
+		
 		private var background:Sprite;
 		
 		override public function addedToParent():void

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/supportClasses/StringItemRenderer.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/supportClasses/StringItemRenderer.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/supportClasses/StringItemRenderer.as
index 3242024..7e041b1 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/supportClasses/StringItemRenderer.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/staticControls/supportClasses/StringItemRenderer.as
@@ -72,7 +72,9 @@ package org.apache.flex.html.staticControls.supportClasses
 		override public function set data(value:Object):void
 		{
 			super.data = value;
-			textField.text = String(value);
+			if (labelField) textField.text = String(value[labelField]);
+			else if (dataField) textField.text = String(value[dataField]);
+			else textField.text = String(value);
 		}
 		
 		override public function updateRenderer():void

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/DataGrid.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/DataGrid.js b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/DataGrid.js
index a2b1fc0..af5ebe2 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/DataGrid.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/DataGrid.js
@@ -84,26 +84,6 @@ org.apache.flex.html.staticControls.DataGrid.prototype.set_dataProvider =
 
 /**
  * @expose
- * @return {string} The labelFields getter.
- */
-org.apache.flex.html.staticControls.DataGrid.prototype.get_labelFields =
-    function() {
-  return this.get_model().get_labelFields();
-};
-
-
-/**
- * @expose
- * @param {string} value The labelFields setter.
- */
-org.apache.flex.html.staticControls.DataGrid.prototype.set_labelFields =
-    function(value) {
-  this.get_model().set_labelFields(value);
-};
-
-
-/**
- * @expose
  * @param {Array} value The DataGridColumn definitions for this DataGrid.
  */
 org.apache.flex.html.staticControls.DataGrid.prototype.set_columns =

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/List.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/List.js b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/List.js
index 341d7e9..4555daf 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/List.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/List.js
@@ -70,6 +70,26 @@ function(value) {
 
 
 /**
+ * @expose
+ * @return {String} The name of the field to use as a label.
+ */
+org.apache.flex.html.staticControls.List.prototype.get_labelField =
+function() {
+  return this.get_model().get_labelField();
+};
+
+
+/**
+ * @expose
+ * @param {String} value The name of the field to use as a label.
+ */
+org.apache.flex.html.staticControls.List.prototype.set_labelField =
+function(value) {
+  this.get_model().set_labelField(value);
+};
+
+
+/**
  * @override
  */
 org.apache.flex.html.staticControls.List.prototype.createElement =

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/DataGridView.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/DataGridView.js b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/DataGridView.js
index a580902..5c75078 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/DataGridView.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/DataGridView.js
@@ -20,13 +20,11 @@ goog.require('org.apache.flex.events.Event');
 goog.require('org.apache.flex.html.staticControls.ButtonBar');
 goog.require('org.apache.flex.html.staticControls.Container');
 goog.require('org.apache.flex.html.staticControls.List');
-goog.require('org.apache.flex.html.staticControls.beads.DataGridColumnView');
 goog.require('org.apache.flex.html.staticControls.beads.DataItemRendererFactoryForColumnData');
 goog.require('org.apache.flex.html.staticControls.beads.TextItemRendererFactoryForArrayData');
 goog.require('org.apache.flex.html.staticControls.beads.layouts.NonVirtualHorizontalLayout');
 goog.require('org.apache.flex.html.staticControls.beads.models.ArraySelectionModel');
 goog.require('org.apache.flex.html.staticControls.beads.models.DataGridModel');
-goog.require('org.apache.flex.html.staticControls.beads.models.DataGridPresentationModel');
 goog.require('org.apache.flex.html.staticControls.supportClasses.DataGridColumn');
 
 
@@ -59,6 +57,16 @@ org.apache.flex.html.staticControls.beads.DataGridView.prototype.
 
 /**
  * @expose
+ * @return {Array} The columns of this DataGrid.
+ */
+org.apache.flex.html.staticControls.beads.DataGridView.prototype.getColumnLists =
+function() {
+  return this.columns;
+};
+
+
+/**
+ * @expose
  * @param {Object} value The new host.
  */
 org.apache.flex.html.staticControls.beads.DataGridView.prototype.set_strand =
@@ -66,15 +74,26 @@ org.apache.flex.html.staticControls.beads.DataGridView.prototype.set_strand =
 
   this.strand_ = value;
 
+  var sharedModel = value.getBeadByType(
+      org.apache.flex.html.staticControls.beads.models.DataGridModel);
+
   // Use the presentation model's columnLabels as the dataProvider for the
   // ButtonBar header.
-  var pm = value.getBeadByType(org.apache.flex.html.staticControls.
-      beads.models.DataGridPresentationModel);
+
+  var columnLabels = new Array();
+  var buttonWidths = new Array();
+  for (var i = 0; i < sharedModel.get_columns().length; i++) {
+    columnLabels.push(sharedModel.get_columns()[i].get_label());
+    buttonWidths.push(sharedModel.get_columns()[i].get_columnWidth());
+  }
+  var bblayout = new org.apache.flex.html.staticControls.beads.layouts.ButtonBarLayout();
+  bblayout.set_buttonWidths(buttonWidths);
   this.buttonBarModel = new
       org.apache.flex.html.staticControls.beads.models.ArraySelectionModel();
-  this.buttonBarModel.set_dataProvider(pm.get_columnLabels());
+  this.buttonBarModel.set_dataProvider(columnLabels);
   this.buttonBar = new org.apache.flex.html.staticControls.ButtonBar();
   this.buttonBar.addBead(this.buttonBarModel);
+  this.buttonBar.addBead(bblayout);
 
   this.buttonBar.set_height(20);
   this.buttonBar.set_width(this.strand_.get_width());
@@ -88,36 +107,29 @@ org.apache.flex.html.staticControls.beads.DataGridView.prototype.set_strand =
   this.columnContainer.positioner.style.width =
       this.strand_.positioner.style.width;
 
-  var sharedModel = value.getBeadByType(
-      org.apache.flex.html.staticControls.beads.models.DataGridModel);
-  var columnWidth = this.strand_.get_width() / pm.get_columnLabels().length - 2;
+  var columnWidth = this.strand_.get_width() / columnLabels.length - 2;
   var columnHeight = this.strand_.get_height() - this.buttonBar.get_height();
 
   this.columns = new Array();
 
-  for (var i = 0; i < pm.get_columnLabels().length; i++) {
-    var columnView = new
-        org.apache.flex.html.staticControls.beads.DataGridColumnView();
-    columnView.set_columnIndex(i);
-    columnView.set_labelField(sharedModel.get_labelFields()[i]);
-    columnView.set_column(sharedModel.get_columns()[i]);
-
-    var factory = new org.apache.flex.html.staticControls.beads.
-        DataItemRendererFactoryForColumnData();
-
-    var column = new org.apache.flex.html.staticControls.List();
-    column.set_itemRenderer(columnView.get_column().get_itemRenderer());
-    column.set_dataProvider(this.strand_.get_dataProvider());
-    column.set_width(columnWidth);
-    column.set_height(columnHeight);
-    column.addBead(columnView);
-    column.addBead(factory);
-    column.addEventListener('change',
-        goog.bind(this.columnListChangeHandler, this));
-
-    this.columnContainer.addElement(column);
-    this.columns.push(column);
+  for (var i = 0; i < sharedModel.get_columns().length; i++) {
+     var listModel = new org.apache.flex.html.staticControls.beads.models.ArraySelectionModel();
+     listModel.set_dataProvider(sharedModel.get_dataProvider());
+
+     var dataGridColumn = sharedModel.get_columns()[i];
+
+     var list = new org.apache.flex.html.staticControls.List();
+     list.addBead(listModel);
+     list.set_itemRenderer(dataGridColumn.get_itemRenderer());
+     list.set_labelField(dataGridColumn.get_dataField());
+     list.set_width(dataGridColumn.get_columnWidth()-2);
+     list.set_height(columnHeight);
+     this.columnContainer.addElement(list);
+     this.columns.push(list);
+     list.addEventListener('change', goog.bind(this.columnListChangeHandler, this));
   }
+
+   this.strand_.dispatchEvent(new org.apache.flex.events.Event('layoutComplete'));
 };
 
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForArrayData.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForArrayData.js b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForArrayData.js
index 9573b5c..a7b64f6 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForArrayData.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForArrayData.js
@@ -124,6 +124,7 @@ org.apache.flex.html.staticControls.beads.DataItemRendererFactoryForArrayData.
   for (i = 0; i < n; i++) {
     var ir = this.itemRendererFactory_.createItemRenderer(this.dataGroup);
     ir.set_index(i);
+    ir.set_labelField(this.model.get_labelField());
     ir.set_data(dp[i]);
     this.dataGroup.addElement(ir);
   }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForColumnData.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForColumnData.js b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForColumnData.js
index 72ec02e..617e70b 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForColumnData.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForColumnData.js
@@ -121,10 +121,11 @@ org.apache.flex.html.staticControls.beads.DataItemRendererFactoryForColumnData.
 
   view = this.listView;
   for (i = 0; i < n; i++) {
-    fieldName = view.get_labelField();
+    fieldName = view.get_column().get_dataField();
 
     // todo: grab an itemRenderer from a factory for this column
     opt = this.itemRendererFactory_.createItemRenderer(this.dataGroup);
+    opt.set_dataField(fieldName);
     this.dataGroup.addElement(opt);
     opt.set_data(dp[i]);
   }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/layouts/ButtonBarLayout.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/layouts/ButtonBarLayout.js b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/layouts/ButtonBarLayout.js
index 8b6b3a7..6e1c0cf 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/layouts/ButtonBarLayout.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/layouts/ButtonBarLayout.js
@@ -45,6 +45,26 @@ org.apache.flex.html.staticControls.beads.layouts.ButtonBarLayout
 
 /**
  * @expose
+ * @param {Array} value A set of widths to use for each button (optional).
+ */
+org.apache.flex.html.staticControls.beads.layouts.ButtonBarLayout.prototype.set_buttonWidths =
+function(value) {
+  this.buttonWidths_ = value;
+};
+
+
+/**
+ * @expose
+ * @return {Array} A set of widths to use for each button.
+ */
+org.apache.flex.html.staticControls.beads.layouts.ButtonBarLayout.prototype.get_buttonWidths =
+function() {
+  return this.buttonWidths_;
+};
+
+
+/**
+ * @expose
  * @param {Object} value The new host.
  */
 org.apache.flex.html.staticControls.beads.layouts.ButtonBarLayout.
@@ -77,9 +97,11 @@ org.apache.flex.html.staticControls.beads.layouts.ButtonBarLayout.
 
   for (i = 0; i < n; i++)
   {
-    children[i].set_width(useWidth);
     children[i].set_height(useHeight);
+    if (this.buttonWidths_) children[i].set_width(this.buttonWidths_[i]);
+    else children[i].set_width(useWidth);
     children[i].element.style['vertical-align'] = 'middle';
+    children[i].element.style['text-align'] = 'center';
     children[i].element.style['left-margin'] = 'auto';
     children[i].element.style['right-margin'] = 'auto';
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/layouts/NonVirtualVerticalLayout.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/layouts/NonVirtualVerticalLayout.js b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/layouts/NonVirtualVerticalLayout.js
index f0ac6c9..23269b1 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/layouts/NonVirtualVerticalLayout.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/layouts/NonVirtualVerticalLayout.js
@@ -50,6 +50,8 @@ org.apache.flex.html.staticControls.beads.layouts.NonVirtualVerticalLayout.
     this.strand_ = value;
     this.strand_.addEventListener('childrenAdded',
         goog.bind(this.changeHandler, this));
+    this.strand_.addEventListener('layoutNeeded',
+        goog.bind(this.changeHandler, this));
   }
 };
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/models/ArraySelectionModel.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/models/ArraySelectionModel.js b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/models/ArraySelectionModel.js
index f79da72..8d3c0f6 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/models/ArraySelectionModel.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/models/ArraySelectionModel.js
@@ -137,3 +137,24 @@ org.apache.flex.html.staticControls.beads.models.ArraySelectionModel.prototype.
   this.dispatchEvent('selectedItemChanged');
   this.dispatchEvent('selectedIndexChanged');
 };
+
+
+/**
+ * @expose
+ * @return {String} The name of the field to use as a label.
+ */
+org.apache.flex.html.staticControls.beads.models.ArraySelectionModel.prototype.get_labelField =
+function() {
+  return this.labelField_;
+};
+
+
+/**
+ * @expose
+ * @param {String} value The name of the field to use as a label.
+ */
+org.apache.flex.html.staticControls.beads.models.ArraySelectionModel.prototype.set_labelField =
+function(value) {
+  this.labelField_ = value;
+  this.dispatchEvent('labelFieldChanged');
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/models/DataGridModel.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/models/DataGridModel.js b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/models/DataGridModel.js
index ec720c8..15c0f9a 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/models/DataGridModel.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/beads/models/DataGridModel.js
@@ -61,26 +61,6 @@ org.apache.flex.html.staticControls.beads.models.DataGridModel.prototype.
 
 /**
  * @expose
- * @param {Array} value Array of label fields.
- */
-org.apache.flex.html.staticControls.beads.models.DataGridModel.prototype.
-    set_labelFields = function(value) {
-  this.labelFields_ = value;
-};
-
-
-/**
- * @expose
- * @return {Array} Array of label fields.
- */
-org.apache.flex.html.staticControls.beads.models.DataGridModel.prototype.
-    get_labelFields = function() {
-  return this.labelFields_;
-};
-
-
-/**
- * @expose
  * @param {Array} value Array of DataGridColumn instances.
  */
 org.apache.flex.html.staticControls.beads.models.DataGridModel.prototype.

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/DataItemRenderer.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/DataItemRenderer.js b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/DataItemRenderer.js
index 2e38432..48d8c4f 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/DataItemRenderer.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/DataItemRenderer.js
@@ -15,14 +15,14 @@
 goog.provide('org.apache.flex.html.staticControls.supportClasses.DataItemRenderer');
 
 goog.require('org.apache.flex.core.IItemRenderer');
-goog.require('org.apache.flex.core.UIBase');
 goog.require('org.apache.flex.html.staticControls.beads.controllers.ItemRendererMouseController');
+goog.require('org.apache.flex.html.staticControls.supportClasses.UIItemRendererBase');
 
 
 
 /**
  * @constructor
- * @extends {org.apache.flex.core.UIBase}
+ * @extends {org.apache.flex.html.staticControls.supportClasses.UIItemRendererBase}
  * @implements {org.apache.flex.core.IItemRenderer}
  */
 org.apache.flex.html.staticControls.supportClasses.DataItemRenderer =
@@ -31,7 +31,7 @@ org.apache.flex.html.staticControls.supportClasses.DataItemRenderer =
 };
 goog.inherits(
     org.apache.flex.html.staticControls.supportClasses.DataItemRenderer,
-    org.apache.flex.core.UIBase);
+    org.apache.flex.html.staticControls.supportClasses.UIItemRendererBase);
 
 
 /**
@@ -72,27 +72,6 @@ org.apache.flex.html.staticControls.supportClasses.DataItemRenderer.
 
 /**
  * @expose
- * @param {Object} value The strand.
- */
-org.apache.flex.html.staticControls.supportClasses.DataItemRenderer.
-    prototype.set_strand = function(value) {
-
-  this.strand_ = value;
-};
-
-
-/**
- * @expose
- * @return {Object} The strand.
- */
-org.apache.flex.html.staticControls.supportClasses.DataItemRenderer.
-    prototype.get_strand = function() {
-  return this.strand_;
-};
-
-
-/**
- * @expose
  * @return {Object} The item renderer's parent.
  */
 org.apache.flex.html.staticControls.supportClasses.DataItemRenderer.
@@ -113,16 +92,6 @@ org.apache.flex.html.staticControls.supportClasses.DataItemRenderer.
 
 /**
  * @expose
- * @return {Object} The renderer's index.
- */
-org.apache.flex.html.staticControls.supportClasses.DataItemRenderer.
-    prototype.get_index = function() {
-  return this.index_;
-};
-
-
-/**
- * @expose
  * @param {Object} value The renderer's index.
  */
 org.apache.flex.html.staticControls.supportClasses.DataItemRenderer.
@@ -133,29 +102,29 @@ org.apache.flex.html.staticControls.supportClasses.DataItemRenderer.
 
 /**
  * @expose
- * @param {Object} value The data to display.
+ * @param {string} value The name of field to use.
  */
 org.apache.flex.html.staticControls.supportClasses.DataItemRenderer.
-    prototype.set_data = function(value) {
+    prototype.set_dataField = function(value) {
 
-  this.data = value;
+  this.dataField_ = value;
 };
 
 
 /**
  * @expose
- * @return {Object} The value being displayed.
+ * @return {string} The name of the field to use.
  */
 org.apache.flex.html.staticControls.supportClasses.DataItemRenderer.
-    prototype.get_data = function() {
+    prototype.get_dataField = function() {
 
-  return this.data;
+  return this.dataField_;
 };
 
 
 /**
- * @expose
- * @param {boolean} value The selection state.
+ * @override
+ * @param {Boolean} value The selection state.
  */
 org.apache.flex.html.staticControls.supportClasses.DataItemRenderer.
     prototype.set_selected = function(value) {
@@ -170,8 +139,8 @@ org.apache.flex.html.staticControls.supportClasses.DataItemRenderer.
 
 
 /**
- * @expose
- * @param {boolean} value The hovered state.
+ * @override
+ * @param {Boolean} value The hovered state.
  */
 org.apache.flex.html.staticControls.supportClasses.DataItemRenderer.
     prototype.set_hovered = function(value) {

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ca0e1930/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/StringItemRenderer.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/StringItemRenderer.js b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/StringItemRenderer.js
index 46247a3..c19729e 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/StringItemRenderer.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/staticControls/supportClasses/StringItemRenderer.js
@@ -114,16 +114,6 @@ org.apache.flex.html.staticControls.supportClasses.StringItemRenderer.
 
 /**
  * @expose
- * @return {Object} The renderer's index.
- */
-org.apache.flex.html.staticControls.supportClasses.StringItemRenderer.
-    prototype.get_index = function() {
-  return this.index_;
-};
-
-
-/**
- * @expose
  * @param {Object} value The renderer's index.
  */
 org.apache.flex.html.staticControls.supportClasses.StringItemRenderer.
@@ -163,7 +153,13 @@ org.apache.flex.html.staticControls.supportClasses.StringItemRenderer.
 
   goog.base(this, 'set_data', value);
 
-  if (value.toString) {
+  if (this.get_labelField()) {
+    this.element.innerHTML = String(value[this.get_labelField()]);
+  }
+  else if (this.get_dataField()) {
+    this.element.innerHTML = String(value[this.get_dataField()]);
+  }
+  else if (value.toString) {
     this.element.innerHTML = value.toString();
   } else {
     this.element.innerHTML = String(value);
@@ -180,39 +176,3 @@ org.apache.flex.html.staticControls.supportClasses.StringItemRenderer.
 
   return this.element.innerHTML;
 };
-
-
-/**
- * @expose
- * @param {boolean} value The selection state.
- */
-org.apache.flex.html.staticControls.supportClasses.StringItemRenderer.
-    prototype.set_selected = function(value) {
-  this.selected_ = value;
-
-  if (value) {
-    this.backgroundView.style.backgroundColor = '#9C9C9C';
-  } else {
-    this.backgroundView.style.backgroundColor = null;
-  }
-};
-
-
-/**
- * @expose
- * @param {boolean} value The hovered state.
- */
-org.apache.flex.html.staticControls.supportClasses.StringItemRenderer.
-    prototype.set_hovered = function(value) {
-  this.hovered_ = value;
-
-  if (value) {
-    this.backgroundView.style.backgroundColor = '#ECECEC';
-  } else {
-    if (this.selected_) {
-      this.backgroundView.style.backgroundColor = '#9C9C9C';
-    } else {
-      this.backgroundView.style.backgroundColor = null;
-    }
-  }
-};