You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ah...@apache.org on 2019/12/28 04:55:48 UTC

[royale-asjs] 01/02: some abstractions for the subclasses

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

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

commit 498b55921cfbb03ef9a142b762600ef80dc562c1
Author: Alex Harui <ah...@apache.org>
AuthorDate: Fri Dec 27 20:54:51 2019 -0800

    some abstractions for the subclasses
---
 .../org/apache/royale/html/beads/DataGridView.as   |  2 +-
 .../royale/html/beads/layouts/DataGridLayout.as    | 33 ++++++++++++++++------
 2 files changed, 26 insertions(+), 9 deletions(-)

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 0e7d8ec..597559c 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
@@ -139,7 +139,7 @@ package org.apache.royale.html.beads
 
                 var columnLayoutClass:Class = ValuesManager.valuesImpl.getValue(host, "columnLayoutClass") as Class;
                 assert(columnLayoutClass != null,"columnLayoutClass for DataGrid must be set!")
-				var bblayout:ButtonBarLayout = new columnLayoutClass() as ButtonBarLayout;
+				var bblayout:IBead = new columnLayoutClass() as IBead;
 				_header.addBead(bblayout as IBead);
 				_header.addBead(new Viewport() as IBead);
 				host.strandChildren.addElement(_header as IChild);
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 ae55038..be56f19 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
@@ -99,6 +99,26 @@ package org.apache.royale.html.beads.layouts
 			layout();
 		}
 		
+        protected function getColumnsForLayout():Array
+        {
+            var header:IUIBase = (uiHost.view as IDataGridView).header;
+            // fancier DG's will filter invisible columns and only put visible columns
+            // in the bbmodel, so do all layout based on the bbmodel, not the set
+            // of columns that may contain invisible columns
+            var bbmodel:ButtonBarModel = header.getBeadByType(ButtonBarModel) as ButtonBarModel;
+            return bbmodel.dataProvider as Array;
+        }
+
+        protected function setHeaderWidths(columnWidths:Array):void
+        {
+            var header:IUIBase = (uiHost.view as IDataGridView).header;
+            // fancier DG's will filter invisible columns and only put visible columns
+            // in the bbmodel, so do all layout based on the bbmodel, not the set
+            // of columns that may contain invisible columns
+            var bbmodel:ButtonBarModel = header.getBeadByType(ButtonBarModel) as ButtonBarModel;
+            bbmodel.buttonWidths = columnWidths;
+        }
+        
 		/**
 		 * @copy org.apache.royale.core.IBeadLayout#layout
          * @royaleignorecoercion org.apache.royale.core.IBorderPaddingMarginValuesImpl
@@ -112,10 +132,7 @@ package org.apache.royale.html.beads.layouts
 		public function layout():Boolean
 		{
 			var header:IUIBase = (uiHost.view as IDataGridView).header;
-            // fancier DG's will filter invisible columns and only put visible columns
-            // in the bbmodel, so do all layout based on the bbmodel, not the set
-            // of columns that may contain invisible columns
-            var bbmodel:ButtonBarModel = header.getBeadByType(ButtonBarModel) as ButtonBarModel;
+            var arrayOfColumns:Array = getColumnsForLayout();
 			var listArea:IUIBase = (uiHost.view as IDataGridView).listArea;
 			
 			var displayedColumns:Array = (uiHost.view as IDataGridView).columnLists;
@@ -126,11 +143,11 @@ package org.apache.royale.html.beads.layouts
 			var useHeight:Number = uiHost.height - (borderMetrics.top + borderMetrics.bottom);
 			
 			var xpos:Number = 0;
-			var defaultColumnWidth:Number = (useWidth) / bbmodel.dataProvider.length;
+			var defaultColumnWidth:Number = (useWidth) / arrayOfColumns.length;
 			var columnWidths:Array = [];
 			
-			for(var i:int=0; i < bbmodel.dataProvider.length; i++) {
-				var columnDef:IDataGridColumn = bbmodel.dataProvider[i] as IDataGridColumn;
+			for(var i:int=0; i < arrayOfColumns.length; i++) {
+				var columnDef:IDataGridColumn = arrayOfColumns[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.
@@ -148,7 +165,7 @@ package org.apache.royale.html.beads.layouts
 				xpos += columnList.width;
 			}
 			
-			bbmodel.buttonWidths = columnWidths;
+            setHeaderWidths(columnWidths);
 			
 			COMPILE::SWF {
                 header.y = borderMetrics.top;