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;