Hi Piotr, yes. As you remember, I did a huge refactor that made all of us invest many time in discussions. That discussions make some things solve and approved some others, but while I think we talked about a refactor in our way to 1.0, we left in that point. I propose to make that refactor, but I don't saw a clear point to go forward at that time. So while I'm a huge advocate of no code duplication, as well, a point is even more important to me: not make Jewel dependent from the *actual* Basic library. I think many beads in Basic can be usable cross Royale, but they need to be in a common library not Basic (what I called "Foundation.swc" through the discussion. Or separate the Basic UI set to another lib. As well that classes need a refactor of packages and maybe names. In Jewel package organization is very important, and I think that should be in all Royale code to ease development for our users. As Harbs said, actually is very hard for others that come to know what we have, and where find it.
But instead, I work as well to change the package names to old structure to release 0.9.3, instead of going from that point to something more final, for me a step back, but ok to release 0.9.3, but no one has started the release process of 0.9.3... I hope, some time in the future, we can remove the duplicated code and refactor things before reach 1.0. But maybe is not the right time, since I see Alex very productive with emulation branch, and maybe a refactor not could be a problem for him when trying to merge and could result in more unwanted work. As well I'm finishing some key components, since in few days/weeks we'll start a Royale project, so I need to finish those components before I can invest time in refactor. So I hope if we release 0.9.3 by September, I can propose to start the refactor with Jewel almost finished and emulation branch integrated by October? But anyway, as well I hope all people understand that a refactor will implied changes in many names and packages, and that could bring many discussions to the table that can as well make us lose many time on that front, while Royale need (as any other code) need that to be a 1.0 that can live long time without huge modifications that affect many users code bases... El dom., 19 ago. 2018 a las 9:56, Piotr Zarzycki (<[email protected]>) escribió: > Carlos, > > So you did exact copy of beads from Basic? > > Thanks, > Piotr > > On Sat, Aug 18, 2018, 7:45 PM <[email protected]> wrote: > > > 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 967fd9b remove item handling code in favor of use of beads > > 967fd9b is described below > > > > commit 967fd9b8a6873514a83c66084e8aa4a015f48c7d > > Author: Carlos Rovira <[email protected]> > > AuthorDate: Sat Aug 18 19:45:51 2018 +0200 > > > > remove item handling code in favor of use of beads > > --- > > .../src/main/royale/ListPlayGround.mxml | 2 +- > > .../DataItemRendererFactoryForCollectionView.as | 131 > > +++++++++++---------- > > .../TableItemRendererFactoryForCollectionView.as | 29 +++-- > > 3 files changed, 83 insertions(+), 79 deletions(-) > > > > diff --git > > a/examples/royale/JewelExample/src/main/royale/ListPlayGround.mxml > > b/examples/royale/JewelExample/src/main/royale/ListPlayGround.mxml > > index 8b603eb..63eb8d3 100644 > > --- a/examples/royale/JewelExample/src/main/royale/ListPlayGround.mxml > > +++ b/examples/royale/JewelExample/src/main/royale/ListPlayGround.mxml > > @@ -50,7 +50,7 @@ limitations under the License. > > > > public function removeAllData():void > > { > > - simple.removeAll(); > > + (list.dataProvider as > > ArrayList).removeAll(); > > } > > ]]> > > </fx:Script> > > diff --git > > > a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DataItemRendererFactoryForCollectionView.as > > > b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DataItemRendererFactoryForCollectionView.as > > index 544b013..4a47ec8 100644 > > --- > > > a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DataItemRendererFactoryForCollectionView.as > > +++ > > > b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DataItemRendererFactoryForCollectionView.as > > @@ -163,11 +163,12 @@ package org.apache.royale.jewel.beads.itemRenderers > > if (!dp) > > return; > > > > + // remove this and better add beads when needed > > // listen for individual items being added in the > > future. > > - var dped:IEventDispatcher = dp as > IEventDispatcher; > > - dped.addEventListener(CollectionEvent.ITEM_ADDED, > > itemAddedHandler); > > - > > dped.addEventListener(CollectionEvent.ITEM_REMOVED, itemRemovedHandler); > > - > > dped.addEventListener(CollectionEvent.ITEM_UPDATED, itemUpdatedHandler); > > + // var dped:IEventDispatcher = dp as > > IEventDispatcher; > > + // > > dped.addEventListener(CollectionEvent.ITEM_ADDED, itemAddedHandler); > > + // > > dped.addEventListener(CollectionEvent.ITEM_REMOVED, itemRemovedHandler); > > + // > > dped.addEventListener(CollectionEvent.ITEM_UPDATED, itemUpdatedHandler); > > > > dataGroup.removeAllItemRenderers(); > > > > @@ -192,37 +193,37 @@ package org.apache.royale.jewel.beads.itemRenderers > > * @royaleignorecoercion > > org.apache.royale.core.ISelectableItemRenderer > > * @royaleignorecoercion > > org.apache.royale.events.IEventDispatcher > > */ > > - protected function > > itemAddedHandler(event:CollectionEvent):void > > - { > > - if (!dataProviderModel) > > - return; > > - var dp:ICollectionView = > > dataProviderModel.dataProvider as ICollectionView; > > - if (!dp) > > - return; > > + // protected function > > itemAddedHandler(event:CollectionEvent):void > > + // { > > + // if (!dataProviderModel) > > + // return; > > + // var dp:ICollectionView = > > dataProviderModel.dataProvider as ICollectionView; > > + // if (!dp) > > + // return; > > > > - var presentationModel:IListPresentationModel = > > _strand.getBeadByType(IListPresentationModel) as IListPresentationModel; > > - var ir:ISelectableItemRenderer = > > itemRendererFactory.createItemRenderer(dataGroup) as > > ISelectableItemRenderer; > > - labelField = dataProviderModel.labelField; > > + // var presentationModel:IListPresentationModel = > > _strand.getBeadByType(IListPresentationModel) as IListPresentationModel; > > + // var ir:ISelectableItemRenderer = > > itemRendererFactory.createItemRenderer(dataGroup) as > > ISelectableItemRenderer; > > + // labelField = dataProviderModel.labelField; > > > > - fillRenderer(event.index, event.item, ir, > > presentationModel); > > + // fillRenderer(event.index, event.item, ir, > > presentationModel); > > > > - // update the index values in the itemRenderers > to > > correspond to their shifted positions. > > - var n:int = dataGroup.numElements; > > - for (var i:int = event.index; i < n; i++) > > - { > > - ir = dataGroup.getElementAt(i) as > > ISelectableItemRenderer; > > - ir.index = i; > > + // // update the index values in the itemRenderers > to > > correspond to their shifted positions. > > + // var n:int = dataGroup.numElements; > > + // for (var i:int = event.index; i < n; i++) > > + // { > > + // ir = dataGroup.getElementAt(i) as > > ISelectableItemRenderer; > > + // ir.index = i; > > > > - // could let the IR know its index has > > been changed (eg, it might change its > > - // UI based on the index). Instead > (PAYG), > > allow another bead to detect > > - // this event and do this as not every IR > > will need to be updated. > > - //var ubase:UIItemRendererBase = ir as > > UIItemRendererBase; > > - //if (ubase) ubase.updateRenderer() > > - } > > + // // could let the IR know its index has > > been changed (eg, it might change its > > + // // UI based on the index). Instead > (PAYG), > > allow another bead to detect > > + // // this event and do this as not every IR > > will need to be updated. > > + // //var ubase:UIItemRendererBase = ir as > > UIItemRendererBase; > > + // //if (ubase) ubase.updateRenderer() > > + // } > > > > - (_strand as IEventDispatcher).dispatchEvent(new > > Event("itemsCreated")); > > - (_strand as IEventDispatcher).dispatchEvent(new > > Event("layoutNeeded")); > > - } > > + // (_strand as IEventDispatcher).dispatchEvent(new > > Event("itemsCreated")); > > + // (_strand as IEventDispatcher).dispatchEvent(new > > Event("layoutNeeded")); > > + // } > > > > /** > > * @private > > @@ -231,52 +232,52 @@ package org.apache.royale.jewel.beads.itemRenderers > > * @royaleignorecoercion > > org.apache.royale.core.ISelectableItemRenderer > > * @royaleignorecoercion > > org.apache.royale.events.IEventDispatcher > > */ > > - protected function > > itemRemovedHandler(event:CollectionEvent):void > > - { > > - if (!dataProviderModel) > > - return; > > - var dp:ICollectionView = > > dataProviderModel.dataProvider as ICollectionView; > > - if (!dp) > > - return; > > + // protected function > > itemRemovedHandler(event:CollectionEvent):void > > + // { > > + // if (!dataProviderModel) > > + // return; > > + // var dp:ICollectionView = > > dataProviderModel.dataProvider as ICollectionView; > > + // if (!dp) > > + // return; > > > > - var ir:ISelectableItemRenderer = > > dataGroup.getElementAt(event.index) as ISelectableItemRenderer; > > - dataGroup.removeItemRenderer(ir); > > + // var ir:ISelectableItemRenderer = > > dataGroup.getElementAt(event.index) as ISelectableItemRenderer; > > + // dataGroup.removeItemRenderer(ir); > > > > - // adjust the itemRenderers' index to adjust for > > the shift > > - var n:int = dataGroup.numElements; > > - for (var i:int = event.index; i < n; i++) > > - { > > - ir = dataGroup.getElementAt(i) as > > ISelectableItemRenderer; > > - ir.index = i; > > + // // adjust the itemRenderers' index to adjust for > > the shift > > + // var n:int = dataGroup.numElements; > > + // for (var i:int = event.index; i < n; i++) > > + // { > > + // ir = dataGroup.getElementAt(i) as > > ISelectableItemRenderer; > > + // ir.index = i; > > > > - // could let the IR know its index has > > been changed (eg, it might change its > > - // UI based on the index). Instead > (PAYG), > > allow another bead to detect > > - // this event and do this as not every IR > > will need to be updated. > > - //var ubase:UIItemRendererBase = ir as > > UIItemRendererBase; > > - //if (ubase) ubase.updateRenderer() > > - } > > + // // could let the IR know its index has > > been changed (eg, it might change its > > + // // UI based on the index). Instead > (PAYG), > > allow another bead to detect > > + // // this event and do this as not every IR > > will need to be updated. > > + // //var ubase:UIItemRendererBase = ir as > > UIItemRendererBase; > > + // //if (ubase) ubase.updateRenderer() > > + // } > > > > - (_strand as IEventDispatcher).dispatchEvent(new > > Event("layoutNeeded")); > > - } > > + // (_strand as IEventDispatcher).dispatchEvent(new > > Event("layoutNeeded")); > > + // } > > > > /** > > * @private > > * @royaleignorecoercion > > org.apache.royale.collections.ICollectionView > > * @royaleignorecoercion > > org.apache.royale.core.ISelectableItemRenderer > > */ > > - protected function > > itemUpdatedHandler(event:CollectionEvent):void > > - { > > - if (!dataProviderModel) > > - return; > > - var dp:ICollectionView = > > dataProviderModel.dataProvider as ICollectionView; > > - if (!dp) > > - return; > > + // protected function > > itemUpdatedHandler(event:CollectionEvent):void > > + // { > > + // if (!dataProviderModel) > > + // return; > > + // var dp:ICollectionView = > > dataProviderModel.dataProvider as ICollectionView; > > + // if (!dp) > > + // return; > > > > - // update the given renderer with (possibly) new > > information so it can change its > > - // appearence or whatever. > > - var ir:ISelectableItemRenderer = > > dataGroup.getElementAt(event.index) as ISelectableItemRenderer; > > - setData(ir, event.item, event.index); > > - } > > + // // update the given renderer with (possibly) new > > information so it can change its > > + // // appearence or whatever. > > + // var ir:ISelectableItemRenderer = > > dataGroup.getElementAt(event.index) as ISelectableItemRenderer; > > + // setData(ir, event.item, event.index); > > + // } > > > > /** > > * @private > > 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 da09088..e064583 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 > > @@ -176,11 +176,13 @@ package org.apache.royale.jewel.beads.itemRenderers > > if (!dp) > > return; > > > > + // remove this and better add beads when needed > > // listen for individual items being added in the > > future. > > - var dped:IEventDispatcher = dp as > IEventDispatcher; > > - dped.addEventListener(CollectionEvent.ITEM_ADDED, > > itemAddedHandler); > > - > > dped.addEventListener(CollectionEvent.ITEM_REMOVED, itemRemovedHandler); > > - > > dped.addEventListener(CollectionEvent.ITEM_UPDATED, itemUpdatedHandler); > > + // var dped:IEventDispatcher = dp as > > IEventDispatcher; > > + // > > dped.addEventListener(CollectionEvent.ITEM_ADDED, itemAddedHandler); > > + // > > dped.addEventListener(CollectionEvent.ITEM_REMOVED, itemRemovedHandler); > > + // > > dped.addEventListener(CollectionEvent.ITEM_UPDATED, itemUpdatedHandler); > > + > > > > // THEAD - remove header items > > removeElements(view.thead); > > @@ -207,6 +209,7 @@ package org.apache.royale.jewel.beads.itemRenderers > > > > if(column.itemRenderer != null) > > { > > + trace("create ir: " + > > column.itemRenderer); > > ir = column.itemRenderer.newInstance() as > > ITextItemRenderer; > > } else > > { > > @@ -324,9 +327,9 @@ package org.apache.royale.jewel.beads.itemRenderers > > * @royaleignorecoercion > > org.apache.royale.core.ISelectableItemRenderer > > * @royaleignorecoercion > > org.apache.royale.events.IEventDispatcher > > */ > > - protected function > > itemAddedHandler(event:CollectionEvent):void > > - { > > - } > > + // protected function > > itemAddedHandler(event:CollectionEvent):void > > + // { > > + // } > > > > /** > > * @private > > @@ -335,17 +338,17 @@ package org.apache.royale.jewel.beads.itemRenderers > > * @royaleignorecoercion > > org.apache.royale.core.ISelectableItemRenderer > > * @royaleignorecoercion > > org.apache.royale.events.IEventDispatcher > > */ > > - protected function > > itemRemovedHandler(event:CollectionEvent):void > > - { > > - } > > + // protected function > > itemRemovedHandler(event:CollectionEvent):void > > + // { > > + // } > > > > /** > > * @private > > * @royaleignorecoercion > > org.apache.royale.collections.ICollectionView > > * @royaleignorecoercion > > org.apache.royale.core.ISelectableItemRenderer > > */ > > - protected function > > itemUpdatedHandler(event:CollectionEvent):void > > - { > > - } > > + // protected function > > itemUpdatedHandler(event:CollectionEvent):void > > + // { > > + // } > > } > > } > > \ No newline at end of file > > > > > > -- > Carlos Rovira > http://about.me/carlosrovira > > > >
