This is an automated email from the ASF dual-hosted git repository.

pent pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/develop by this push:
     new e80f343  Revived DataGridLayout and DataGridPercentageLayout. Moved 
DataGrid’s layout into the layout beads. Moved some hard-coded settings for 
DataGrid and TreeGrid into defaults.css for better flexibility. 
DataGridPercentageView is now obsolete.
e80f343 is described below

commit e80f343bbd20bca7d50e58f2b1db1ab97fa877c1
Author: Peter Ent <[email protected]>
AuthorDate: Sun Jan 21 08:40:03 2018 -0500

    Revived DataGridLayout and DataGridPercentageLayout. Moved DataGrid’s 
layout into the layout beads. Moved some hard-coded settings for DataGrid and 
TreeGrid into defaults.css for better flexibility. DataGridPercentageView is 
now obsolete.
---
 .../projects/Basic/src/main/resources/defaults.css |  15 +-
 .../projects/Basic/src/main/royale/BasicClasses.as |   2 +
 .../org/apache/royale/html/beads/DataGridView.as   |  56 +-----
 .../org/apache/royale/html/beads/TreeGridView.as   |  16 +-
 .../royale/html/beads/layouts/DataGridLayout.as    | 201 ++++++++-------------
 .../html/beads/layouts/DataGridPercentageLayout.as | 180 ++++--------------
 .../royale/html/beads/layouts/TreeGridLayout.as    |  37 ++--
 7 files changed, 146 insertions(+), 361 deletions(-)

diff --git a/frameworks/projects/Basic/src/main/resources/defaults.css 
b/frameworks/projects/Basic/src/main/resources/defaults.css
index 92a325f..69f37ec 100644
--- a/frameworks/projects/Basic/src/main/resources/defaults.css
+++ b/frameworks/projects/Basic/src/main/resources/defaults.css
@@ -171,7 +171,7 @@ DataGrid
        IDataGridPresentationModel: 
ClassReference("org.apache.royale.html.beads.models.DataGridPresentationModel");
        IBeadView: ClassReference("org.apache.royale.html.beads.DataGridView");
        IBeadModel: 
ClassReference("org.apache.royale.html.beads.models.DataGridModel");
-       IBeadLayout: 
ClassReference("org.apache.royale.html.beads.layouts.VerticalFlexLayout");
+       IBeadLayout: 
ClassReference("org.apache.royale.html.beads.layouts.DataGridLayout");
        
        background-color: #FFFFFF;
        border: 1px solid #222222;
@@ -188,13 +188,16 @@ DataGridButtonBar
        IItemRenderer: 
ClassReference("org.apache.royale.html.supportClasses.TextButtonItemRenderer");
        
        border-style: none;
+       height: 40px;
+       min-height: 40px;
+       flex-grow: 0;
 }
 
 DataGridColumnList {
        IBeadModel: 
ClassReference("org.apache.royale.html.beads.models.DataGridModel");
        IBeadView:  ClassReference("org.apache.royale.html.beads.ListView");    
                
        IBeadController: 
ClassReference("org.apache.royale.html.beads.controllers.ListSingleSelectionMouseController");
-       IBeadLayout: 
ClassReference("org.apache.royale.html.beads.layouts.VerticalFlexLayout");
+       IBeadLayout: 
ClassReference("org.apache.royale.html.beads.layouts.VerticalLayout");
        IDataProviderItemRendererMapper: 
ClassReference("org.apache.royale.html.beads.DataItemRendererFactoryForArrayData");
        IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.ItemRendererClassFactory");
        IItemRenderer: 
ClassReference("org.apache.royale.html.supportClasses.StringItemRenderer");
@@ -206,9 +209,10 @@ DataGridColumnList {
 
 .opt_org-apache.royale-html-DataGrid_ListArea {
        background-color: #FFFFFF;
-       IBeadLayout: 
ClassReference("org.apache.royale.html.beads.layouts.HorizontalFlexLayout");
+       IBeadLayout: 
ClassReference("org.apache.royale.html.beads.layouts.HorizontalLayout");
        IViewport: 
ClassReference("org.apache.royale.html.supportClasses.ScrollingViewport");
        IViewportModel: 
ClassReference("org.apache.royale.html.beads.models.ViewportModel");
+       flex-grow: 1;
 }
 
 .DynamicDataGrid {
@@ -216,7 +220,7 @@ DataGridColumnList {
        IDataGridPresentationModel: 
ClassReference("org.apache.royale.html.beads.models.DataGridPresentationModel");
        IBeadView: ClassReference("org.apache.royale.html.beads.DataGridView");
        IBeadModel: 
ClassReference("org.apache.royale.html.beads.models.DataGridCollectionViewModel");
-       IBeadLayout: 
ClassReference("org.apache.royale.html.beads.layouts.VerticalFlexLayout");
+       IBeadLayout: 
ClassReference("org.apache.royale.html.beads.layouts.DataGridLayout");
        ColumnClassName: "DynamicDataGridColumnList";
        
        background-color: #FFFFFF;
@@ -227,7 +231,7 @@ DataGridColumnList {
        IBeadModel: 
ClassReference("org.apache.royale.html.beads.models.DataGridCollectionViewModel");
        IBeadView:  ClassReference("org.apache.royale.html.beads.ListView");    
                
        IBeadController: 
ClassReference("org.apache.royale.html.beads.controllers.ListSingleSelectionMouseController");
-       IBeadLayout: 
ClassReference("org.apache.royale.html.beads.layouts.VerticalFlexLayout");
+       IBeadLayout: 
ClassReference("org.apache.royale.html.beads.layouts.VerticalLayout");
        IDataProviderItemRendererMapper: 
ClassReference("org.apache.royale.html.beads.DataItemRendererFactoryForCollectionView");
        IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.ItemRendererClassFactory");
        IItemRenderer: 
ClassReference("org.apache.royale.html.supportClasses.StringItemRenderer");
@@ -474,6 +478,7 @@ TreeGrid .TreeGridColumn {
        IViewport: 
ClassReference("org.apache.royale.html.supportClasses.ScrollingViewport");
        IViewportModel: 
ClassReference("org.apache.royale.html.beads.models.ViewportModel");
        position: absolute;
+       flex-grow: 1;
 }
 
 NumericStepper
diff --git a/frameworks/projects/Basic/src/main/royale/BasicClasses.as 
b/frameworks/projects/Basic/src/main/royale/BasicClasses.as
index c462a1e..b8d4ea3 100644
--- a/frameworks/projects/Basic/src/main/royale/BasicClasses.as
+++ b/frameworks/projects/Basic/src/main/royale/BasicClasses.as
@@ -182,6 +182,8 @@ internal class BasicClasses
        import org.apache.royale.html.beads.DataGridView; DataGridView;
        import org.apache.royale.html.beads.IDataGridView; IDataGridView;
        import org.apache.royale.html.beads.DataGridPercentageView; 
DataGridPercentageView;
+       import org.apache.royale.html.beads.layouts.DataGridLayout; 
DataGridLayout;
+       import org.apache.royale.html.beads.layouts.DataGridPercentageLayout; 
DataGridPercentageLayout;
        import org.apache.royale.html.beads.DateChooserView; DateChooserView;
        import org.apache.royale.html.beads.DateFieldView; DateFieldView;
        import org.apache.royale.html.beads.DecrementButtonView; 
DecrementButtonView;
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridView.as
index 6cc2bbe..0e17879 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridView.as
@@ -32,15 +32,9 @@ package org.apache.royale.html.beads
        import org.apache.royale.html.DataGrid;
        import org.apache.royale.html.DataGridButtonBar;
        import org.apache.royale.html.beads.layouts.ButtonBarLayout;
-       import org.apache.royale.html.beads.models.ButtonBarModel;
-       import org.apache.royale.html.supportClasses.DataGridColumn;
        import org.apache.royale.html.supportClasses.DataGridColumnList;
+       import org.apache.royale.html.supportClasses.IDataGridColumn;
        import org.apache.royale.html.supportClasses.Viewport;
-       import org.apache.royale.utils.loadBeadFromValuesManager;
-
-       COMPILE::SWF {
-               import org.apache.royale.core.SimpleCSSStylesWithFlex;
-       }
 
                /**
                 *  The DataGridView class is the visual bead for the 
org.apache.royale.html.DataGrid.
@@ -116,7 +110,7 @@ package org.apache.royale.html.beads
                                
IEventDispatcher(sharedModel).addEventListener("selectedIndexChanged", 
handleSelectedIndexChanged);
 
                                _header = new DataGridButtonBar();
-                               _header.height = 30;
+                               // header's height is set in CSS
                                _header.percentWidth = 100;
                                _header.dataProvider = sharedModel.columns;
                                _header.labelField = "label";
@@ -126,52 +120,9 @@ package org.apache.royale.html.beads
                                _listArea.percentWidth = 100;
                                _listArea.className = 
"opt_org-apache.royale-html-DataGrid_ListArea";
 
-                               COMPILE::SWF {
-                                       _header.style = new 
SimpleCSSStylesWithFlex();
-                                       _header.style.flexGrow = 0;
-
-                                       _listArea.style = new 
SimpleCSSStylesWithFlex();
-                                       _listArea.style.flexGrow = 1;
-                               }
-                               COMPILE::JS {
-                                       _header.element.style["flex-grow"] = 
"0";
-                                       _header.element.style["min-height"] = 
"30px";
-                                       _listArea.element.style["flex-grow"] = 
"1";
-                               }
-
                                createLists();
 
-                               //var columnLabels:Array = [];
-                               var buttonWidths: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 
SimpleCSSStylesWithFlex();
-                                                       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.addBead(bblayout as IBead);
                                _header.addBead(new Viewport() as IBead);
                                host.addElement(_header as IChild);
@@ -200,7 +151,6 @@ package org.apache.royale.html.beads
                         */
                        private function 
handleDataProviderChanged(event:Event):void
                        {
-
                                host.dispatchEvent(new Event("layoutNeeded"));
                        }
 
@@ -258,7 +208,7 @@ package org.apache.royale.html.beads
 
                                for (var i:int=0; i < 
sharedModel.columns.length; i++)
                                {
-                                       var dataGridColumn:DataGridColumn = 
sharedModel.columns[i] as DataGridColumn;
+                                       var dataGridColumn:IDataGridColumn = 
sharedModel.columns[i] as IDataGridColumn;
                                        var useClassName:String = 
columnClassName;
                                        if (dataGridColumn.className != null) 
useClassName = dataGridColumn.className;
 
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TreeGridView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TreeGridView.as
index b2bc41f..79d83bd 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TreeGridView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TreeGridView.as
@@ -45,10 +45,6 @@ package org.apache.royale.html.beads
        import org.apache.royale.html.supportClasses.TreeGridColumn;
        import org.apache.royale.html.supportClasses.Viewport;
        
-       COMPILE::SWF {
-               import org.apache.royale.core.SimpleCSSStylesWithFlex;
-       }
-       
        /**
         * The TreeGridView class is responsible for creating the 
sub-components of the TreeGrid:
         * the ButtonBar header, the Tree (first column), and Lists (rest of 
the columns), as well
@@ -130,7 +126,6 @@ package org.apache.royale.html.beads
                                _strand.addBead(layout);
                        }
 
-                       
                        
IEventDispatcher(_strand).addEventListener("beadsAdded", finishSetup);
                }
                
@@ -153,7 +148,7 @@ package org.apache.royale.html.beads
                        
IEventDispatcher(sharedModel).addEventListener("selectedIndexChanged", 
handleSelectedIndexChanged);
                        
                        _header = new DataGridButtonBar();
-                       _header.height = 30;
+                       // header's height is set in CSS
                        _header.percentWidth = 100;
                        _header.dataProvider = sharedModel.columns;
                        _header.labelField = "label";
@@ -180,14 +175,6 @@ package org.apache.royale.html.beads
                                var list:UIBase = _lists[i] as UIBase;
                                if (!isNaN(colWidth)) {
                                        list.width = Number(colWidth - 
marginBorderOffset);
-                               } else {
-                                       COMPILE::SWF {
-                                               list.style = new 
SimpleCSSStylesWithFlex();
-                                               list.style.flexGrow = 1;
-                                       }
-                                       COMPILE::JS {
-                                               list.element.style["flex-grow"] 
= "1";
-                                       }
                                }
                        }
                                
@@ -223,7 +210,6 @@ package org.apache.royale.html.beads
                 */
                private function handleDataProviderChanged(event:Event):void
                {
-                       
                        host.dispatchEvent(new Event("layoutNeeded"));
                }
                
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/DataGridLayout.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/DataGridLayout.as
index 4087f50..a420bcd 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/DataGridLayout.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/DataGridLayout.as
@@ -20,19 +20,19 @@ package org.apache.royale.html.beads.layouts
 {      
     import org.apache.royale.core.IBead;
     import org.apache.royale.core.IBeadLayout;
-       import org.apache.royale.core.IBeadModel;
-       import org.apache.royale.core.IBeadView;
-       import org.apache.royale.core.IDataGridModel;
-       import org.apache.royale.core.IStrand;
-       import org.apache.royale.core.IUIBase;
-       import org.apache.royale.core.UIBase;
-       import org.apache.royale.events.Event;
-       import org.apache.royale.events.IEventDispatcher;
-       import org.apache.royale.html.ButtonBar;
-       import org.apache.royale.html.beads.DataGridView;
-       import org.apache.royale.html.beads.layouts.BasicLayout;
-       import org.apache.royale.html.supportClasses.DataGridColumnList;
-       import org.apache.royale.html.supportClasses.DataGridColumn;
+    import org.apache.royale.core.IBeadView;
+    import org.apache.royale.core.IDataGridModel;
+    import org.apache.royale.core.IStrand;
+    import org.apache.royale.core.IUIBase;
+    import org.apache.royale.core.UIBase;
+    import org.apache.royale.events.Event;
+    import org.apache.royale.events.IEventDispatcher;
+    import org.apache.royale.geom.Rectangle;
+    import org.apache.royale.html.beads.DataGridView;
+    import org.apache.royale.html.beads.IDataGridView;
+    import org.apache.royale.html.beads.models.ButtonBarModel;
+    import org.apache.royale.html.supportClasses.IDataGridColumn;
+    import org.apache.royale.utils.CSSContainerUtils;
        
        /**
         * DataGridLayout is a class that handles the size and positioning of 
the
@@ -44,7 +44,7 @@ package org.apache.royale.html.beads.layouts
         *  @playerversion AIR 2.6
         *  @productversion Royale 0.0
         */
-       public class DataGridLayout implements IDataGridLayout
+       public class DataGridLayout implements IBeadLayout
        {
                /**
                 *  constructor
@@ -72,145 +72,86 @@ package org.apache.royale.html.beads.layouts
                {
                        _strand = value;
                        
-            var host:UIBase = value as UIBase;
-            
-                       var view:DataGridView = host.view as DataGridView;
-                       header = view.header;
-                       listArea = view.listArea;
-            
-            var anylayout:IBead = listArea.getBeadByType(IBeadLayout);
-            if (anylayout != null) {
-                listArea.removeBead(anylayout);
-            }
-                       listArea.addBead(new BasicLayout());
-            
-            host.addEventListener("widthChanged", handleSizeChanges);
-            host.addEventListener("heightChanged", handleSizeChanges);
-            host.addEventListener("sizeChanged", handleSizeChanges);
-            host.addEventListener("layoutNeeded", handleSizeChanges);
-
+                       (_strand as 
IEventDispatcher).addEventListener("widthChanged", handleSizeChanges);
+                       (_strand as 
IEventDispatcher).addEventListener("heightChanged", handleSizeChanges);
+                       (_strand as 
IEventDispatcher).addEventListener("sizeChanged", handleSizeChanges);
+                       (_strand as 
IEventDispatcher).addEventListener("layoutNeeded", handleLayoutNeeded);
                }
                
-               private var _header:UIBase;
-               
-               /**
-                * The element that is the header for the DataGrid
-                *  
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion Royale 0.0
-                */
-               public function get header():IUIBase
+               private function get host():IUIBase
                {
-                       return _header;
+                       return _strand as IUIBase;
                }
-               public function set header(value:IUIBase):void
+               private function get uiHost():UIBase
                {
-                       _header = UIBase(value);
+                       return _strand as UIBase;
                }
                
-               private var _columns:Array;
-               
-               /**
-                * The array of column elements.
-                *  
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion Royale 0.0
-                */
-               public function get columns():Array
-               {
-                       return _columns;
-               }
-               public function set columns(value:Array):void
+               private function handleSizeChanges(event:Event):void
                {
-                       _columns = value;
+                       layout();
                }
                
-               private var _listArea:IUIBase;
-               
-               public function get listArea():IUIBase
-               {
-                       return _listArea;
-               }
-               public function set listArea(value:IUIBase):void
+               private function handleLayoutNeeded(event:Event):void
                {
-                       _listArea = value;
+                       layout();
                }
                
-        /**
-         * @copy org.apache.royale.core.IBeadLayout#layout
-         */
+               /**
+                * @copy org.apache.royale.core.IBeadLayout#layout
+                */
                public function layout():Boolean
-               {                                               
-                       if (columns == null || columns.length == 0) {
-                               return false;
-                       }
-                       var host:UIBase = _strand as UIBase;
+               {
+                       var header:IUIBase = (uiHost.view as 
IDataGridView).header;
+                       var listArea:IUIBase = (uiHost.view as 
IDataGridView).listArea;
                        
-                       var useWidth:Number = host.width;
-                       var useHeight:Number = host.height;
-
-                       if (host.height > 0) {
-                               useHeight = host.height - _header.height;
-                       }
+                       var displayedColumns:Array = (uiHost.view as 
IDataGridView).columnLists;
+                       var model:IDataGridModel = uiHost.model as 
IDataGridModel;
+                       
+                       var borderMetrics:Rectangle = 
CSSContainerUtils.getBorderMetrics(_strand);                      
+                       var useWidth:Number = uiHost.width - 
(borderMetrics.left + borderMetrics.right);
+                       var useHeight:Number = uiHost.height - 
(borderMetrics.top + borderMetrics.bottom);
                        
-                       var thisisnothing:Number = -1234;
-
-                       _listArea.x = 0;
-                       _listArea.y = 26;
-                       _listArea.width = useWidth;
-                       _listArea.height = useHeight;
-
-                       var sharedModel:IDataGridModel = host.model as 
IDataGridModel;
-                       var buttonWidths:Array = [];
-
-                       if (_columns != null && _columns.length > 0) {
-                               var xpos:Number = 0;
-                               var listWidth:Number = host.width / 
_columns.length;
-                               for (var i:int=0; i < _columns.length; i++) {
-                                       var list:DataGridColumnList = 
_columns[i] as DataGridColumnList;
-                                       list.x = xpos;
-                                       list.y = 0;
-
-                                       var dataGridColumn:DataGridColumn = 
sharedModel.columns[i] as DataGridColumn;
-                                       var colWidth:Number = 
dataGridColumn.columnWidth;
-                                       if (!isNaN(colWidth)) list.width = 
colWidth;
-                                       else list.width = listWidth;
-
-                                       xpos += list.width;
-                                       
-                                       buttonWidths.push(list.width);
+                       var xpos:Number = 0;
+                       var defaultColumnWidth:Number = (useWidth) / 
model.columns.length;
+                       var columnWidths:Array = [];
+                       
+                       for(var i:int=0; i < displayedColumns.length; i++) {
+                               var columnDef:IDataGridColumn = 
model.columns[i] as IDataGridColumn;
+                               var columnList:UIBase = displayedColumns[i] as 
UIBase;
+                               
+                               // probably do not need to set (x,y), but if 
the Container's layout requires it, they will be set.
+                               columnList.x = xpos;
+                               columnList.y = 0;
+                               
+                               var columnWidth:Number = defaultColumnWidth;
+                               if (!isNaN(columnDef.columnWidth)) {
+                                       columnWidth = (columnDef.columnWidth / 
uiHost.width) * useWidth;
                                }
+                               
+                               columnList.width = columnWidth;
+                               columnWidths.push(columnWidth);
+                               
+                               xpos += columnList.width;
                        }
                        
-                       var bar:ButtonBar = header as ButtonBar;
-                       var barLayout:ButtonBarLayout = 
bar.getBeadByType(ButtonBarLayout) as ButtonBarLayout;
-                       barLayout.buttonWidths = buttonWidths;
-                       bar.dispatchEvent(new Event("layoutNeeded"));
+                       var bbmodel:ButtonBarModel = 
header.getBeadByType(ButtonBarModel) as ButtonBarModel;
+                       bbmodel.buttonWidths = columnWidths;
                        
-                       _header.x = 0;
-                       _header.y = 0;
-                       _header.width = useWidth;
-                       _header.height = 25;
-                       _header.dispatchEvent(new Event("layoutNeeded"));
+                       header.x = borderMetrics.left;
+                       header.y = borderMetrics.top;
+                       header.width = useWidth;
+                       // header's height is set in CSS
                        
-                       return true;
-               }
-               
-               /**
-                * @private
-                */
-               private function handleSizeChanges(event:Event):void
-               {
-                       var view:DataGridView = UIBase(_strand).view as 
DataGridView;
-                       if (view == null) return;
+                       listArea.x = borderMetrics.left;
+                       listArea.y = header.height + header.y;
+                       listArea.width = useWidth;
+                       listArea.height = useHeight - header.height;
                        
-                       columns = view.columnLists;
+                       header.dispatchEvent(new Event("layoutNeeded"));
+                       listArea.dispatchEvent(new Event("layoutNeeded"));
                        
-                       layout();
+                       return true;
                }
        }
 }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/DataGridPercentageLayout.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/DataGridPercentageLayout.as
index 040b872..8a83fce 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/DataGridPercentageLayout.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/DataGridPercentageLayout.as
@@ -18,19 +18,15 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.html.beads.layouts
 {      
-       import org.apache.royale.core.IBead;
-       import org.apache.royale.core.IBeadLayout;
-       import org.apache.royale.core.IBeadView;
        import org.apache.royale.core.IDataGridModel;
        import org.apache.royale.core.IStrand;
        import org.apache.royale.core.IUIBase;
        import org.apache.royale.core.UIBase;
        import org.apache.royale.events.Event;
-       import org.apache.royale.events.IEventDispatcher;
        import org.apache.royale.html.ButtonBar;
-       import org.apache.royale.html.beads.DataGridView;
-       import org.apache.royale.html.beads.layouts.HorizontalLayout;
-       import org.apache.royale.html.supportClasses.DataGridColumn;
+       import org.apache.royale.html.beads.IDataGridView;
+       import org.apache.royale.html.beads.models.ButtonBarModel;
+       import org.apache.royale.html.supportClasses.IDataGridColumn;
        
        /**
         * DataGridPercentageLayout is a class that handles the size and 
positioning of the
@@ -43,7 +39,7 @@ package org.apache.royale.html.beads.layouts
         *  @playerversion AIR 2.6
         *  @productversion Royale 0.0
         */
-       public class DataGridPercentageLayout implements IDataGridLayout
+       public class DataGridPercentageLayout extends DataGridLayout
        {
                /**
                 *  constructor
@@ -55,6 +51,7 @@ package org.apache.royale.html.beads.layouts
                 */
                public function DataGridPercentageLayout()
                {
+                       super();
                }
                
                private var _strand:IStrand;
@@ -67,158 +64,53 @@ package org.apache.royale.html.beads.layouts
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.0
                 */
-               public function set strand(value:IStrand):void
+               override public function set strand(value:IStrand):void
                {
                        _strand = value;
-                       
-                       var host:UIBase = value as UIBase;
-                       
-                       var view:DataGridView = host.view as DataGridView;
-                       
-                       header = view.header;
-                       listArea = view.listArea;
-                       
-                       var anylayout:IBead = 
listArea.getBeadByType(IBeadLayout);
-                       if (anylayout != null) {
-                               listArea.removeBead(anylayout);
-                       }
-                       listArea.addBead(new HorizontalLayout());
-                       
-                       host.addEventListener("widthChanged", 
handleSizeChanges);
-                       host.addEventListener("heightChanged", 
handleSizeChanges);
-                       host.addEventListener("sizeChanged", handleSizeChanges);
-                       host.addEventListener("layoutNeeded", 
handleSizeChanges);
-               }
-               
-               private var _header:UIBase;
-               
-               /**
-                * The element that is the header for the DataGrid
-                *  
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion Royale 0.0
-                */
-               public function get header():IUIBase
-               {
-                       return _header;
-               }
-               public function set header(value:IUIBase):void
-               {
-                       _header = UIBase(value);
-               }
-               
-               private var _columns:Array;
-               
-               /**
-                * The array of column elements.
-                *  
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion Royale 0.0
-                */
-               public function get columns():Array
-               {
-                       return _columns;
-               }
-               public function set columns(value:Array):void
-               {
-                       _columns = value;
-               }
-               
-               private var _listArea:IUIBase;
-               
-               public function get listArea():IUIBase
-               {
-                       return _listArea;
-               }
-               public function set listArea(value:IUIBase):void
-               {
-                       _listArea = value;
+                       super.strand = value;
                }
                
         /**
          * @copy org.apache.royale.core.IBeadLayout#layout
          */
-               public function layout():Boolean
+               override public function layout():Boolean
                {                       
-                       if (columns == null || columns.length == 0) {
-                               return false;
-                       }
+                       // call the super function to get the basics laid out 
even
+                       // though the columns and header will not be right.
+                       if (!super.layout()) return false;
                        
                        var host:UIBase = _strand as UIBase;
-                       
-                       var sw:Number = host.width;
-                       var sh:Number = host.height;
-                       
-                       var columnHeight:Number = Math.floor(sh - 
header.height);
-                       var columnWidth:Number  = Math.floor(sw / 
columns.length);
-                       
-                       var xpos:Number = 0;
-                       var ypos:Number = 26;
-                       
-                       _header.x = 0;
-                       _header.y = 0;
-                       _header.width = sw;
-                       _header.height = 25;
-                       
-                       if (sh > 0) {
-                               sh = sh - _header.height;
-                       }
-                       
-                       // TODO: change the layout so that the model's 
DataGridColumn.columnWidth
-                       // isn't used blindly, but is considered in the overall 
width. In other words,
-                       // right now the width could exceed the strand's width.
-                       var model:IDataGridModel = host.model as IDataGridModel;
-                       
-                       var buttonWidths:Array = new Array();
-                                               
-                       for(var i:int=0; i < columns.length; i++) {
-                               var column:UIBase = columns[i] as UIBase;
-                               column.percentHeight = 100;
-
-                               var dgc:DataGridColumn = model.columns[i];
-                               if (!isNaN(dgc.columnWidth)) {
-                                       column.percentWidth = dgc.columnWidth;
-                                       columnWidth = sw * 
(dgc.columnWidth/100.0);
-                               }
-                               else column.explicitWidth = columnWidth;
+                       var header:IUIBase = (host.view as 
IDataGridView).header;
+                       var sharedModel:IDataGridModel = host.model as 
IDataGridModel;
+                       var columnLists:Array = (host.view as 
IDataGridView).columnLists;
+                       var columnListCount:int = sharedModel.columns.length;
+                       var buttonWidths:Array = [];
+                       
+                       for (var i:int = 0; i < columnListCount; i++)
+                       {
+                               var dgc:IDataGridColumn = 
sharedModel.columns[i] as IDataGridColumn;
+                               var colWidth:Number = dgc.columnWidth;
+                               buttonWidths.push(colWidth);
                                
-                               buttonWidths.push(columnWidth);
+                               var list:UIBase = columnLists[i] as UIBase;
+                               if (!isNaN(dgc.columnWidth))
+                               {
+                                       list.width = NaN;
+                                       list.percentWidth = Number(colWidth);
+                               }
                        }
                        
-                       _listArea.x = 0;
-                       _listArea.y = 26;
-                       _listArea.width = sw;
-                       _listArea.height = sh;
-                       _listArea.dispatchEvent(new Event("layoutNeeded"));
-                       
-                       var bar:ButtonBar = header as ButtonBar;
-                       var barLayout:ButtonBarLayout = 
bar.getBeadByType(ButtonBarLayout) as ButtonBarLayout;
-                       barLayout.buttonWidths = buttonWidths;
+                       // list area needs a layout refresh because its 
contents were changed from
+                       // fixed size to percent size.
+                       var listArea:IUIBase = (host.view as 
IDataGridView).listArea;
+                       listArea.dispatchEvent(new Event("layoutNeeded"));
                        
-                       _header.x = 0;
-                       _header.y = 0;
-                       _header.width = sw;
-                       _header.height = 25;
-                       _header.dispatchEvent(new Event("layoutNeeded"));
+                       var dgButtonBar:ButtonBar = header as ButtonBar;
+                       dgButtonBar.buttonWidths = buttonWidths;
+                       dgButtonBar.widthType = ButtonBarModel.PERCENT_WIDTHS;
+                       dgButtonBar.dispatchEvent(new Event("layoutNeeded"));
                        
                        return true;
                }
-               
-               /**
-                * @private
-                */
-               private function handleSizeChanges(event:Event):void
-               {
-                       var view:DataGridView = UIBase(_strand).view as 
DataGridView;
-                       if (view == null) return;
-                       
-                       columns = view.columnLists;
-                       
-                       layout();
-               }
        }
 }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/TreeGridLayout.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/TreeGridLayout.as
index b7f2b3b..5a56813 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/TreeGridLayout.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/TreeGridLayout.as
@@ -24,12 +24,14 @@ package org.apache.royale.html.beads.layouts
        import org.apache.royale.core.UIBase;
        import org.apache.royale.events.Event;
        import org.apache.royale.events.IEventDispatcher;
+       import org.apache.royale.geom.Rectangle;
        import org.apache.royale.html.ButtonBar;
        import org.apache.royale.html.beads.TreeGridView;
        import org.apache.royale.html.beads.models.ButtonBarModel;
        import org.apache.royale.html.beads.models.TreeGridModel;
        import org.apache.royale.html.supportClasses.IDataGridColumn;
        import org.apache.royale.html.supportClasses.TreeGridColumn;
+       import org.apache.royale.utils.CSSContainerUtils;
        
        /**
         * The TreeGridLayout class provides the sizing and positioning for the 
sub-components
@@ -111,15 +113,19 @@ package org.apache.royale.html.beads.layouts
                        var contentArea:UIBase = (uiHost.view as 
TreeGridView).listArea;
                        var displayedColumns:Array = (uiHost.view as 
TreeGridView).columnLists;
                        
+                       var borderMetrics:Rectangle = 
CSSContainerUtils.getBorderMetrics(_strand);
+                       var useWidth:Number = uiHost.width - 
(borderMetrics.left + borderMetrics.right);
+                       var useHeight:Number = uiHost.height - 
(borderMetrics.top + borderMetrics.bottom);
+                       
                        // size and position the header
-                       header.x = 0;
-                       header.y = 0;
-                       header.width = uiHost.width;
-                       header.height = 30;
+                       header.x = borderMetrics.left;
+                       header.y = borderMetrics.top;
+                       header.width = useWidth;
+                       // header's height is set in CSS
                        
                        // size and position the elements that make up the 
content
                        var xpos:Number = 0;
-                       var defaultColumnWidth:Number = (contentArea.width) / 
model.columns.length;
+                       var defaultColumnWidth:Number = (useWidth) / 
model.columns.length;
                        var columnWidths:Array = [];
                        
                        COMPILE::JS {
@@ -129,15 +135,18 @@ package org.apache.royale.html.beads.layouts
                        for(var i:int=0; i < displayedColumns.length; i++) {
                                var columnDef:IDataGridColumn = 
model.columns[i] as IDataGridColumn;
                                var columnList:UIBase = displayedColumns[i] as 
UIBase;
+                               
+                               // probably do not need to set (x,y), but if 
the Container's layout requires it, they will be set.
                                columnList.x = xpos;
                                columnList.y = 0;
-                               if (isNaN(columnDef.columnWidth)) {
-                                       columnList.width = defaultColumnWidth;
-                               } else {
-                                       columnList.width = 
columnDef.columnWidth;
+                               
+                               var columnWidth:Number = defaultColumnWidth;
+                               if (!isNaN(columnDef.columnWidth)) {
+                                       columnWidth = (columnDef.columnWidth / 
uiHost.width) * useWidth;
                                }
                                
-                               columnWidths.push(columnList.width);
+                               columnList.width = columnWidth;
+                               columnWidths.push(columnWidth);
                                
                                xpos += columnList.width;
                        }
@@ -147,10 +156,10 @@ package org.apache.royale.html.beads.layouts
                        header.dispatchEvent(new Event("layoutNeeded"));
                        
                        // size and position the contentArea
-                       contentArea.x = 0;
-                       contentArea.y = header.height; 
-                       contentArea.width = uiHost.width;
-                       contentArea.height = uiHost.height - header.height;
+                       contentArea.x = borderMetrics.left;
+                       contentArea.y = header.height + header.y; 
+                       contentArea.width = useWidth;
+                       contentArea.height = useHeight - header.height;
                        
                        return true;
                }

-- 
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].

Reply via email to