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 <[email protected]>
Authored: Mon Jan 20 10:09:18 2014 -0500
Committer: Peter Ent <[email protected]>
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;
-    }
-  }
-};

Reply via email to