You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by pi...@apache.org on 2019/09/10 04:49:58 UTC

[royale-asjs] 01/04: some refactoring and exposing more protected members to allow overriding from MXRoyale

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

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

commit 8138df8e067451a39834f5e4c4acd46ec9e2d6a8
Author: Alex Harui <ah...@apache.org>
AuthorDate: Thu Sep 5 10:33:24 2019 -0700

    some refactoring and exposing more protected members to allow overriding from MXRoyale
    
    (cherry picked from commit 9b59370bf86448ba3cfaed7f5c518ebd389d9429)
---
 frameworks/projects/Basic/src/main/resources/defaults.css    |  3 +++
 .../main/royale/org/apache/royale/html/beads/DataGridView.as | 12 +++++++++---
 .../html/beads/VirtualDataItemRendererFactoryForArrayData.as |  2 +-
 .../org/apache/royale/html/beads/layouts/DataGridLayout.as   | 12 ++++++++----
 .../royale/html/beads/layouts/VirtualListVerticalLayout.as   | 10 +++++-----
 5 files changed, 26 insertions(+), 13 deletions(-)

diff --git a/frameworks/projects/Basic/src/main/resources/defaults.css b/frameworks/projects/Basic/src/main/resources/defaults.css
index 967a39d..3d082e3 100644
--- a/frameworks/projects/Basic/src/main/resources/defaults.css
+++ b/frameworks/projects/Basic/src/main/resources/defaults.css
@@ -134,6 +134,9 @@ DataGrid
 	IBeadModel: ClassReference("org.apache.royale.html.beads.models.DataGridModel");
 	IBeadLayout: ClassReference("org.apache.royale.html.beads.layouts.DataGridLayout");
 	columnClass: ClassReference("org.apache.royale.html.supportClasses.DataGridColumnList");
+	columnContainerClass: ClassReference("org.apache.royale.html.DataGridButtonBar");
+	columnLayoutClass: ClassReference("org.apache.royale.html.beads.layouts.ButtonBarLayout");
+	listAreaClass: ClassReference("org.apache.royale.html.beads.DataGridListArea");
 	
 	background-color: #FFFFFF;
 	border: 1px solid #222222;
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 2bce4a9..b2d37f8 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
@@ -117,19 +117,25 @@ package org.apache.royale.html.beads
 				IEventDispatcher(sharedModel).addEventListener("dataProviderChanged",handleDataProviderChanged);
 				IEventDispatcher(sharedModel).addEventListener("selectedIndexChanged", handleSelectedIndexChanged);
 
-				_header = new DataGridButtonBar();
+                var columnContainerClass:Class = ValuesManager.valuesImpl.getValue(host, "columnContainerClass") as Class;
+                assert(columnContainerClass != null,"columnContainerClass for DataGrid must be set!")
+				_header = new columnContainerClass() as DataGridButtonBar;
 				// header's height is set in CSS
 				_header.percentWidth = 100;
 				_header.dataProvider = sharedModel.columns;
 				_header.labelField = "label";
 				sharedModel.headerModel = _header.model as IBeadModel;
 
-				_listArea = new DataGridListArea();
+                var listAreaClass:Class = ValuesManager.valuesImpl.getValue(host, "listAreaClass") as Class;
+                assert(listAreaClass != null,"listAreaClass for DataGrid must be set!")
+				_listArea = new listAreaClass() as DataGridListArea;
 				_listArea.percentWidth = 100;
 
 				createLists();
 
-				var bblayout:ButtonBarLayout = new ButtonBarLayout();
+                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;
 				_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/VirtualDataItemRendererFactoryForArrayData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryForArrayData.as
index 3aeaa44..811daf1 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryForArrayData.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryForArrayData.as
@@ -186,7 +186,7 @@ package org.apache.royale.html.beads
             delete rendererMap[index];
         }
         
-        private var rendererMap:Object = {};
+        protected var rendererMap:Object = {};
         
         /**
          *  Get an item renderer for a given index.
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 f586943..ae55038 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
@@ -150,20 +150,24 @@ package org.apache.royale.html.beads.layouts
 			
 			bbmodel.buttonWidths = columnWidths;
 			
-			header.x = borderMetrics.left;
-			header.y = borderMetrics.top;
 			COMPILE::SWF {
+                header.y = borderMetrics.top;
+                header.x = borderMetrics.left;
 				header.width = useWidth;
 			}
 			COMPILE::JS {
 				(header as UIBase).percentWidth = 100;
 				listArea.element.style.position = "absolute";
+                if (!(uiHost.element.style.position == 'absolute' ||
+                      uiHost.element.style.position == 'relative' ||
+                      uiHost.element.style.position == 'fixed'))
+                    uiHost.element.style.position = 'relative';
 			}
 			// header's height is set in CSS
 			
-			listArea.x = borderMetrics.left;
-			listArea.y = header.height + header.y;
+            listArea.y = header.height + header.y;
 			COMPILE::SWF {
+                listArea.x = borderMetrics.left;
 				listArea.width = useWidth;
 			}
 			COMPILE::JS {
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VirtualListVerticalLayout.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VirtualListVerticalLayout.as
index d6842fd..02a17e0 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VirtualListVerticalLayout.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VirtualListVerticalLayout.as
@@ -91,14 +91,14 @@ package org.apache.royale.html.beads.layouts
         }
         
         COMPILE::JS
-        private var topSpacer:HTMLDivElement;
+        protected var topSpacer:HTMLDivElement;
         
         COMPILE::JS
-        private var bottomSpacer:HTMLDivElement;
+        protected var bottomSpacer:HTMLDivElement;
         
-        private var visibleIndexes:Array = [];
+        protected var visibleIndexes:Array = [];
         
-        private function scrollHandler(e:Event):void
+        protected function scrollHandler(e:Event):void
         {
             layout();
         }
@@ -374,7 +374,7 @@ package org.apache.royale.html.beads.layouts
         }
 
         COMPILE::SWF
-        private function sizeAndPositionRenderer(ir:ISelectableItemRenderer, xpos:Number, ypos:Number, hostWidth:Number, hostHeight:Number):void
+        protected function sizeAndPositionRenderer(ir:ISelectableItemRenderer, xpos:Number, ypos:Number, hostWidth:Number, hostHeight:Number):void
         {
             var ilc:ILayoutChild;
             var positions:Object = childPositions(ir);