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/07/24 14:45:00 UTC

[royale-asjs] branch feature/dataprovider-extensiblity updated: more refactor for extensibility

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

carlosrovira pushed a commit to branch feature/dataprovider-extensiblity
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/feature/dataprovider-extensiblity by this push:
     new 52575c0  more refactor for extensibility
52575c0 is described below

commit 52575c03224b66f2c5a4722c3b4dddb7a799b5a7
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Fri Jul 24 16:44:47 2020 +0200

    more refactor for extensibility
---
 .../html/beads/DataItemRendererFactoryBase.as      | 25 ++++++++--
 .../DataItemRendererFactoryForCollectionView.as    | 23 ++-------
 .../TableItemRendererFactoryForCollectionView.as   | 54 +++++++++++-----------
 3 files changed, 53 insertions(+), 49 deletions(-)

diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryBase.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryBase.as
index 2f8cbd8..d3e430c 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryBase.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryBase.as
@@ -51,6 +51,12 @@ package org.apache.royale.html.beads
 			super(target);
 		}
 
+		protected function get dataGroup():IItemRendererOwnerView
+		{
+			var view:IListView = (_strand as IStrandWithModelView).view as IListView;
+			return view.dataGroup;
+		}
+
 		/**
 		 *  This Factory deletes all renderers, and generates a renderer
 		 *  for every data provider item.
@@ -65,13 +71,10 @@ package org.apache.royale.html.beads
 		 *  @royaleignorecoercion org.apache.royale.core.IItemRendererOwnerView
 		 */		
 		override protected function dataProviderChangeHandler(event:Event):void
-		{			
-			var view:IListView = (_strand as IStrandWithModelView).view as IListView;
-			var dataGroup:IItemRendererOwnerView = view.dataGroup;
-			
+		{
 			removeAllItemRenderers(dataGroup);
 			
-			if (!dataProviderModel.dataProvider)
+			if(!dataProviderExist)
 				return;
 			
 			createAllItemRenderers(dataGroup);
@@ -80,6 +83,18 @@ package org.apache.royale.html.beads
 		}
 
 		/**
+		 * check if model and dataprovider exists. This check is done through all methods
+		 * @private
+		 */
+		protected function get dataProviderExist():Boolean
+		{
+			if (!dataProviderModel || !dataProviderModel.dataProvider)
+				return false;
+			
+			return true;
+		}
+
+		/**
 		 *  create all item renderers
 		 *  
 		 *  @royaleignorecoercion org.apache.royale.core.IIndexedItemRenderer
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForCollectionView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForCollectionView.as
index 01f3156..5d60d38 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForCollectionView.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForCollectionView.as
@@ -52,20 +52,19 @@ package org.apache.royale.html.beads
 		 */
 		override protected function dataProviderChangeHandler(event:Event):void
 		{
-			if (!dataProviderModel)
-				return;
-			
 			super.dataProviderChangeHandler(event);
 			
-			if (!dataProviderModel.dataProvider)
-				return;
-			
 			if(dped)
 			{
 				dped.removeEventListener(CollectionEvent.ITEM_ADDED, itemAddedHandler);
 				dped.removeEventListener(CollectionEvent.ITEM_REMOVED, itemRemovedHandler);
 				dped.removeEventListener(CollectionEvent.ITEM_UPDATED, itemUpdatedHandler);
+				dped = null;
 			}
+			
+			if (!dataProviderModel.dataProvider)
+				return;
+			
 			// listen for individual items being added in the future.
 			dped = dataProviderModel.dataProvider as IEventDispatcher;
 			dped.addEventListener(CollectionEvent.ITEM_ADDED, itemAddedHandler);
@@ -74,18 +73,6 @@ package org.apache.royale.html.beads
 		}
 		
 		/**
-		 * check if model and dataprovider exists. This check is done through all methods
-		 * @private
-		 */
-		private function get dataProviderExist():Boolean
-		{
-			if (!dataProviderModel || !dataProviderModel.dataProvider)
-				return false;
-			
-			return true;
-		}
-
-		/**
 		 * @private
 		 * @royaleignorecoercion org.apache.royale.collections.ICollectionView
 		 * @royaleignorecoercion org.apache.royale.core.IListPresentationModel
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/TableItemRendererFactoryForCollectionView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/TableItemRendererFactoryForCollectionView.as
index efa3510..c7efcfa 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/TableItemRendererFactoryForCollectionView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/TableItemRendererFactoryForCollectionView.as
@@ -23,10 +23,10 @@ package org.apache.royale.jewel.beads.itemRenderers
     import org.apache.royale.core.IIndexedItemRendererInitializer;
     import org.apache.royale.core.IItemRendererOwnerView;
     import org.apache.royale.core.IParent;
+    import org.apache.royale.core.IStrandWithModelView;
     import org.apache.royale.core.UIBase;
     import org.apache.royale.events.Event;
     import org.apache.royale.html.beads.DataItemRendererFactoryBase;
-    import org.apache.royale.html.beads.IListView;
     import org.apache.royale.html.supportClasses.StyledDataItemRenderer;
     import org.apache.royale.jewel.Label;
     import org.apache.royale.jewel.Table;
@@ -35,7 +35,6 @@ package org.apache.royale.jewel.beads.itemRenderers
     import org.apache.royale.jewel.beads.views.TableView;
     import org.apache.royale.jewel.itemRenderers.TableItemRenderer;
     import org.apache.royale.jewel.supportClasses.list.IListPresentationModel;
-    import org.apache.royale.jewel.supportClasses.table.TBodyContentArea;
     import org.apache.royale.jewel.supportClasses.table.THead;
     import org.apache.royale.jewel.supportClasses.table.TableColumn;
     import org.apache.royale.jewel.supportClasses.table.TableHeaderCell;
@@ -53,13 +52,24 @@ package org.apache.royale.jewel.beads.itemRenderers
 			super(target);
 		}
 		
-		protected var labelField:String;
+		private var table:Table;
+		private var view:TableView;
 
-        protected var view:TableView;
-        protected var model:TableModel;
-        protected var table:Table;
+		override protected function finishSetup(event:Event):void
+		{
+			super.finishSetup(event);
+			table = _strand as Table;
+		}
 
-		private var tbody:TBodyContentArea;
+		override protected function get dataGroup():IItemRendererOwnerView {
+			if(!view)
+				view = (_strand as IStrandWithModelView).view as TableView;
+			return view.dataGroup;
+		}
+		
+		protected function get model():TableModel {
+			return dataProviderModel as TableModel;
+		}
 
         /**
 		 * @private
@@ -70,11 +80,6 @@ package org.apache.royale.jewel.beads.itemRenderers
 		 */
 		override protected function dataProviderChangeHandler(event:Event):void
 		{
-			view = _strand.getBeadByType(IListView) as TableView;
-			tbody = view.dataGroup as TBodyContentArea;
-            table = _strand as Table;
-			model = dataProviderModel as TableModel;
-			
 			// -- 1) CLEANING PHASE
             if (!model)
 				return;
@@ -85,7 +90,7 @@ package org.apache.royale.jewel.beads.itemRenderers
 				model.selectedItemProperty = null;
 
 				// TBodyContentArea - remove data items
-				removeAllItemRenderers(tbody);
+				removeAllItemRenderers(dataGroup);
 				return;
 			}
 			// remove this and better add beads when needed
@@ -96,22 +101,17 @@ package org.apache.royale.jewel.beads.itemRenderers
 			// dped.addEventListener(CollectionEvent.ITEM_UPDATED, itemUpdatedHandler);
 			
             // TBodyContentArea - remove data items
-			removeAllItemRenderers(tbody);
+			removeAllItemRenderers(dataGroup);
 			
             // THEAD - remove header items
 			removeElements(view.thead);
 
 			if(!model.columns)
 				return;
-			
-            // -- add the header
-            createHeader();
-			
-			// -- 2) CREATION PHASE
-			createAllItemRenderers(tbody);
+            
+			createAllItemRenderers(dataGroup);
 			
 			dispatchItemCreatedEvent();
-            // table.dispatchEvent(new Event("layoutNeeded"));
         }
 
 		/**
@@ -122,8 +122,11 @@ package org.apache.royale.jewel.beads.itemRenderers
 		 */
 		override protected function createAllItemRenderers(dataGroup:IItemRendererOwnerView):void
 		{
+			// -- add the header
+            createHeader();
+			
+			// -- 2) CREATION PHASE
 			var presentationModel:IListPresentationModel = _strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
-			labelField = model.labelField;
 			
             var column:TableColumn;
             var ir:TableItemRenderer;
@@ -144,17 +147,16 @@ package org.apache.royale.jewel.beads.itemRenderers
                         ir = itemRendererFactory.createItemRenderer() as TableItemRenderer;
                     }
 
-					labelField =  column.dataField;
-                    var data:Object = model.dataProvider.getItemAt(i);
+					var data:Object = model.dataProvider.getItemAt(i);
 
-                    (ir as StyledDataItemRenderer).dataField = labelField;
+                    (ir as StyledDataItemRenderer).dataField = column.dataField;
 					(ir as StyledDataItemRenderer).rowIndex = i;
 					(ir as StyledDataItemRenderer).columnIndex = j;
 					
 					(itemRendererInitializer as IIndexedItemRendererInitializer).initializeIndexedItemRenderer(ir, data, index);
                     
 					dataGroup.addItemRendererAt(ir, index);
-					ir.labelField = labelField;
+					ir.labelField = column.dataField;
 					
 					if (presentationModel) {
 						UIBase(ir).height = presentationModel.rowHeight;