Alex, I do understand that, but in the results of that event which are coming from ArrayList I need to do action on object (IItemRendererParent) and remove those item renderers. - This part along with listeners to that event should be done by bead. As I understand Peter is digging in that area. No matter whether his changes directly resolve my problems or not I prefer wait for them.
I can always write my own beads and have it as part of the application - That's not the problem. Thanks a lot for the inputs! Piotr 2017-12-05 19:35 GMT+01:00 Alex Harui <aha...@adobe.com.invalid>: > In Flex, you can call ArrayList.removeItemAt and generate an ITEM_REMOVED > for each call, or set the source of the ArrayList which triggers a > different event as well. > > So as Peter is saying, for Royale, there will similarly be two different > events and two different ways to remove items (individually or all at > once) and you get to choose. If you only have a few items in the list, > you might want to call itemRemoved several times and attach some cool > remove effect. > > My 2 cents, > -Alex > > On 12/5/17, 8:15 AM, "Peter Ent" <p...@adobe.com.INVALID> wrote: > > >If you remove everything from the ArrayList, the ArrayList dispatches > >ITEM_REMOVED for each item (if you have 1000 items you will get 1000 > >events). ArrayList should probably not do that and instead, dispatch a > >single COLLECTION_CHANGED event once completed. > > > >But the RemoveItemBead will in fact, handle each ITEM_REMOVED event and > >eventually clear out the list. To be more efficient, another bead should > >be made since DataItemRendererFactoryForArrayList does not listen to > >COLLECTION_CHANGED (perhaps it should or perhaps we need a new PAYG > >enhanced version of that). > > > >I have also been toying with just updating > >DynamicItemsRenderFactoryForArrayList to make it handle all the cases and > >forget the individual beads. You can pay little by using the > >DataItemRendererFactoryForArrayList bead if you just want to display a > >static list or pay it all and use DynamicItemsRendererFactoryForArrayList > >even though you may only be inserting and never removing items. > > > >—peter > > > > > > > >On 12/5/17, 10:17 AM, "Piotr Zarzycki" <piotrzarzyck...@gmail.com> wrote: > > > >>However those two beads are for remove single items? What if I remove > >>everything from the ArrayList? > >> > >>On Tue, Dec 5, 2017, 16:16 Piotr Zarzycki <piotrzarzyck...@gmail.com> > >>wrote: > >> > >>> Those two beads will handle remove/add, so will I be able to use it for > >>> list? > >>> > >>> It look like all your upcoming changes is something which I need for. > >>> > >>> I'm look forward to your commit! > >>> > >>> Thanks, Piotr > >>> > >>> On Tue, Dec 5, 2017, 16:03 Peter Ent <p...@adobe.com.invalid> wrote: > >>> > >>>> I am working on an AddItemBead and RemoveItemBead. These beads assume > >>>>the > >>>> dataProvider in the model are ArrayList since that collection > >>>>dispatches > >>>> CollectionEvents with itemAdded and itemRemoved events. So these beads > >>>> will either add an item to the DataGroup or remove one. Then they will > >>>> adjust the model's selectedItem and selectedIndex accordingly. > >>>> > >>>> These will be beads of the DataItemRendererFactoryForArrayList and > not > >>>> beads on the List itself. I'm having to change > >>>> DataItemRendererFactoryForArrayList to make things more public since > >>>>it > >>>> isn't trivial to add or remove an itemRenderer. > >>>> > >>>> —peter > >>>> > >>>> On 12/5/17, 9:51 AM, "Piotr Zarzycki" <piotrzarzyck...@gmail.com> > >>>>wrote: > >>>> > >>>> >Hi Peter, > >>>> > > >>>> >I see that and there is question whether I can put that code as a > >>>> separate > >>>> >bead to our repo and whether you are not going to do this? > >>>> >You have started other thread about Tree Grid and beads mentioned by > >>>>you > >>>> >seems to be the answer. Let me know before I create something. > >>>> > > >>>> >Thanks, Piotr > >>>> > > >>>> >On Tue, Dec 5, 2017, 15:43 Peter Ent <p...@adobe.com.invalid> wrote: > >>>> > > >>>> >> I think some of this changes when you are running in the browser. > >>>>Does > >>>> >>our > >>>> >> framework code really need to know if an item is visible or not to > >>>> >>remove > >>>> >> it? You want it gone from the DOM so you need to remove it and the > >>>> >>browser > >>>> >> takes care of the visuals. Depending on the CSS for that container, > >>>> >>things > >>>> >> would probably just sort themselves out - no need to fool with > >>>> >>scrollbars > >>>> >> either as they are the responsibility of the browser. On the > >>>>browser > >>>> >> platform, adding a remove function would not, I think, be as costly > >>>>as > >>>> >>it > >>>> >> would on the Flash platform. > >>>> >> > >>>> >> Now the selectedItem and selectedIndex are, of course, Royale > >>>>things so > >>>> >> that would need to be considered. But that's the same as for adding > >>>>or > >>>> >> inserting an item into a list. Again, the browser should take care > >>>>of > >>>> >>the > >>>> >> visuals once the item is added to the DOM. If the item has been > >>>>tagged > >>>> >> properly for CSS, you wouldn't even need to trigger the Royale > >>>>layout. > >>>> >> > >>>> >> As a side note, the reason the Group does not have a default layout > >>>>is > >>>> >>to > >>>> >> allow you to make a DIV (the Group), put stuff into it, and style > >>>>it so > >>>> >> that the "layout" is handled in CSS. This way added, removing, > >>>>changing > >>>> >>is > >>>> >> left up the browser with no need for Royale code support since the > >>>> >>browser > >>>> >> has all the code already and your Royale payload can be smaller. > >>>>You > >>>> >>only > >>>> >> need to "pay" if you want a layout that cannot be accomplished with > >>>> CSS. > >>>> >> > >>>> >> Supporting virtualized list is a completely different matter. HTML > >>>> >>doesn't > >>>> >> support that and then what Alex says really comes into play there. > >>>> >> > >>>> >> Back the question about removing all the rows. The DataGroup has a > >>>> >> function to remove all of the itemRenderers. You need to trigger > >>>>that > >>>> >> somehow - either in your own code or perhaps a bead. Then clean up > >>>>the > >>>> >> selectedItem/selectedIndex in the model. > >>>> >> > >>>> >> ‹peter > >>>> >> > >>>> >> On 12/5/17, 12:03 AM, "Alex Harui" <aha...@adobe.com.INVALID> > >>>>wrote: > >>>> >> > >>>> >> >In general, removing stuff should be PAYG. Not every app needs to > >>>> >>remove > >>>> >> >things, and removal is often way more expensive than adding. > >>>> >> > > >>>> >> >For example, when an item is added to a sophisticated list, the > >>>> various > >>>> >> >beads have to do these things: > >>>> >> >1) figure out if the item is on screen and a new renderer needs to > >>>>be > >>>> >> >added. > >>>> >> >2) figure out if the item was added before the selectedIndex so > >>>>the > >>>> >> >selectedIndex needs to be updated > >>>> >> >3) update the scrollbar (if any). > >>>> >> > > >>>> >> >When removing, the various beads have more to do: > >>>> >> >1) figure out if the item is on screen and its renderer needs to > >>>>be > >>>> >> >removed. > >>>> >> >2) figure out if the renderer removed is on the last visible page > >>>>of > >>>> >>the > >>>> >> >list and scrollbars are up and the item that will take up the > >>>>removed > >>>> >> >renderer needs to come from a lower index in the data provider > >>>> >> >3) figure out if the item was added before the selectedIndex so > >>>>the > >>>> >> >selectedIndex needs to be updated > >>>> >> >4) figure out if the item removed was the selectedIndex and thus > >>>> decide > >>>> >> >what to do about selectedIndex and selectedItem > >>>> >> >5) update the scrollbar (if any). > >>>> >> > > >>>> >> >HTH, > >>>> >> >-Alex > >>>> >> > > >>>> >> > > >>>> >> >On 12/4/17, 5:08 PM, "Peter Ent" <p...@adobe.com.INVALID> wrote: > >>>> >> > > >>>> >> >>I need to think about this for a bit because I¹m fiddling with > >>>>this > >>>> >>bit > >>>> >> >>of code in List. I¹ll get back to you in my tomorrow. > >>>> >> >> > >>>> >> >>Peter > >>>> >> >> > >>>> >> >> > >>>> >> >>> On Dec 4, 2017, at 4:53 PM, Piotr Zarzycki > >>>> >><piotrzarzyck...@gmail.com> > >>>> >> >>>wrote: > >>>> >> >>> Hi Guys, > >>>> >> >>> > >>>> >> >>> I have faced an issue where solution seems to be not so easy. I > >>>> have > >>>> >> >>>MDL > >>>> >> >>> Table (issue affects also List) with some rows. > >>>> >> >>> > >>>> >> >>> If I simply assign to dataProvider = null it doesn't remove all > >>>> >> >>>content. It > >>>> >> >>> is because in our DataItemRendererFactoryForArrayData and > other > >>>> >>type of > >>>> >> >>> that class we have in listeners of "dataProviderChanged" this > >>>>code > >>>> >> >>>[1]. > >>>> >> >>> Basically if we assign null to dataProvider we are not cleaning > >>>>up > >>>> >>item > >>>> >> >>> renderers, but should we ? > >>>> >> >>> > >>>> >> >>> Maybe there should be separate bead which allow to do such > >>>> >>operations ? > >>>> >> >>> > >>>> >> >>> Thoughts ? > >>>> >> >>> > >>>> >> >>> [1] > >>>> >> > >>>> >>>>>* > >>>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpast > >>>> >>>>>e > >>>> >> . > >>>> >> >>>a > >>>> >> >>>pache.org%2F6qVy&data=02%7C01%7Cpent%40adobe.com > >>>> >> %7C05ca01d43a8448485bd50 > >>>> >> >>>8 > >>>> >> > >>>> > >>>> > >>>>>>>>>d53b617760%7Cfa7b1b5a7b34438794aed2c178de > cee1%7C0%7C0%7C6364802121 > >>>>>>>>>6 > >>>>>>>>>449 > >>>> >>>>>91 > >>>> >> >>>9 > >>>> >> > >>>>>>>9&sdata=6mmrQ1g5CRuRmRyRpSLNil3LUn93jAKTJVI6RHSocL8%3D&reserved=0 > >>>> >> > >>>> >>>>>< > >>>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpast > >>>> >>>>>e > >>>> >> . > >>>> >> >>>a > >>>> >> >>>pache.org%2F6qVy&data=02%7C01%7Cpent%40adobe.com > >>>> >> %7C05ca01d43a8448485bd50 > >>>> >> >>>8 > >>>> >> > >>>> > >>>> > >>>>>>>>>d53b617760%7Cfa7b1b5a7b34438794aed2c178de > cee1%7C0%7C0%7C6364802121 > >>>>>>>>>6 > >>>>>>>>>449 > >>>> >>>>>91 > >>>> >> >>>9 > >>>> >> > >>>>>>>9&sdata=6mmrQ1g5CRuRmRyRpSLNil3LUn93jAKTJVI6RHSocL8%3D&reserved=0>* > >>>> >> >>> > >>>> >> >>> Thanks, > >>>> >> >>> -- > >>>> >> >>> > >>>> >> >>> Piotr Zarzycki > >>>> >> >>> > >>>> >> >>> Patreon: > >>>> >> >>>* > >>>> >> > >>>> > >>>>https://na01.safelinks.protection.outlook.com/?url= > https%3A%2F%2Fwww.pa > >>>> >> >>>t > >>>> >> >>>reon.com%2Fpiotrzarzycki&data=02%7C01%7Cpent%40adobe.com > >>>> >> %7C05ca01d43a844 > >>>> >> >>>8 > >>>> >> > >>>> > >>>> > >>>>>>>>>485bd508d53b617760%7Cfa7b1b5a7b34438794aed2c178de > cee1%7C0%7C0%7C63 > >>>>>>>>>6 > >>>>>>>>>480 > >>>> >>>>>21 > >>>> >> >>>2 > >>>> >> > >>>> > >>>> > >>>>>>>>>164499199&sdata=Lh5NSyP1MPIG6h5X4eG9RW3MWcQMiM > BDevLzt8WoPS4%3D&res > >>>>>>>>>e > >>>>>>>>>rve > >>>> >>>>>d= > >>>> >> >>>0 > >>>> >> >>> > >>>> >> >>>< > >>>> >> > >>>> > >>>>https://na01.safelinks.protection.outlook.com/?url= > https%3A%2F%2Fwww.pa > >>>> >> >>>t > >>>> >> >>>reon.com%2Fpiotrzarzycki&data=02%7C01%7Cpent%40adobe.com > >>>> >> %7C05ca01d43a844 > >>>> >> >>>8 > >>>> >> > >>>> > >>>> > >>>>>>>>>485bd508d53b617760%7Cfa7b1b5a7b34438794aed2c178de > cee1%7C0%7C0%7C63 > >>>>>>>>>6 > >>>>>>>>>480 > >>>> >>>>>21 > >>>> >> >>>2 > >>>> >> > >>>> > >>>> > >>>>>>>>>164499199&sdata=Lh5NSyP1MPIG6h5X4eG9RW3MWcQMiM > BDevLzt8WoPS4%3D&res > >>>>>>>>>e > >>>>>>>>>rve > >>>> >>>>>d= > >>>> >> >>>0 > >>>> >> >>>>* > >>>> >> > > >>>> >> > >>>> >> > >>>> > >>>> > > > > -- Piotr Zarzycki Patreon: *https://www.patreon.com/piotrzarzycki <https://www.patreon.com/piotrzarzycki>*