You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ca...@apache.org on 2020/03/10 20:52:34 UTC

[royale-asjs] branch develop updated: jewel-tabbar: star using basic DataItemRendererFactoryForCollectionView and create its own TabBarItemRendererInitializer

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

carlosrovira 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 48fcb6b  jewel-tabbar: star using basic DataItemRendererFactoryForCollectionView and create its own TabBarItemRendererInitializer
48fcb6b is described below

commit 48fcb6b68ddd8e2484e2b836ab80e0fa9a8ab4e5
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Tue Mar 10 21:52:22 2020 +0100

    jewel-tabbar: star using basic DataItemRendererFactoryForCollectionView and create its own TabBarItemRendererInitializer
---
 .../src/main/royale/TabBarPlayGround.mxml          |  7 +-
 .../projects/Jewel/src/main/resources/defaults.css |  4 +-
 .../projects/Jewel/src/main/royale/JewelClasses.as |  2 +
 .../main/royale/org/apache/royale/jewel/TabBar.as  |  3 +
 .../itemRenderers/TabBarItemRendererInitializer.as | 90 ++++++++++++++++++++++
 .../apache/royale/jewel/beads/views/ListView.as    |  4 +-
 .../Jewel/src/main/sass/components/_tabbar.sass    |  4 +-
 7 files changed, 106 insertions(+), 8 deletions(-)

diff --git a/examples/royale/TourDeJewel/src/main/royale/TabBarPlayGround.mxml b/examples/royale/TourDeJewel/src/main/royale/TabBarPlayGround.mxml
index b25b29d..bdef0e7 100644
--- a/examples/royale/TourDeJewel/src/main/royale/TabBarPlayGround.mxml
+++ b/examples/royale/TourDeJewel/src/main/royale/TabBarPlayGround.mxml
@@ -180,10 +180,13 @@ limitations under the License.
 		<j:GridCell desktopNumerator="1" desktopDenominator="1" tabletNumerator="1" tabletDenominator="1" phoneNumerator="1" phoneDenominator="1">
 			<j:Card>
 				<j:CardHeader>
-					<html:H3 text="Jewel TabBar"/>
+					<html:H3 text="rowHeight"/>
 				</j:CardHeader>
 				<j:CardPrimaryContent>
-					<j:TabBar>
+					<j:Label multiline="true">
+						<j:html><![CDATA[By default <b>TabBar</b> doesn't set <i>rowHeight</i>. This one set it to 60, so all renders has that height.]]></j:html>
+					</j:Label>
+					<j:TabBar rowHeight="60">
 						<j:beads>
 							<js:ConstantBinding sourcePropertyName="tabBarDataSample"
 												destinationPropertyName="dataProvider"/>
diff --git a/frameworks/projects/Jewel/src/main/resources/defaults.css b/frameworks/projects/Jewel/src/main/resources/defaults.css
index 1d99389..69d8523 100644
--- a/frameworks/projects/Jewel/src/main/resources/defaults.css
+++ b/frameworks/projects/Jewel/src/main/resources/defaults.css
@@ -3676,12 +3676,12 @@ j|TabBar {
   IBeadLayout: ClassReference("org.apache.royale.jewel.beads.layouts.NullLayout");
   IItemRendererClassFactory: ClassReference("org.apache.royale.core.SelectableItemRendererClassFactory");
   IItemRenderer: ClassReference("org.apache.royale.jewel.itemRenderers.TabBarButtonItemRenderer");
-  IItemRendererInitializer: ClassReference("org.apache.royale.jewel.beads.itemRenderers.JewelListItemRendererInitializer");
+  IItemRendererInitializer: ClassReference("org.apache.royale.jewel.beads.itemRenderers.TabBarItemRendererInitializer");
   ISelectableItemRenderer: ClassReference("org.apache.royale.jewel.beads.itemRenderers.ClassSelectorListSelectableItemRendererBead");
   IViewport: ClassReference("org.apache.royale.jewel.supportClasses.Viewport");
   IViewportModel: ClassReference("org.apache.royale.html.beads.models.ViewportModel");
   IBeadModel: ClassReference("org.apache.royale.jewel.beads.models.ArrayListSelectionModel");
-  IDataProviderItemRendererMapper: ClassReference("org.apache.royale.jewel.beads.itemRenderers.DataItemRendererFactoryForCollectionView");
+  IDataProviderItemRendererMapper: ClassReference("org.apache.royale.html.beads.DataItemRendererFactoryForCollectionView");
 }
 
 .jewel.tabbarbutton {
diff --git a/frameworks/projects/Jewel/src/main/royale/JewelClasses.as b/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
index e2dd391..827b1e8 100644
--- a/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
+++ b/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
@@ -133,7 +133,9 @@ package
         
         import org.apache.royale.jewel.beads.itemRenderers.ClassSelectorListSelectableItemRendererBead; ClassSelectorListSelectableItemRendererBead;
         import org.apache.royale.jewel.beads.itemRenderers.ClassSelectorListHoverOnlySelectableItemRendererBead; ClassSelectorListHoverOnlySelectableItemRendererBead;
+        
         import org.apache.royale.jewel.beads.itemRenderers.JewelListItemRendererInitializer; JewelListItemRendererInitializer;
+        import org.apache.royale.jewel.beads.itemRenderers.TabBarItemRendererInitializer; TabBarItemRendererInitializer;
 
     }
 }
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/TabBar.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/TabBar.as
index 8ee4774..514bf5d 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/TabBar.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/TabBar.as
@@ -56,6 +56,9 @@ package org.apache.royale.jewel
 			//TabBar is always selected, so selectedIndex can't be -1, at least it will default to 0
 			ISelectionModel(model).selectedIndex = 0;
 
+			// rowHeight is not set byt default, so set it to NaN
+			rowHeight = NaN;
+
 			addEventListener(MouseEvent.CLICK, internalMouseHandler);
 		}
 
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/TabBarItemRendererInitializer.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/TabBarItemRendererInitializer.as
new file mode 100644
index 0000000..932f36c
--- /dev/null
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/TabBarItemRendererInitializer.as
@@ -0,0 +1,90 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.royale.jewel.beads.itemRenderers
+{	
+	import org.apache.royale.core.IIndexedItemRenderer;
+	import org.apache.royale.core.IIndexedItemRendererInitializer;
+	import org.apache.royale.core.IItemRendererOwnerView;
+	import org.apache.royale.core.IStrand;
+	import org.apache.royale.core.IStrandWithModelView;
+	import org.apache.royale.core.IStrandWithPresentationModel;
+	import org.apache.royale.core.StyledMXMLItemRenderer;
+	import org.apache.royale.core.UIBase;
+	import org.apache.royale.html.beads.IndexedItemRendererInitializer;
+	import org.apache.royale.jewel.supportClasses.list.IListPresentationModel;
+
+	/**
+	 *  The TabBarItemRendererInitializer class initializes item renderers
+     *  in list classes.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion Royale 0.9.7
+	 */
+	public class TabBarItemRendererInitializer extends IndexedItemRendererInitializer implements IIndexedItemRendererInitializer
+	{
+		/**
+		 *  constructor.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9.7
+		 */
+		public function TabBarItemRendererInitializer()
+		{
+		}
+		
+        protected var presentationModel:IListPresentationModel;
+        private var ownerView:IItemRendererOwnerView;
+        
+		/**
+		 *  @copy org.apache.royale.core.IBead#strand
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9.7
+		 *  @royaleignorecoercion HTMLInputElement
+		 *  @royaleignorecoercion org.apache.royale.core.UIBase;
+		 */
+		override public function set strand(value:IStrand):void
+		{	
+			super.strand = value;
+            ownerView = (value as IStrandWithModelView).view as IItemRendererOwnerView;
+            presentationModel = (_strand as IStrandWithPresentationModel).presentationModel as IListPresentationModel;            
+		}
+        
+        override protected function setupVisualsForItemRenderer(ir:IIndexedItemRenderer):void
+        {
+            if (presentationModel) {
+                UIBase(ir).height = presentationModel.rowHeight;
+                
+                if(ir is IAlignItemRenderer)
+                {
+                    (ir as IAlignItemRenderer).align = presentationModel.align;
+                }
+            }
+            if (ir is StyledMXMLItemRenderer && ownerView)
+                (ir as StyledMXMLItemRenderer).itemRendererOwnerView = ownerView;
+		}
+
+	}
+}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ListView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ListView.as
index b8f3723..e48a6cc 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ListView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/ListView.as
@@ -18,10 +18,10 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.jewel.beads.views
 {
+	import org.apache.royale.core.IItemRenderer;
 	import org.apache.royale.core.IItemRendererOwnerView;
 	import org.apache.royale.core.ILayoutView;
 	import org.apache.royale.core.IRollOverModel;
-	import org.apache.royale.core.IItemRenderer;
 	import org.apache.royale.core.ISelectableItemRenderer;
 	import org.apache.royale.core.ISelectionModel;
 	import org.apache.royale.core.IStrand;
@@ -59,8 +59,8 @@ package org.apache.royale.jewel.beads.views
 		override public function set strand(value:IStrand):void
 		{
 			super.strand = value;
-
 		}
+		
 		private var _dataGroup:IItemRendererOwnerView;
 		/**
 		 * @royaleignorecoercion org.apache.royale.core.IItemRendererOwnerView
diff --git a/frameworks/projects/Jewel/src/main/sass/components/_tabbar.sass b/frameworks/projects/Jewel/src/main/sass/components/_tabbar.sass
index 38151e4..02859d9 100644
--- a/frameworks/projects/Jewel/src/main/sass/components/_tabbar.sass
+++ b/frameworks/projects/Jewel/src/main/sass/components/_tabbar.sass
@@ -53,12 +53,12 @@ j|TabBar
     IBeadLayout: ClassReference("org.apache.royale.jewel.beads.layouts.NullLayout")
     IItemRendererClassFactory: ClassReference("org.apache.royale.core.SelectableItemRendererClassFactory")
     IItemRenderer: ClassReference("org.apache.royale.jewel.itemRenderers.TabBarButtonItemRenderer")
-    IItemRendererInitializer: ClassReference("org.apache.royale.jewel.beads.itemRenderers.JewelListItemRendererInitializer")
+    IItemRendererInitializer: ClassReference("org.apache.royale.jewel.beads.itemRenderers.TabBarItemRendererInitializer")
     ISelectableItemRenderer: ClassReference("org.apache.royale.jewel.beads.itemRenderers.ClassSelectorListSelectableItemRendererBead")
     IViewport: ClassReference("org.apache.royale.jewel.supportClasses.Viewport")
     IViewportModel: ClassReference("org.apache.royale.html.beads.models.ViewportModel")
     IBeadModel: ClassReference("org.apache.royale.jewel.beads.models.ArrayListSelectionModel")
-    IDataProviderItemRendererMapper: ClassReference("org.apache.royale.jewel.beads.itemRenderers.DataItemRendererFactoryForCollectionView")
+    IDataProviderItemRendererMapper: ClassReference("org.apache.royale.html.beads.DataItemRendererFactoryForCollectionView")
 
 // Jewel TabBarButtonItemRenderer
 $tabbarbutton-margin: 0 !default