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/23 18:35:50 UTC
[royale-asjs] 01/03: dataprovider factory: little refactor to make
it more extensible for more complex components (jewel table)
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
commit 4c168894a5c2f3e420bb806525e340bf6883e130
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Thu Jul 23 19:34:02 2020 +0200
dataprovider factory: little refactor to make it more extensible for more complex components (jewel table)
(cherry picked from commit a0e490c88b4b453bed9e59184a224de112888161)
---
.../html/beads/DataItemRendererFactoryBase.as | 27 ++++++++-------
.../DataItemRendererFactoryForCollectionView.as | 38 +++++++++++-----------
.../royale/html/beads/ItemRendererFactoryBase.as | 9 +++--
3 files changed, 40 insertions(+), 34 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 fc0758f..2f8cbd8 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
@@ -52,11 +52,6 @@ package org.apache.royale.html.beads
}
/**
- * the dataProvider
- */
- protected var dp:Object;
-
- /**
* This Factory deletes all renderers, and generates a renderer
* for every data provider item.
*
@@ -67,8 +62,7 @@ package org.apache.royale.html.beads
* @royaleignorecoercion Array
* @royaleignorecoercion org.apache.royale.core.IStrandWithModelView
* @royaleignorecoercion org.apache.royale.html.beads.IListView
- * @royaleignorecoercion org.apache.royale.core.IIndexedItemRenderer
- * @royaleignorecoercion org.apache.royale.core.IIndexedItemRendererInitializer
+ * @royaleignorecoercion org.apache.royale.core.IItemRendererOwnerView
*/
override protected function dataProviderChangeHandler(event:Event):void
{
@@ -77,10 +71,22 @@ package org.apache.royale.html.beads
removeAllItemRenderers(dataGroup);
- dp = dataProviderModel.dataProvider;
- if (!dp)
+ if (!dataProviderModel.dataProvider)
return;
+ createAllItemRenderers(dataGroup);
+
+ dispatchItemCreatedEvent();
+ }
+
+ /**
+ * create all item renderers
+ *
+ * @royaleignorecoercion org.apache.royale.core.IIndexedItemRenderer
+ * @royaleignorecoercion org.apache.royale.core.IIndexedItemRendererInitializer
+ */
+ protected function createAllItemRenderers(dataGroup:IItemRendererOwnerView):void
+ {
var n:int = dataProviderLength;
for (var i:int = 0; i < n; i++)
{
@@ -91,14 +97,11 @@ package org.apache.royale.html.beads
(itemRendererInitializer as IIndexedItemRendererInitializer).initializeIndexedItemRenderer(ir, data, i);
ir.data = data;
}
-
- dispatchItemCreatedEvent();
}
protected function dispatchItemCreatedEvent():void
{
sendStrandEvent(_strand,"itemsCreated");
}
-
}
}
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 d532595..01f3156 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
@@ -18,7 +18,6 @@
////////////////////////////////////////////////////////////////////////////////
package org.apache.royale.html.beads
{
- import org.apache.royale.collections.ICollectionView;
import org.apache.royale.core.IIndexedItemRenderer;
import org.apache.royale.core.IIndexedItemRendererInitializer;
import org.apache.royale.core.IItemRendererOwnerView;
@@ -58,7 +57,7 @@ package org.apache.royale.html.beads
super.dataProviderChangeHandler(event);
- if (!dp)
+ if (!dataProviderModel.dataProvider)
return;
if(dped)
@@ -68,13 +67,25 @@ package org.apache.royale.html.beads
dped.removeEventListener(CollectionEvent.ITEM_UPDATED, itemUpdatedHandler);
}
// listen for individual items being added in the future.
- dped = dp as IEventDispatcher;
+ dped = dataProviderModel.dataProvider as IEventDispatcher;
dped.addEventListener(CollectionEvent.ITEM_ADDED, itemAddedHandler);
dped.addEventListener(CollectionEvent.ITEM_REMOVED, itemRemovedHandler);
dped.addEventListener(CollectionEvent.ITEM_UPDATED, itemUpdatedHandler);
}
/**
+ * 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
@@ -82,12 +93,8 @@ package org.apache.royale.html.beads
*/
protected function itemAddedHandler(event:CollectionEvent):void
{
- if (!dataProviderModel)
+ if(!dataProviderExist)
return;
- dp = dataProviderModel.dataProvider as ICollectionView;
- if (!dp)
- return;
-
var view:IListView = (_strand as IStrandWithModelView).view as IListView;
var dataGroup:IItemRendererOwnerView = view.dataGroup;
@@ -123,10 +130,7 @@ package org.apache.royale.html.beads
*/
protected function itemRemovedHandler(event:CollectionEvent):void
{
- if (!dataProviderModel)
- return;
- dp = dataProviderModel.dataProvider as ICollectionView;
- if (!dp)
+ if(!dataProviderExist)
return;
var view:IListView = (_strand as IStrandWithModelView).view as IListView;
@@ -160,10 +164,7 @@ package org.apache.royale.html.beads
*/
protected function itemUpdatedHandler(event:CollectionEvent):void
{
- if (!dataProviderModel)
- return;
- dp = dataProviderModel.dataProvider as ICollectionView;
- if (!dp)
+ if(dataProviderExist)
return;
var view:IListView = (_strand as IStrandWithModelView).view as IListView;
@@ -180,13 +181,12 @@ package org.apache.royale.html.beads
override protected function get dataProviderLength():int
{
- return dp.length;
+ return dataProviderModel.dataProvider.length;
}
override protected function getItemAt(i:int):Object
{
- return dp.getItemAt(i);
+ return dataProviderModel.dataProvider.getItemAt(i);
}
-
}
}
\ No newline at end of file
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ItemRendererFactoryBase.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ItemRendererFactoryBase.as
index 7a3f00d..0cb509e 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ItemRendererFactoryBase.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ItemRendererFactoryBase.as
@@ -18,17 +18,15 @@
////////////////////////////////////////////////////////////////////////////////
package org.apache.royale.html.beads
{
- import org.apache.royale.core.IBead;
+ import org.apache.royale.core.DispatcherBead;
import org.apache.royale.core.IDataProviderModel;
import org.apache.royale.core.IItemRendererClassFactory;
import org.apache.royale.core.IItemRendererInitializer;
import org.apache.royale.core.IItemRendererOwnerView;
import org.apache.royale.core.IStrand;
import org.apache.royale.events.Event;
- import org.apache.royale.events.EventDispatcher;
import org.apache.royale.events.IEventDispatcher;
import org.apache.royale.utils.loadBeadFromValuesManager;
- import org.apache.royale.core.DispatcherBead;
/**
* The DataItemRendererFactoryBase class is a base class
@@ -162,6 +160,11 @@ package org.apache.royale.html.beads
{
}
+ /**
+ * Remove all itemrenderers
+ *
+ * @royaleignorecoercion org.apache.royale.core.IItemRendererOwnerView
+ */
protected function removeAllItemRenderers(dataGroup:IItemRendererOwnerView):void
{
dataGroup.removeAllItemRenderers();