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 <[email protected]>
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;

Reply via email to