Fixed layout (HTML side) bug 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/28150c46
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/28150c46
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/28150c46

Branch: refs/heads/dual
Commit: 28150c46ec97ec335b35804dff597af2709c164e
Parents: fece150
Author: Peter Ent <p...@apache.org>
Authored: Mon Apr 10 11:51:56 2017 -0400
Committer: Peter Ent <p...@apache.org>
Committed: Mon Apr 10 11:51:56 2017 -0400

----------------------------------------------------------------------
 .../flex/html/beads/DataGridPercentageView.as   |   5 +-
 .../org/apache/flex/html/beads/DataGridView.as  | 445 ++++++++++---------
 .../html/supportClasses/ScrollingViewport.as    |   1 +
 3 files changed, 227 insertions(+), 224 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/28150c46/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DataGridPercentageView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DataGridPercentageView.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DataGridPercentageView.as
index 76365f3..510e18d 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DataGridPercentageView.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DataGridPercentageView.as
@@ -131,10 +131,11 @@ package org.apache.flex.html.beads
                        }
                        COMPILE::JS {
                                _header.element.style["flex-grow"] = "0";
+                               _header.element.style["min-height"] = "30px";
                                _listArea.element.style["flex-grow"] = "1";
                        }
-
-                       finishSetup(null);
+                       
+                       
IEventDispatcher(_strand).addEventListener("initComplete", finishSetup);
                }
 
                /**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/28150c46/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DataGridView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DataGridView.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DataGridView.as
index 4103659..68e5d95 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DataGridView.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DataGridView.as
@@ -40,260 +40,261 @@ package org.apache.flex.html.beads
        COMPILE::SWF {
                import org.apache.flex.core.SimpleCSSStyles;
        }
-
-       /**
-        *  The DataGridView class is the visual bead for the 
org.apache.flex.html.DataGrid.
-        *  This class constructs the items that make the DataGrid: Lists for 
each column and a
-        *  org.apache.flex.html.ButtonBar for the column headers.
-        *
-        *  @viewbead
-        *  @langversion 3.0
-        *  @playerversion Flash 10.2
-        *  @playerversion AIR 2.6
-        *  @productversion FlexJS 0.0
-        */
-       public class DataGridView extends GroupView implements IBeadView
-       {
-               /**
-                *  constructor.
-                *
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion FlexJS 0.0
-                */
-               public function DataGridView()
-               {
-                       super();
-               }
-
-               private var _strand:IStrand;
-               private var _header:DataGridButtonBar;
-               private var _listArea:Container;
-               
-               private var _lists:Array;
                
                /**
-                * An array of List objects the comprise the columns of the 
DataGrid.
-                */
-               public function get columnLists():Array
-               {
-                       return _lists;
-               }
-               
-               /**
-                * The area used to hold the columns
-                *
-                */
-               public function get listArea():Container
-               {
-                       return _listArea;
-               }
-               
-               /**
-                * Returns the component used as the header for the DataGrid.
-                */
-               public function get header():IUIBase
-               {
-                       return _header;
-               }
-
-               /**
-                *  @copy org.apache.flex.core.IBead#strand
+                *  The DataGridView class is the visual bead for the 
org.apache.flex.html.DataGrid.
+                *  This class constructs the items that make the DataGrid: 
Lists for each column and a
+                *  org.apache.flex.html.ButtonBar for the column headers.
                 *
+                *  @viewbead
                 *  @langversion 3.0
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
                 *  @productversion FlexJS 0.0
                 */
-               override public function set strand(value:IStrand):void
+               public class DataGridView extends GroupView implements IBeadView
                {
-                       super.strand = value;
-                       _strand = value;
-
-                       var host:DataGrid = value as DataGrid;
-
-                       _header = new DataGridButtonBar();
-                       _header.height = 30;
-                       _header.percentWidth = 100;
-
-                       _listArea = new Container();
-                       _listArea.percentWidth = 100;
-                       _listArea.className = "DataGridListArea";
+                       /**
+                        *  constructor.
+                        *
+                        *  @langversion 3.0
+                        *  @playerversion Flash 10.2
+                        *  @playerversion AIR 2.6
+                        *  @productversion FlexJS 0.0
+                        */
+                       public function DataGridView()
+                       {
+                               super();
+                       }
                        
-                       COMPILE::SWF {
-                               _header.style = new SimpleCSSStyles();
-                               _header.style.flexGrow = 0;
-                               
-                               _listArea.style = new SimpleCSSStyles();
-                               _listArea.style.flexGrow = 1;
+                       private var _strand:IStrand;
+                       private var _header:DataGridButtonBar;
+                       private var _listArea:Container;
+                       
+                       private var _lists:Array;
+                       
+                       /**
+                        * An array of List objects the comprise the columns of 
the DataGrid.
+                        */
+                       public function get columnLists():Array
+                       {
+                               return _lists;
                        }
-                       COMPILE::JS {
-                               _header.element.style["flex-grow"] = "0";
-                               _listArea.element.style["flex-grow"] = "1";
+                       
+                       /**
+                        * The area used to hold the columns
+                        *
+                        */
+                       public function get listArea():Container
+                       {
+                               return _listArea;
                        }
-
-                       finishSetup(null);
-               }
-
-               /**
-                * @private
-                */
-               private function finishSetup(event:Event):void
-               {
-                       var host:DataGrid = _strand as DataGrid;
                        
-                       if (_lists == null || _lists.length == 0) {
-                               createLists();
+                       /**
+                        * Returns the component used as the header for the 
DataGrid.
+                        */
+                       public function get header():IUIBase
+                       {
+                               return _header;
                        }
-
-                       // see if there is a presentation model already in 
place. if not, add one.
-                       var presentationModel:IDataGridPresentationModel = 
host.presentationModel;
-                       var sharedModel:IDataGridModel = host.model as 
IDataGridModel;
-                       
IEventDispatcher(sharedModel).addEventListener("dataProviderChanged",handleDataProviderChanged);
-                       
IEventDispatcher(sharedModel).addEventListener("selectedIndexChanged", 
handleSelectedIndexChanged);
-
-                       var columnLabels:Array = new Array();
-                       var buttonWidths:Array = new Array();
                        
-                       var marginBorderOffset:int = 0;
-                       COMPILE::SWF {
-                               marginBorderOffset = 1;
+                       /**
+                        *  @copy org.apache.flex.core.IBead#strand
+                        *
+                        *  @langversion 3.0
+                        *  @playerversion Flash 10.2
+                        *  @playerversion AIR 2.6
+                        *  @productversion FlexJS 0.0
+                        */
+                       override public function set strand(value:IStrand):void
+                       {
+                               super.strand = value;
+                               _strand = value;
+                               
+                               var host:DataGrid = value as DataGrid;
+                               
+                               _header = new DataGridButtonBar();
+                               _header.height = 30;
+                               _header.percentWidth = 100;
+                               
+                               _listArea = new Container();
+                               _listArea.percentWidth = 100;
+                               _listArea.className = "DataGridListArea";
+                               
+                               COMPILE::SWF {
+                                       _header.style = new SimpleCSSStyles();
+                                       _header.style.flexGrow = 0;
+                                       
+                                       _listArea.style = new SimpleCSSStyles();
+                                       _listArea.style.flexGrow = 1;
+                               }
+                               COMPILE::JS {
+                                       _header.element.style["flex-grow"] = 
"0";
+                                       _header.element.style["min-height"] = 
"30px";
+                                       _listArea.element.style["flex-grow"] = 
"1";
+                               }
+                               
+                               
IEventDispatcher(_strand).addEventListener("initComplete", finishSetup);
                        }
-
-                       for(var i:int=0; i < sharedModel.columns.length; i++) {
-                               var dgc:DataGridColumn = sharedModel.columns[i] 
as DataGridColumn;
-                               columnLabels.push(dgc.label);
-                               var colWidth:Number = dgc.columnWidth - 
marginBorderOffset;
-                               buttonWidths.push(colWidth);
+                       
+                       /**
+                        * @private
+                        */
+                       private function finishSetup(event:Event):void
+                       {
+                               var host:DataGrid = _strand as DataGrid;
                                
-                               var list:DataGridColumnList = _lists[i] as 
DataGridColumnList;
-                               if (!isNaN(colWidth)) {
-                                       list.width = Number(colWidth - 
marginBorderOffset);
-                               } else {
-                                       COMPILE::SWF {
-                                               list.style = new 
SimpleCSSStyles();
-                                               list.style.flexGrow = 1;
-                                       }
-                                               COMPILE::JS {
-                                                       
list.element.style["flex-grow"] = "1";
+                               if (_lists == null || _lists.length == 0) {
+                                       createLists();
+                               }
+                               
+                               // see if there is a presentation model already 
in place. if not, add one.
+                               var 
presentationModel:IDataGridPresentationModel = host.presentationModel;
+                               var sharedModel:IDataGridModel = host.model as 
IDataGridModel;
+                               
IEventDispatcher(sharedModel).addEventListener("dataProviderChanged",handleDataProviderChanged);
+                               
IEventDispatcher(sharedModel).addEventListener("selectedIndexChanged", 
handleSelectedIndexChanged);
+                               
+                               var columnLabels:Array = new Array();
+                               var buttonWidths:Array = new Array();
+                               
+                               var marginBorderOffset:int = 0;
+                               COMPILE::SWF {
+                                       marginBorderOffset = 1;
+                               }
+                                       
+                               for(var i:int=0; i < 
sharedModel.columns.length; i++) {
+                                       var dgc:DataGridColumn = 
sharedModel.columns[i] as DataGridColumn;
+                                       columnLabels.push(dgc.label);
+                                       var colWidth:Number = dgc.columnWidth - 
marginBorderOffset;
+                                       buttonWidths.push(colWidth);
+                                       
+                                       var list:DataGridColumnList = _lists[i] 
as DataGridColumnList;
+                                       if (!isNaN(colWidth)) {
+                                               list.width = Number(colWidth - 
marginBorderOffset);
+                                       } else {
+                                               COMPILE::SWF {
+                                                       list.style = new 
SimpleCSSStyles();
+                                                       list.style.flexGrow = 1;
                                                }
+                                                       COMPILE::JS {
+                                                               
list.element.style["flex-grow"] = "1";
+                                                       }
+                                       }
                                }
+                                       
+                               var bblayout:ButtonBarLayout = new 
ButtonBarLayout();
+                               _header.buttonWidths = buttonWidths
+                               _header.widthType = ButtonBarModel.PIXEL_WIDTHS;
+                               _header.dataProvider = columnLabels;
+                               _header.addBead(bblayout);
+                               _header.addBead(new Viewport());
+                               host.addElement(_header);
+                               
+                               host.addElement(_listArea);
+                               
+                               handleDataProviderChanged(event);
+                               
+                               host.addEventListener("widthChanged", 
handleSizeChanges);
+                               host.addEventListener("heightChanged", 
handleSizeChanges);
                        }
-
-                       var bblayout:ButtonBarLayout = new ButtonBarLayout();
-                       _header.buttonWidths = buttonWidths
-                       _header.widthType = ButtonBarModel.PIXEL_WIDTHS;
-                       _header.dataProvider = columnLabels;
-                       _header.addBead(bblayout);
-                       _header.addBead(new Viewport());
-                       host.addElement(_header);
-
-                       host.addElement(_listArea);
-
-                       handleDataProviderChanged(event);
                        
-                       host.addEventListener("widthChanged", 
handleSizeChanges);
-                       host.addEventListener("heightChanged", 
handleSizeChanges);
-               }
-
-               /**
-                * @private
-                */
-               private function handleSizeChanges(event:Event):void
-               {       
-                       _header.dispatchEvent(new Event("layoutChanged"));
-                       _listArea.dispatchEvent(new Event("layoutChanged"));
-               }
-
-               /**
-                * @private
-                */
-               private function handleDataProviderChanged(event:Event):void
-               {
-                       var sharedModel:IDataGridModel = 
_strand.getBeadByType(IBeadModel) as IDataGridModel;
-
-                       for (var i:int=0; i < _lists.length; i++)
+                       /**
+                        * @private
+                        */
+                       private function handleSizeChanges(event:Event):void
+                       {       
+                               _header.dispatchEvent(new 
Event("layoutChanged"));
+                               _listArea.dispatchEvent(new 
Event("layoutChanged"));
+                       }
+                       
+                       /**
+                        * @private
+                        */
+                       private function 
handleDataProviderChanged(event:Event):void
                        {
-                               var list:DataGridColumnList = _lists[i] as 
DataGridColumnList;
-                               var listModel:ISelectionModel = 
list.getBeadByType(IBeadModel) as ISelectionModel;
-                               listModel.dataProvider = 
sharedModel.dataProvider;
+                               var sharedModel:IDataGridModel = 
_strand.getBeadByType(IBeadModel) as IDataGridModel;
+                               
+                               for (var i:int=0; i < _lists.length; i++)
+                               {
+                                       var list:DataGridColumnList = _lists[i] 
as DataGridColumnList;
+                                       var listModel:ISelectionModel = 
list.getBeadByType(IBeadModel) as ISelectionModel;
+                                       listModel.dataProvider = 
sharedModel.dataProvider;
+                               }
+                               
+                               host.dispatchEvent(new Event("layoutNeeded"));
                        }
-
-                       host.dispatchEvent(new Event("layoutNeeded"));
-               }
-               
-               /**
-                * @private
-                */
-               private function handleSelectedIndexChanged(event:Event):void
-               {
-                       var sharedModel:IDataGridModel = 
_strand.getBeadByType(IBeadModel) as IDataGridModel;
-                       var newIndex:int = sharedModel.selectedIndex;
                        
-                       for (var i:int=0; i < _lists.length; i++)
+                       /**
+                        * @private
+                        */
+                       private function 
handleSelectedIndexChanged(event:Event):void
                        {
-                               var list:DataGridColumnList = _lists[i] as 
DataGridColumnList;
-                               list.selectedIndex = newIndex;
+                               var sharedModel:IDataGridModel = 
_strand.getBeadByType(IBeadModel) as IDataGridModel;
+                               var newIndex:int = sharedModel.selectedIndex;
+                               
+                               for (var i:int=0; i < _lists.length; i++)
+                               {
+                                       var list:DataGridColumnList = _lists[i] 
as DataGridColumnList;
+                                       list.selectedIndex = newIndex;
+                               }
                        }
-               }
-
-               /**
-                * @private
-                */
-               private function handleColumnListChange(event:Event):void
-               {
-                       var sharedModel:IDataGridModel = 
_strand.getBeadByType(IBeadModel) as IDataGridModel;
-                       var list:DataGridColumnList = event.target as 
DataGridColumnList;
-                       sharedModel.selectedIndex = list.selectedIndex;
-
-                       for(var i:int=0; i < _lists.length; i++) {
-                               if (list != _lists[i]) {
-                                       var otherList:DataGridColumnList = 
_lists[i] as DataGridColumnList;
-                                       otherList.selectedIndex = 
list.selectedIndex;
+                       
+                       /**
+                        * @private
+                        */
+                       private function 
handleColumnListChange(event:Event):void
+                       {
+                               var sharedModel:IDataGridModel = 
_strand.getBeadByType(IBeadModel) as IDataGridModel;
+                               var list:DataGridColumnList = event.target as 
DataGridColumnList;
+                               sharedModel.selectedIndex = list.selectedIndex;
+                               
+                               for(var i:int=0; i < _lists.length; i++) {
+                                       if (list != _lists[i]) {
+                                               var 
otherList:DataGridColumnList = _lists[i] as DataGridColumnList;
+                                               otherList.selectedIndex = 
list.selectedIndex;
+                                       }
                                }
+                               
+                               host.dispatchEvent(new Event('change'));
                        }
-
-                       host.dispatchEvent(new Event('change'));
-               }
-
-               /**
-                * @private
-                */
-               private function createLists():void
-               {
-                       var host:DataGrid = _strand as DataGrid;
                        
-                       var sharedModel:IDataGridModel = host.model as 
IDataGridModel;
-                       var presentationModel:IDataGridPresentationModel = 
host.presentationModel;
-
-                       _lists = new Array();
-
-                       for (var i:int=0; i < sharedModel.columns.length; i++) {
-                               var dataGridColumn:DataGridColumn = 
sharedModel.columns[i] as DataGridColumn;
-
-                               var list:DataGridColumnList = new 
DataGridColumnList();
-                               list.id = "dataGridColumn"+String(i);
-                               list.addBead(sharedModel);
-                               list.itemRenderer = dataGridColumn.itemRenderer;
-                               list.labelField = dataGridColumn.dataField;
-                               
list.addEventListener('change',handleColumnListChange);
-                               list.addBead(presentationModel);
+                       /**
+                        * @private
+                        */
+                       private function createLists():void
+                       {
+                               var host:DataGrid = _strand as DataGrid;
                                
-                               if (i == 0) {
-                                       list.className = "first";
-                               } else if (i == sharedModel.columns.length-1) {
-                                       list.className = "last";
-                               } else {
-                                       list.className = "middle";
+                               var sharedModel:IDataGridModel = host.model as 
IDataGridModel;
+                               var 
presentationModel:IDataGridPresentationModel = host.presentationModel;
+                               
+                               _lists = new Array();
+                               
+                               for (var i:int=0; i < 
sharedModel.columns.length; i++) {
+                                       var dataGridColumn:DataGridColumn = 
sharedModel.columns[i] as DataGridColumn;
+                                       
+                                       var list:DataGridColumnList = new 
DataGridColumnList();
+                                       list.id = "dataGridColumn"+String(i);
+                                       list.addBead(sharedModel);
+                                       list.itemRenderer = 
dataGridColumn.itemRenderer;
+                                       list.labelField = 
dataGridColumn.dataField;
+                                       
list.addEventListener('change',handleColumnListChange);
+                                       list.addBead(presentationModel);
+                                       
+                                       if (i == 0) {
+                                               list.className = "first";
+                                       } else if (i == 
sharedModel.columns.length-1) {
+                                               list.className = "last";
+                                       } else {
+                                               list.className = "middle";
+                                       }
+                                       
+                                       _listArea.addElement(list);
+                                       _lists.push(list);
                                }
-
-                               _listArea.addElement(list);
-                               _lists.push(list);
+                               
+                               host.dispatchEvent(new Event("layoutNeeded"));
                        }
-
-                       host.dispatchEvent(new Event("layoutNeeded"));
                }
-       }
 }
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/28150c46/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ScrollingViewport.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ScrollingViewport.as
 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ScrollingViewport.as
index fe254fe..1a2b214 100644
--- 
a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ScrollingViewport.as
+++ 
b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ScrollingViewport.as
@@ -65,6 +65,7 @@ package org.apache.flex.html.supportClasses
                 */
                public function ScrollingViewport()
                {
+                       super();
                }
                
                public function get verticalScrollPosition():Number

Reply via email to