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
>
>
>
>

Reply via email to