Hi, I'm doing a little refactor in DataItemRendererFactoryBase so I can refactor TableItemRendererFactoryForCollectionView and use it to remove lots of repeated code.
I think it should not affect anything, but since the latest times my changes affect Harbs code, I thought this one better done in a branch. I'm still doing work in the branch, but want to share it with you so you can check the first commit that is the one that does some changes. In summary, there's two things: 1.- introduce dataProviderExist to remove repeated code in lots of methods in the class 2.- Move the creation of the renderers to createAllItemRenderers new method so I can use it in table refactor. The factory is about removing all renders and creating the new ones (as the comment section says), we have a method for the removal but not for the creation which makes extension difficult. ---------- Forwarded message --------- De: <[email protected]> Date: jue., 23 jul. 2020 a las 20:35 Subject: [royale-asjs] 03/03: jewel-table-factory: refactor to use dataitemrendererfactorybase first step To: [email protected] <[email protected]> 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 0bb036ee80c3db66601d78fdd294c3a95aee152d Author: Carlos Rovira <[email protected]> AuthorDate: Thu Jul 23 20:35:14 2020 +0200 jewel-table-factory: refactor to use dataitemrendererfactorybase first step --- .../TableItemRendererFactoryForCollectionView.as | 88 ++-------------------- 1 file changed, 5 insertions(+), 83 deletions(-) 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 e0a51d5..091cf53 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 @@ -19,21 +19,17 @@ package org.apache.royale.jewel.beads.itemRenderers { import org.apache.royale.collections.ICollectionView; - import org.apache.royale.core.IBead; import org.apache.royale.core.IBeadModel; import org.apache.royale.core.IChild; import org.apache.royale.core.IDataProviderItemRendererMapper; import org.apache.royale.core.IIndexedItemRenderer; import org.apache.royale.core.IIndexedItemRendererInitializer; - import org.apache.royale.core.IItemRendererClassFactory; - import org.apache.royale.core.IItemRendererInitializer; import org.apache.royale.core.ILabelFieldItemRenderer; import org.apache.royale.core.IParent; - import org.apache.royale.core.IStrand; import org.apache.royale.core.UIBase; import org.apache.royale.events.Event; - import org.apache.royale.events.EventDispatcher; import org.apache.royale.events.IEventDispatcher; + 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; @@ -48,37 +44,19 @@ package org.apache.royale.jewel.beads.itemRenderers import org.apache.royale.jewel.supportClasses.table.TableColumn; import org.apache.royale.jewel.supportClasses.table.TableHeaderCell; import org.apache.royale.jewel.supportClasses.table.TableRow; - import org.apache.royale.utils.loadBeadFromValuesManager; /** * This class creates itemRenderer instances from the data contained within an ICollectionView * and generates the appropiate table structure with thead, tbody and table rows and cells * to hold the columns and data in cells. */ - public class TableItemRendererFactoryForCollectionView extends EventDispatcher implements IBead, IDataProviderItemRendererMapper + public class TableItemRendererFactoryForCollectionView extends DataItemRendererFactoryBase implements IDataProviderItemRendererMapper { public function TableItemRendererFactoryForCollectionView(target:Object = null) { super(target); } - protected var _strand:IStrand; - - /** - * @copy org.apache.royale.core.IBead#strand - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion Royale 0.9.4 - * @royaleignorecoercion org.apache.royale.events.IEventDispatcher - */ - public function set strand(value:IStrand):void - { - _strand = value; - IEventDispatcher(value).addEventListener("initComplete", initComplete); - } - /** * finish setup * @@ -89,9 +67,9 @@ package org.apache.royale.jewel.beads.itemRenderers * @royaleignorecoercion org.apache.royale.events.IEventDispatcher * @royaleignorecoercion org.apache.royale.html.beads.IListView */ - protected function initComplete(event:Event):void + override protected function finishSetup(event:Event):void { - IEventDispatcher(_strand).removeEventListener("initComplete", initComplete); + IEventDispatcher(_strand).removeEventListener("initComplete", finishSetup); view = _strand.getBeadByType(IListView) as TableView; tbody = view.dataGroup as TBodyContentArea; @@ -105,34 +83,6 @@ package org.apache.royale.jewel.beads.itemRenderers } protected var labelField:String; - - private var _itemRendererFactory:IItemRendererClassFactory; - - /** - * The org.apache.royale.core.IItemRendererClassFactory used - * to generate instances of item renderers. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion Royale 0.9.4 - * @royaleignorecoercion org.apache.royale.core.IItemRendererClassFactory - */ - public function get itemRendererFactory():IItemRendererClassFactory - { - if(!_itemRendererFactory) - _itemRendererFactory = loadBeadFromValuesManager(IItemRendererClassFactory, "iItemRendererClassFactory", _strand) as IItemRendererClassFactory; - - return _itemRendererFactory; - } - - /** - * @private - */ - public function set itemRendererFactory(value:IItemRendererClassFactory):void - { - _itemRendererFactory = value; - } protected var view:TableView; protected var model:TableModel; @@ -147,7 +97,7 @@ package org.apache.royale.jewel.beads.itemRenderers * @royaleignorecoercion org.apache.royale.core.IIndexedItemRenderer * @royaleignorecoercion org.apache.royale.events.IEventDispatcher */ - protected function dataProviderChangeHandler(event:Event):void + override protected function dataProviderChangeHandler(event:Event):void { // -- 1) CLEANING PHASE if (!model) @@ -256,34 +206,6 @@ package org.apache.royale.jewel.beads.itemRenderers setData(itemRenderer, item, index); } - private var _itemRendererInitializer:IItemRendererInitializer; - - /** - * The org.apache.royale.core.IItemRendererInitializer used - * to initialize instances of item renderers. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion Royale 0.8 - * @royaleignorecoercion org.apache.royale.core.IItemRendererInitializer - */ - public function get itemRendererInitializer():IItemRendererInitializer - { - if(!_itemRendererInitializer) - _itemRendererInitializer = loadBeadFromValuesManager(IItemRendererInitializer, "iItemRendererInitializer", _strand) as IItemRendererInitializer; - - return _itemRendererInitializer; - } - - /** - * @private - */ - public function set itemRendererInitializer(value:IItemRendererInitializer):void - { - _itemRendererInitializer = value; - } - /** * @private */ -- Carlos Rovira http://about.me/carlosrovira
