Greg, I have fixed issues with navigation in my application code. I'm ok with changes in that branch.
Thanks for all changes! Piotr sob., 22 gru 2018 o 10:18 Piotr Zarzycki <[email protected]> napisał(a): > Greg, > > In your app are you using navigation in that way? > Maybe I need to call some prevent method somewhere. > > Thanks, > Piotr > > On Sat, Dec 22, 2018, 9:57 AM Piotr Zarzycki <[email protected]> > wrote: > >> Greg, >> >> Good news. I was able to build framework using ant and produce IDE >> artifacts. Tested your changes and looks good. However I see other issue. I >> have following code [1]. When I click on link in navigation (I'm listening >> on change event) - I'm trying to change view using ApplicationMainContent - >> it's navigates me to new website with new url instead changing view. >> >> I need to investigate why it is happen. Apart of that I believe we are ok >> with that branch. >> >> [1] https://paste.apache.org/UzJI >> >> Thanks, Piotr >> >> >> pt., 21 gru 2018 o 09:29 Greg Dove <[email protected]> napisał(a): >> >>> Ok Piotr, I'm not sure what is happening there. It does seem strange - >>> shell.view.royale.Shell seems like a class and somehow has org >>> <http://shell.view.royale.shell.org/>.apache.royale.jewel.Application >>> appended to it. >>> >>> I don't think that is related to anything I did (and it works fine >>> against >>> the 'real-world' app I tested against - with maven build). Can you build >>> Tour de Jewel ok? >>> >>> >>> >>> >>> >>> On Fri, Dec 21, 2018 at 9:04 PM Piotr Zarzycki < >>> [email protected]> >>> wrote: >>> >>> > Hi Greg, >>> > >>> > Thanks for your changes. Unfortunately I'm not able so far properly >>> build >>> > my real world app using Maven. I build Jewel module by Maven, so I have >>> > setup my app to be buildable with Maven. Unfortunately I'm getting >>> weird >>> > exception during running app. >>> > >>> > SimpleCSSValuesImpl.js:102 Uncaught TypeError: Cannot read property >>> > 'string' of undefined >>> > at >>> > >>> > >>> org.apache.royale.core.AllCSSValuesImpl.org.apache.royale.core.SimpleCSSValuesImpl.init >>> > (SimpleCSSValuesImpl.js:102) >>> > at >>> > shell.view.royale.Shell.org >>> > .apache.royale.jewel.Application.set__valuesImpl >>> > (Application.js:311) >>> > at shell.view.royale.Shell.org.apache.royale.jewel.Application [as >>> > constructor] (Application.js:46) >>> > at Function.childCtor.base (base.js:2515) >>> > >>> > Above exception is not occurs when I'm building using Nightly. I >>> probably >>> > will have to build framework by ant and prepare IDE compatible >>> environment >>> > or will try to rebuild whole framework by Maven and try again. >>> > >>> > Thanks, Piotr >>> > >>> > czw., 20 gru 2018 o 10:49 Piotr Zarzycki <[email protected]> >>> > napisał(a): >>> > >>> > > Hi Greg, >>> > > >>> > > Great news, cause I was going to look into that somewhere between >>> > > Christmas and New Year. I would be happy to test your changes! Do not >>> > > hesitate push it! >>> > > >>> > > Thank you so much! >>> > > Piotr >>> > > >>> > > czw., 20 gru 2018 o 10:39 Greg Dove <[email protected]> >>> napisał(a): >>> > > >>> > >> Piotr, Alex, >>> > >> >>> > >> fyi I found some time to spend on this today, and Piotr, I should be >>> > ready >>> > >> to push the changes I made to your branch tomorrow morning my time >>> > (local >>> > >> time - GMT+13). >>> > >> It seems to be fine so far with 'selectionChange' for binding based >>> on >>> > >> model changes and 'change' for class event meta. I have been been >>> > testing >>> > >> so far against Tour de Jewel, but I will test against our real-world >>> > >> project as well before I push to your branch Piotr. >>> > >> >>> > >> -Greg >>> > >> >>> > >> >>> > >> >>> > >> >>> > >> On Wed, Dec 19, 2018 at 7:45 AM Greg Dove <[email protected]> >>> wrote: >>> > >> >>> > >> > Alex, I can't remember offhand, but I think we used that once in >>> only >>> > >> one >>> > >> > place, and I did it really quickly. I am sure there will be a way >>> to >>> > >> avoid >>> > >> > it. >>> > >> > I think the bigger issue is the way I did the changes to the >>> model to >>> > >> > support dispatching change events for programmatic changes, which >>> I >>> > >> think >>> > >> > Piotr was looking at. >>> > >> > Maybe I can take a look at that later today, but I can't be >>> certain. >>> > >> > The simplest fix might be to revert everything I did and add >>> binding >>> > for >>> > >> > the selection changes (currently 'selectedIndexChanged' and >>> > >> > 'selectedItemChanged' which I know you say could be >>> > 'selectionChanged') >>> > >> in >>> > >> > addition to 'change' (as discussed) and make sure the component is >>> > >> > dispatching those from the model (if it does not already do so). >>> If >>> > >> > 'selectionChanged' (or whatever it is) is already happening as a >>> > result >>> > >> of >>> > >> > 'change' in addition to setter triggered changes, then it could >>> be a >>> > >> simple >>> > >> > swap for the binding event only (as discussed also) >>> > >> > >>> > >> > But this last part was also applicable to the wholesale change to >>> all >>> > >> > component sets we were discussing, not just Jewel. >>> > >> > >>> > >> > >>> > >> > >>> > >> > >>> > >> > On Wed, Dec 19, 2018 at 7:17 AM Alex Harui >>> <[email protected]> >>> > >> > wrote: >>> > >> > >>> > >> >> Greg, Carlos, >>> > >> >> >>> > >> >> Can one of you put together a simple test case that demonstrates >>> your >>> > >> >> need for this "OnStartup" bead? It doesn't need server access. >>> You >>> > >> can >>> > >> >> probably inject a dataProvider on applicationComplete or have the >>> > user >>> > >> push >>> > >> >> a button if the issue is about deferred arrival of server data. >>> > >> >> >>> > >> >> IMO, we have to be more concerned about getting the patterns >>> right >>> > >> >> regressions, and the best way to avoid getting regressions is to >>> > >> provide a >>> > >> >> simple test case that demonstrates a problem in the patterns. >>> > >> >> >>> > >> >> Hopefully, "OnStartup" beads are not going to be required and >>> won't >>> > be >>> > >> >> part of the framework. The usability of the framework will go >>> down >>> > if >>> > >> >> folks have to keep adding more and more "OnThis" and "OnThat" >>> beads >>> > to >>> > >> get >>> > >> >> their app to work. The approachability of the framework in >>> terms of >>> > >> >> documentation and number of classes won't scale either if we >>> don't >>> > get >>> > >> >> these patterns right. This doesn't mean that you can't use an >>> > >> "onStartup" >>> > >> >> bead in your app in order to meet some deadline, and share it >>> with >>> > >> others, >>> > >> >> but we have to be careful about what patterns we promote in the >>> SDK. >>> > >> >> >>> > >> >> My 2 cents, >>> > >> >> -Alex >>> > >> >> >>> > >> >> On 12/18/18, 12:17 AM, "Greg Dove" <[email protected]> wrote: >>> > >> >> >>> > >> >> Hi Piotr, >>> > >> >> >>> > >> >> I would be happy to work on it, and wish I could, but the >>> problem >>> > >> for >>> > >> >> me at >>> > >> >> the moment is that I can't make it a priority, because for >>> now at >>> > >> >> least it >>> > >> >> is functioning as we need it, and there are plenty of things >>> that >>> > >> are >>> > >> >> not >>> > >> >> (mostly unrelated to Jewel). While the implementation as it >>> > stands >>> > >> >> might >>> > >> >> not be 'right', it does function as we need it to for now. I >>> > >> suspect >>> > >> >> that >>> > >> >> is what Carlos meant when he said he was concerned about >>> > >> regressions. >>> > >> >> >>> > >> >> I have other stuff queued up to add in other areas too, like >>> > >> >> AMFBinaryData >>> > >> >> and AMFNetConnection but will need to do more work to >>> generalize >>> > >> it, >>> > >> >> as I >>> > >> >> have it these working in a way that is almost complete, but >>> > mostly >>> > >> >> focused >>> > >> >> on what is sufficient for what Carlos needs for now. >>> > >> >> >>> > >> >> I hope to get some free time in early January to finish up >>> these >>> > >> >> things. >>> > >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>> > >> >> On Tue, Dec 18, 2018 at 11:53 AM Piotr Zarzycki < >>> > >> >> [email protected]> >>> > >> >> wrote: >>> > >> >> >>> > >> >> > Hi Guys, >>> > >> >> > >>> > >> >> > I definitely need to a way of resolve that problem. I will >>> > review >>> > >> >> emails >>> > >> >> > tomorrow. >>> > >> >> > >>> > >> >> > However if you Greg would like to try something go for it. >>> > Would >>> > >> be >>> > >> >> great >>> > >> >> > if you could use my branch where changes which removes >>> > >> dispatching >>> > >> >> "change" >>> > >> >> > event from model are in place. >>> > >> >> > >>> > >> >> > Thanks, Piotr >>> > >> >> > >>> > >> >> > pon., 17 gru 2018 o 23:46 Alex Harui >>> <[email protected] >>> > > >>> > >> >> > napisał(a): >>> > >> >> > >>> > >> >> > > Hi Greg, >>> > >> >> > > >>> > >> >> > > I haven't looked at how pervasive this change would be. >>> I'm >>> > >> >> mainly >>> > >> >> > saying >>> > >> >> > > that Flex worked with these categories of events and I >>> think >>> > >> >> Royale can >>> > >> >> > too >>> > >> >> > > and would eliminate the need for DispatchChangeOnStartup >>> and >>> > >> >> things like >>> > >> >> > > that. >>> > >> >> > > >>> > >> >> > > You could be right that the models only need to dispatch >>> > >> >> selectionChange >>> > >> >> > > and not "change", as long as the controllers are >>> guaranteed >>> > to >>> > >> >> update the >>> > >> >> > > model in a way that fires selectionChange. I have this >>> > feeling >>> > >> >> that in >>> > >> >> > > Flex there were some backdoors for updating properties >>> > without >>> > >> >> > dispatching >>> > >> >> > > events and dispatching the event "later", but I don't >>> think >>> > >> we've >>> > >> >> had to >>> > >> >> > > write such code in Royale and maybe we won't have to or >>> can't >>> > >> >> because the >>> > >> >> > > browser will update right away in many cases. There were >>> > >> >> somethings you >>> > >> >> > > could do in Flash knowing that all rendering was >>> deferred to >>> > >> frame >>> > >> >> > > updates. In Royale, with separate models, the controller >>> > code >>> > >> >> can't just >>> > >> >> > > set the backing variable. >>> > >> >> > > >>> > >> >> > > So, if you want to give it a try having only >>> selectionChange >>> > as >>> > >> >> the >>> > >> >> > > bindable event, go for it. >>> > >> >> > > >>> > >> >> > > -Alex >>> > >> >> > > >>> > >> >> > > On 12/17/18, 12:35 PM, "Greg Dove" <[email protected]> >>> > >> wrote: >>> > >> >> > > >>> > >> >> > > Thanks Alex. >>> > >> >> > > >>> > >> >> > > I only looked in Basic TextInput because I was >>> looking >>> > for >>> > >> a >>> > >> >> simpler >>> > >> >> > > example of the general case being discussed. That >>> code >>> > >> looks >>> > >> >> like it >>> > >> >> > > might >>> > >> >> > > need some work on the swf side in any case. >>> > >> >> > > I was just looking for the 'programmaticChange' vs >>> > >> >> > > 'userInitiatedChange' >>> > >> >> > > differences. >>> > >> >> > > >>> > >> >> > > Based on a quick look at the other Basic classes, the >>> > >> >> conclusions >>> > >> >> > > appear >>> > >> >> > > similar. They are bindable via 'change' only. >>> > >> >> > > And the models all dispatch both >>> selectedIndexChanged and >>> > >> >> > > selectedItemChanged. >>> > >> >> > > >>> > >> >> > > So it seems like you are proposing broad changes for >>> > >> >> everything, if >>> > >> >> > > they >>> > >> >> > > are to also support binding changes for programmatic >>> > >> changes? >>> > >> >> > > >>> > >> >> > > For me, the change in something (or nothing) being >>> > >> 'selected' >>> > >> >> > logically >>> > >> >> > > occurs as a result of either user change or >>> programmatic >>> > >> >> change. On >>> > >> >> > > that >>> > >> >> > > basis would it be possible to have the >>> selectionChange as >>> > >> the >>> > >> >> sole >>> > >> >> > > Binding >>> > >> >> > > event (which occurs from setter induced change and >>> from >>> > >> user >>> > >> >> induced >>> > >> >> > > change) and the 'change' event as user-interaction >>> only >>> > as >>> > >> >> the class >>> > >> >> > > level >>> > >> >> > > event type (as it is now)? >>> > >> >> > > >>> > >> >> > > I have not thought about this as much as you (Alex >>> and >>> > >> >> others) have, >>> > >> >> > so >>> > >> >> > > maybe that last suggestion does not make sense. But I >>> > >> really >>> > >> >> think >>> > >> >> > > that for >>> > >> >> > > whatever does make sense it would be great to settle >>> on >>> > >> >> something and >>> > >> >> > > get >>> > >> >> > > it consistent for all components asap. >>> > >> >> > > >>> > >> >> > > >>> > >> >> > > >>> > >> >> > > >>> > >> >> > > On Tue, Dec 18, 2018 at 8:43 AM Alex Harui >>> > >> >> <[email protected] >>> > >> >> > > >>> > >> >> > > wrote: >>> > >> >> > > >>> > >> >> > > > Hi Greg, >>> > >> >> > > > >>> > >> >> > > > You are correct that there is a pain point around >>> > binding >>> > >> >> overhead >>> > >> >> > > and >>> > >> >> > > > PAYG. I can't think of a PAYG way of adding the >>> > ability >>> > >> to >>> > >> >> add >>> > >> >> > more >>> > >> >> > > > binding events via beads that doesn't have too much >>> > >> >> overhead for >>> > >> >> > > folks not >>> > >> >> > > > interested in those extra events. Actually, there >>> are >>> > >> some >>> > >> >> ways >>> > >> >> > > that are >>> > >> >> > > > JS-only like replacing prototype-methods, but I >>> don't >>> > >> think >>> > >> >> we >>> > >> >> > > should rely >>> > >> >> > > > on mutable class definitions. In many cases we >>> make >>> > >> >> trade-offs >>> > >> >> > and >>> > >> >> > > Basic >>> > >> >> > > > ends up being what we think almost all folks "must >>> > have". >>> > >> >> > > > >>> > >> >> > > > When we first started out I was hoping to reduce >>> > binding >>> > >> >> overhead >>> > >> >> > > which is >>> > >> >> > > > why some of the beads look like they do, but these >>> > days I >>> > >> >> think it >>> > >> >> > > is more >>> > >> >> > > > important to separate interactive events from >>> > >> binding/setup >>> > >> >> events. >>> > >> >> > > Folks >>> > >> >> > > > who don't use a particular binding event can always >>> > >> replace >>> > >> >> the >>> > >> >> > > model and >>> > >> >> > > > top-level component with a version without events >>> they >>> > >> are >>> > >> >> not >>> > >> >> > > interested >>> > >> >> > > > in, or in the JS output, run a post-process to >>> cull out >>> > >> >> metadata. >>> > >> >> > > But >>> > >> >> > > > under the "almost all folks" rule, I think "almost >>> all >>> > >> >> folks" don't >>> > >> >> > > want to >>> > >> >> > > > run interaction handling code at setup time. >>> > Especially >>> > >> if >>> > >> >> that >>> > >> >> > > handling >>> > >> >> > > > code runs any sort of animation or does any other >>> heavy >>> > >> >> processing. >>> > >> >> > > > >>> > >> >> > > > I could be wrong, but I'm pretty sure that if you >>> just >>> > >> take >>> > >> >> a >>> > >> >> > > <select> >>> > >> >> > > > element, you can set its initial selection value >>> > without >>> > >> it >>> > >> >> > > dispatching an >>> > >> >> > > > event called "change". Then when a user selects an >>> > item >>> > >> >> you get a >>> > >> >> > > "change" >>> > >> >> > > > event. IMO, this is why "change" should be an >>> > >> interactive >>> > >> >> event >>> > >> >> > and >>> > >> >> > > not a >>> > >> >> > > > binding event. >>> > >> >> > > > >>> > >> >> > > > So these are the reasons I think we should adjust >>> the >>> > >> basic >>> > >> >> beads >>> > >> >> > to >>> > >> >> > > > separate interactive events from setup events and >>> why >>> > >> >> "change" is >>> > >> >> > an >>> > >> >> > > > interactive event. >>> > >> >> > > > >>> > >> >> > > > Now, we could renew the effort to make Basic the >>> truly >>> > >> >> smallest >>> > >> >> > > > implementation and move some of this logic to >>> Express, >>> > >> but >>> > >> >> I keep >>> > >> >> > > seeing >>> > >> >> > > > code creep into Basic to handle situations that >>> almost >>> > >> all >>> > >> >> folks >>> > >> >> > > need. >>> > >> >> > > > >>> > >> >> > > > TextInput, on the other hand, has been an >>> exception of >>> > >> >> sorts in >>> > >> >> > > Flex. The >>> > >> >> > > > Flash/AIR runtime dispatches "change" on certain >>> kinds >>> > of >>> > >> >> changes. >>> > >> >> > > So >>> > >> >> > > > early implementations in Royale tried to mimic that >>> > >> >> behavior for >>> > >> >> > > folks >>> > >> >> > > > coming from Flex. But maybe we should change that >>> and >>> > >> make >>> > >> >> Basic >>> > >> >> > > TextInput >>> > >> >> > > > more consistent with browser behavior. The >>> emulation >>> > >> >> components >>> > >> >> > can >>> > >> >> > > mimic >>> > >> >> > > > the old Flex behavior. So I think using TextInput >>> as >>> > >> >> precedent is >>> > >> >> > > > misleading. >>> > >> >> > > > >>> > >> >> > > > Thoughts? >>> > >> >> > > > -Alex >>> > >> >> > > > >>> > >> >> > > > On 12/17/18, 10:55 AM, "Greg Dove" < >>> > [email protected]> >>> > >> >> wrote: >>> > >> >> > > > >>> > >> >> > > > Alex, I was giving this some more thought >>> also. I >>> > >> >> understood >>> > >> >> > > that you >>> > >> >> > > > meant >>> > >> >> > > > to add extra events for binding from your >>> previous >>> > >> >> comments. >>> > >> >> > > > >>> > >> >> > > > But isn't the established pattern to add a >>> bead to >>> > >> >> listen for >>> > >> >> > the >>> > >> >> > > > selectionChange and redispatch it as change? >>> > >> >> > > > >>> > >> >> > > > At least that seems to be the case elsewhere >>> > >> >> > > > >>> > >> >> > > > If I look at the code in Basic TextInput... >>> > >> >> > > > it dispatches 'textChange' and 'change' but is >>> only >>> > >> >> Bindable >>> > >> >> > via >>> > >> >> > > > 'change'. >>> > >> >> > > > There is effort to keep them distinct/separate. >>> > >> >> > > > (OT: It looks like the swf side needs some >>> > >> consistency >>> > >> >> in the >>> > >> >> > > html >>> > >> >> > > > setter >>> > >> >> > > > same as the text setter.) >>> > >> >> > > > >>> > >> >> > > > So TextInput appears to have 2 distinct events >>> but >>> > >> only >>> > >> >> be >>> > >> >> > > Bindable >>> > >> >> > > > for one >>> > >> >> > > > ('change'). So I presume that to make that >>> support >>> > >> >> programmatic >>> > >> >> > > > changes it >>> > >> >> > > > would be by adding a bead to listen to the >>> > >> 'textChange' >>> > >> >> and >>> > >> >> > > redispatch >>> > >> >> > > > as >>> > >> >> > > > 'change' ? >>> > >> >> > > > >>> > >> >> > > > Adding extra Bindable events adds weight >>> because it >>> > >> >> affects >>> > >> >> > > binding >>> > >> >> > > > data, >>> > >> >> > > > and creates more runtime support for the same >>> > feature >>> > >> >> in use >>> > >> >> > > cases >>> > >> >> > > > that may >>> > >> >> > > > not need it. I don't see how that can be >>> > 'PAYG-ised' >>> > >> >> because >>> > >> >> > > binding >>> > >> >> > > > support for different event types is either >>> there >>> > at >>> > >> >> compile >>> > >> >> > > time or >>> > >> >> > > > it is >>> > >> >> > > > not in the component. So if the above is true >>> for >>> > >> >> TextInput (at >>> > >> >> > > this >>> > >> >> > > > stage >>> > >> >> > > > it's a guess/observation, I did not try this >>> yet), >>> > >> then >>> > >> >> could >>> > >> >> > it >>> > >> >> > > not be >>> > >> >> > > > similar for selection based components? >>> > >> >> > > > >>> > >> >> > > > To me 'change' seems like something generic and >>> > does >>> > >> >> not sound >>> > >> >> > > > specific to >>> > >> >> > > > being user-initiated change. My understanding >>> is >>> > that >>> > >> >> it just >>> > >> >> > > happens >>> > >> >> > > > to be >>> > >> >> > > > that way by default, unless you configure it to >>> > >> include >>> > >> >> > > programmatic >>> > >> >> > > > changes via bead. >>> > >> >> > > > If it is like this for Basic TextInput, why >>> can it >>> > >> not >>> > >> >> be the >>> > >> >> > > same for >>> > >> >> > > > other components ? ( >>> > >> >> > > > >>> > >> >> > > > >>> > >> >> > > > >>> > >> >> > > > On Tue, Dec 18, 2018 at 7:32 AM Alex Harui >>> > >> >> > > <[email protected]> >>> > >> >> > > > wrote: >>> > >> >> > > > >>> > >> >> > > > > I took a quick look at ArrayListSelection. >>> It >>> > >> could >>> > >> >> use some >>> > >> >> > > > > improvements, such as only dispatching a >>> single >>> > >> >> > > selectionChange event >>> > >> >> > > > > instead of both selectedIndexChange and >>> > >> >> selectedItemChange. >>> > >> >> > > > > >>> > >> >> > > > > Some controller should dispatch the "change" >>> > event, >>> > >> >> not the >>> > >> >> > > model. >>> > >> >> > > > > >>> > >> >> > > > > I took a quick look at List.as, (a top level >>> > >> >> component). It >>> > >> >> > > should >>> > >> >> > > > have >>> > >> >> > > > > bindable metadata that looks like this: >>> > >> >> > > > > >>> > >> >> > > > > [Bindable("change")] >>> > >> >> > > > > [Bindable("selectionChange")] >>> > >> >> > > > > public function get >>> selectedIndex():int >>> > >> >> > > > > >>> > >> >> > > > > Similar for selectedItem. The [Event] >>> metadata >>> > for >>> > >> >> List is >>> > >> >> > > > correct, It >>> > >> >> > > > > should only list interactive events like >>> "change" >>> > >> and >>> > >> >> not >>> > >> >> > > bindable >>> > >> >> > > > events >>> > >> >> > > > > like selectionChange. This usually improves >>> > >> >> performance by >>> > >> >> > not >>> > >> >> > > > having the >>> > >> >> > > > > UI react to setup. >>> > >> >> > > > > >>> > >> >> > > > > Once all of those changes are made, we should >>> > >> discuss >>> > >> >> any >>> > >> >> > > remaining >>> > >> >> > > > issues. >>> > >> >> > > > > >>> > >> >> > > > > My 2 cents, >>> > >> >> > > > > -Alex >>> > >> >> > > > > >>> > >> >> > > > > On 12/17/18, 10:14 AM, "Piotr Zarzycki" < >>> > >> >> > > [email protected]> >>> > >> >> > > > > wrote: >>> > >> >> > > > > >>> > >> >> > > > > Basic ArrayListSelection model doesn't >>> > dispatch >>> > >> >> that >>> > >> >> > > event. I >>> > >> >> > > > believe >>> > >> >> > > > > we >>> > >> >> > > > > don't have to do this or rather do this >>> only >>> > if >>> > >> >> we really >>> > >> >> > > need >>> > >> >> > > > it, for >>> > >> >> > > > > example if someone make programatic >>> change of >>> > >> >> > > selectedIndex. - >>> > >> >> > > > This is >>> > >> >> > > > > general problem how to do that ? >>> > >> >> > > > > >>> > >> >> > > > > If I change selectedIndex - my model >>> dispatch >>> > >> >> > > > selectedInexChanged - >>> > >> >> > > > > where >>> > >> >> > > > > should I catch it and dispatch "change" >>> > event ? >>> > >> >> My though >>> > >> >> > > are >>> > >> >> > > > nowhere, >>> > >> >> > > > > unless someone wanted to do that and >>> have a >>> > >> bead. >>> > >> >> > > > > >>> > >> >> > > > > >>> > >> >> > > > > pon., 17 gru 2018 o 19:08 Alex Harui >>> > >> >> > > <[email protected]> >>> > >> >> > > > > napisał(a): >>> > >> >> > > > > >>> > >> >> > > > > > Hi Piotr, >>> > >> >> > > > > > >>> > >> >> > > > > > I may not be understanding your >>> problem. >>> > Not >>> > >> >> all >>> > >> >> > models >>> > >> >> > > will >>> > >> >> > > > > dispatch a >>> > >> >> > > > > > change event, but it is hard to >>> imagine a >>> > >> >> selection >>> > >> >> > > model that >>> > >> >> > > > > doesn't. >>> > >> >> > > > > > >>> > >> >> > > > > > -Alex >>> > >> >> > > > > > >>> > >> >> > > > > > On 12/17/18, 9:36 AM, "Piotr Zarzycki" >>> < >>> > >> >> > > > [email protected]> >>> > >> >> > > > > wrote: >>> > >> >> > > > > > >>> > >> >> > > > > > I will review your email again and >>> see >>> > >> what >>> > >> >> can I >>> > >> >> > do >>> > >> >> > > this. >>> > >> >> > > > > However >>> > >> >> > > > > > this one >>> > >> >> > > > > > is a second problem. First one was >>> > about >>> > >> >> > programmatic >>> > >> >> > > > change >>> > >> >> > > > > discover >>> > >> >> > > > > > - If >>> > >> >> > > > > > you are talking about that - Let me >>> > check >>> > >> >> your >>> > >> >> > > earlier >>> > >> >> > > > emails. >>> > >> >> > > > > > >>> > >> >> > > > > > Thanks, >>> > >> >> > > > > > Piotr >>> > >> >> > > > > > >>> > >> >> > > > > > pon., 17 gru 2018 o 18:30 Alex >>> Harui >>> > >> >> > > > <[email protected]> >>> > >> >> > > > > > napisał(a): >>> > >> >> > > > > > >>> > >> >> > > > > > > FWIW, I would much rather see >>> energy >>> > >> >> spent on >>> > >> >> > > trying to >>> > >> >> > > > > implement the >>> > >> >> > > > > > > patterns I suggested earlier, >>> which >>> > >> will >>> > >> >> > hopefully >>> > >> >> > > > eliminate >>> > >> >> > > > > the >>> > >> >> > > > > > need for >>> > >> >> > > > > > > DispatchChangeOnStartup. >>> > >> >> > > > > > > >>> > >> >> > > > > > > My 2 cents, >>> > >> >> > > > > > > -Alex >>> > >> >> > > > > > > >>> > >> >> > > > > > > On 12/17/18, 4:34 AM, "Piotr >>> > Zarzycki" >>> > >> < >>> > >> >> > > > > [email protected]> >>> > >> >> > > > > > wrote: >>> > >> >> > > > > > > >>> > >> >> > > > > > > Carlos, >>> > >> >> > > > > > > >>> > >> >> > > > > > > I don't understand this >>> sentence >>> > >> -> " >>> > >> >> If not >>> > >> >> > > we can >>> > >> >> > > > get >>> > >> >> > > > > involved >>> > >> >> > > > > > in >>> > >> >> > > > > > > pursues >>> > >> >> > > > > > > problems >>> > >> >> > > > > > > that are not real." - What >>> do you >>> > >> >> mean here ? >>> > >> >> > > > > > > >>> > >> >> > > > > > > Ok I can wait for Alex >>> review. >>> > >> >> > > > > > > >>> > >> >> > > > > > > However your review and look >>> into >>> > >> >> above >>> > >> >> > problem >>> > >> >> > > > doesn't >>> > >> >> > > > > need >>> > >> >> > > > > > Alex's >>> > >> >> > > > > > > attention. This bead >>> > >> >> > (DispatchChangeOnStartup) >>> > >> >> > > > probably >>> > >> >> > > > > won't >>> > >> >> > > > > > work >>> > >> >> > > > > > > doesn't >>> > >> >> > > > > > > matter if we fix programmatic >>> > >> change >>> > >> >> or not. >>> > >> >> > - >>> > >> >> > > > Unless I >>> > >> >> > > > > bring >>> > >> >> > > > > > back >>> > >> >> > > > > > > dispatching "change" event >>> from >>> > >> model >>> > >> >> - which >>> > >> >> > > rather >>> > >> >> > > > is not >>> > >> >> > > > > > > recommended in >>> > >> >> > > > > > > previous discussion. >>> > >> >> > > > > > > >>> > >> >> > > > > > > Thanks, Piotr >>> > >> >> > > > > > > >>> > >> >> > > > > > > pon., 17 gru 2018 o 13:14 >>> Carlos >>> > >> >> Rovira < >>> > >> >> > > > > [email protected] >>> > >> >> > > > > > > >>> > >> >> > > > > > > napisał(a): >>> > >> >> > > > > > > >>> > >> >> > > > > > > > Hi Piotr, >>> > >> >> > > > > > > > >>> > >> >> > > > > > > > I think we should solve >>> first >>> > the >>> > >> >> > programatic >>> > >> >> > > > change so >>> > >> >> > > > > I can >>> > >> >> > > > > > test >>> > >> >> > > > > > > the >>> > >> >> > > > > > > > branch and see >>> regressions. If >>> > >> not >>> > >> >> we can >>> > >> >> > get >>> > >> >> > > > involved in >>> > >> >> > > > > > pursues >>> > >> >> > > > > > > problems >>> > >> >> > > > > > > > that are not real. I think >>> Alex >>> > >> >> missed this >>> > >> >> > > > discussion. >>> > >> >> > > > > I'll >>> > >> >> > > > > > point >>> > >> >> > > > > > > him in >>> > >> >> > > > > > > > this thread to see if he >>> can >>> > give >>> > >> >> his >>> > >> >> > opinion >>> > >> >> > > > about the >>> > >> >> > > > > ways >>> > >> >> > > > > > you >>> > >> >> > > > > > > proposed >>> > >> >> > > > > > > > in the initial thread >>> email. >>> > >> >> > > > > > > > >>> > >> >> > > > > > > > Thanks! >>> > >> >> > > > > > > > >>> > >> >> > > > > > > > El lun., 17 dic. 2018 a las >>> > >> 10:57, >>> > >> >> Piotr >>> > >> >> > > Zarzycki >>> > >> >> > > > (< >>> > >> >> > > > > > > > [email protected] >>> >) >>> > >> >> escribió: >>> > >> >> > > > > > > > >>> > >> >> > > > > > > > > Hi Carlos, >>> > >> >> > > > > > > > > >>> > >> >> > > > > > > > > I just noticed that if >>> model >>> > do >>> > >> >> not >>> > >> >> > > dispatch >>> > >> >> > > > change >>> > >> >> > > > > event - >>> > >> >> > > > > > your >>> > >> >> > > > > > > bead >>> > >> >> > > > > > > > > DispatchChangeOnStartup >>> won't >>> > >> work >>> > >> >> > because >>> > >> >> > > it >>> > >> >> > > > simply >>> > >> >> > > > > based on >>> > >> >> > > > > > > dispatching >>> > >> >> > > > > > > > > "change" event trough >>> model. >>> > >> >> > > > > > > > > >>> > >> >> > > > > > > > > I'm wondering whether it >>> > won't >>> > >> be >>> > >> >> enough >>> > >> >> > > if that >>> > >> >> > > > bead >>> > >> >> > > > > listen >>> > >> >> > > > > > for >>> > >> >> > > > > > > > > "beadsAdded" (here I >>> think it >>> > >> >> should be >>> > >> >> > > > registered for >>> > >> >> > > > > > > "initComplete" >>> > >> >> > > > > > > > > instead) and dispatch >>> change >>> > >> >> event once. >>> > >> >> > I >>> > >> >> > > made >>> > >> >> > > > the >>> > >> >> > > > > changes >>> > >> >> > > > > > to >>> > >> >> > > > > > > that bead, >>> > >> >> > > > > > > > > but I don't have scenario >>> > which >>> > >> >> you are >>> > >> >> > > using it. >>> > >> >> > > > > > > > > >>> > >> >> > > > > > > > > Will you be able to >>> test my >>> > >> >> changes on >>> > >> >> > > your >>> > >> >> > > > > application end >>> > >> >> > > > > > using >>> > >> >> > > > > > > my >>> > >> >> > > > > > > > > branch ? Above changes >>> are >>> > not >>> > >> >> fully >>> > >> >> > > related to >>> > >> >> > > > what >>> > >> >> > > > > we are >>> > >> >> > > > > > > discussing >>> > >> >> > > > > > > > > here, so programmatic >>> change >>> > >> >> still won't >>> > >> >> > > work >>> > >> >> > > > yet. >>> > >> >> > > > > Please >>> > >> >> > > > > > review >>> > >> >> > > > > > > those >>> > >> >> > > > > > > > > changes as well [1] >>> > >> >> > > > > > > > > >>> > >> >> > > > > > > > > Those new changes are >>> just to >>> > >> >> check >>> > >> >> > > whether I >>> > >> >> > > > won't >>> > >> >> > > > > break >>> > >> >> > > > > > any of >>> > >> >> > > > > > > your >>> > >> >> > > > > > > > > functionality on >>> startup. I >>> > >> will >>> > >> >> move for >>> > >> >> > > > creating >>> > >> >> > > > > bead for >>> > >> >> > > > > > > discovering >>> > >> >> > > > > > > > > programmatic changes, but >>> > first >>> > >> >> would >>> > >> >> > like >>> > >> >> > > to >>> > >> >> > > > know >>> > >> >> > > > > whether >>> > >> >> > > > > > till now >>> > >> >> > > > > > > > > everything is working >>> fine. >>> > >> >> > > > > > > > > >>> > >> >> > > > > > > > > [1] >>> > >> >> > > > > > > > > >>> > >> >> > > > > > > > > >>> > >> >> > > > > > > > >>> > >> >> > > > > > > >>> > >> >> > > > > > >>> > >> >> > > > > >>> > >> >> > > > >>> > >> >> > > >>> > >> >> > >>> > >> >> >>> > >> >>> > >>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fapache%2Froyale-asjs%2Fcommit%2F14f6354e037e5854900ef5620581f6914bd604c4&data=02%7C01%7Caharui%40adobe.com%7Ca945ffe445614a538d4d08d664c13319%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807178284003207&sdata=ceIkx4wphA1rgpPQ1yLQEIac6MJ4HSwKxIS7nmbC3Gg%3D&reserved=0 >>> > >> >> > > > > > > > > >>> > >> >> > > > > > > > > Thanks, Piotr >>> > >> >> > > > > > > > > >>> > >> >> > > > > > > > > >>> > >> >> > > > > > > > > pt., 14 gru 2018 o 19:55 >>> > Carlos >>> > >> >> Rovira < >>> > >> >> > > > > > [email protected]> >>> > >> >> > > > > > > > > napisał(a): >>> > >> >> > > > > > > > > >>> > >> >> > > > > > > > > > Hi Piotr, >>> > >> >> > > > > > > > > > >>> > >> >> > > > > > > > > > after check example >>> code, >>> > we >>> > >> >> have: >>> > >> >> > > > > > > > > > >>> > >> >> > > > > > > > > > <j:ComboBox >>> > >> >> id="watchmenComboBox" >>> > >> >> > > > > > > >>> dataProvider="{listModel.watchmen}"> >>> > >> >> > > > > > > > > > >>> > >> ... >>> > >> >> > > > > > > > > > then NS: >>> > >> >> > > > > > > > > > >>> > >> >> > > > > > > > > > <j:NumericStepper >>> > >> >> > > > > > >>> > valueChange="watchmenComboBox.selectedIndex = >>> > >> >> > > > > > > > > > event.target.value" >>> > >> minimum="0" >>> > >> >> > > maximum="5"/> >>> > >> >> > > > > > > > > > >>> > >> >> > > > > > > > > > and finally >>> > >> >> > > > > > > > > > >>> > >> >> > > > > > > > > > <j:Label >>> > >> >> id="watchmenComboBoxResult" >>> > >> >> > > html= >>> > >> >> > > > > > > > > > >>> > >> >> > > > "{describeItem(watchmenComboBox.selectedItem)}"/> >>> > >> >> > > > > > > > > > >>> > >> >> > > > > > > > > > I think right now >>> works as >>> > >> >> expected, >>> > >> >> > > since the >>> > >> >> > > > > change is >>> > >> >> > > > > > > programatic >>> > >> >> > > > > > > > (is >>> > >> >> > > > > > > > > > not the user clicking >>> in >>> > the >>> > >> >> combo list >>> > >> >> > > and >>> > >> >> > > > selecting >>> > >> >> > > > > > other item >>> > >> >> > > > > > > > > > >>> > >> >> > > > > > > > > > So I think a bead >>> should be >>> > >> >> better in >>> > >> >> > > this >>> > >> >> > > > case, that >>> > >> >> > > > > > takes care >>> > >> >> > > > > > > of >>> > >> >> > > > > > > > this >>> > >> >> > > > > > > > > > behavior. >>> > >> >> > > > > > > > > > >>> > >> >> > > > > > > > > > I'm interested in Alex >>> > >> response >>> > >> >> about >>> > >> >> > > how to >>> > >> >> > > > handle >>> > >> >> > > > > it >>> > >> >> > > > > > > > > > >>> > >> >> > > > > > > > > > Thanks Piotr for >>> working on >>> > >> this >>> > >> >> > > > > > > > > > >>> > >> >> > > > > > > > > > Carlos >>> > >> >> > > > > > > > > > >>> > >> >> > > > > > > > > > >>> > >> >> > > > > > > > > > >>> > >> >> > > > > > > > > > El vie., 14 dic. 2018 >>> a las >>> > >> >> 17:02, >>> > >> >> > Piotr >>> > >> >> > > > Zarzycki (< >>> > >> >> > > > > > > > > > >>> [email protected] >>> > >) >>> > >> >> escribió: >>> > >> >> > > > > > > > > > >>> > >> >> > > > > > > > > > > Hi Carlos, >>> > >> >> > > > > > > > > > > >>> > >> >> > > > > > > > > > > I have created issue >>> [1] >>> > >> and >>> > >> >> branch >>> > >> >> > > [2] for >>> > >> >> > > > > problem with >>> > >> >> > > > > > double >>> > >> >> > > > > > > > > dispatch >>> > >> >> > > > > > > > > > > "change" event. >>> > >> >> > > > > > > > > > > I have pushed changes >>> > when >>> > >> I'm >>> > >> >> > > removing from >>> > >> >> > > > > > > ArrayListSelectionModel >>> > >> >> > > > > > > > > > > dispatch of change >>> event. >>> > >> >> > > > > > > > > > > >>> > >> >> > > > > > > > > > > Above action >>> successfully >>> > >> fix >>> > >> >> however >>> > >> >> > > like I >>> > >> >> > > > > thought it's >>> > >> >> > > > > > > introduces >>> > >> >> > > > > > > > > > > another one which I >>> would >>> > >> >> like to >>> > >> >> > > discuss >>> > >> >> > > > how to >>> > >> >> > > > > fix. I >>> > >> >> > > > > > have >>> > >> >> > > > > > > deployed >>> > >> >> > > > > > > > > > > temporary Tour De >>> Jewel >>> > >> here >>> > >> >> [3] in >>> > >> >> > > order to >>> > >> >> > > > show >>> > >> >> > > > > you >>> > >> >> > > > > > and to >>> > >> >> > > > > > > others >>> > >> >> > > > > > > > > that >>> > >> >> > > > > > > > > > > issue. >>> > >> >> > > > > > > > > > > >>> > >> >> > > > > > > > > > > *New Issue:* >>> > >> >> > > > > > > > > > > When you go to >>> ComboBox >>> > and >>> > >> >> try to >>> > >> >> > > change >>> > >> >> > > > > selectedIndex >>> > >> >> > > > > > using >>> > >> >> > > > > > > > > > > NumericStepper it >>> will >>> > >> >> successfully >>> > >> >> > > change >>> > >> >> > > > > selectedItem >>> > >> >> > > > > > in >>> > >> >> > > > > > > ComboBox. >>> > >> >> > > > > > > > > > > Unfortunately label >>> on >>> > the >>> > >> >> right >>> > >> >> > sight >>> > >> >> > > of >>> > >> >> > > > ComboBox >>> > >> >> > > > > won't >>> > >> >> > > > > > be >>> > >> >> > > > > > > updated. >>> > >> >> > > > > > > > > > > >>> > >> >> > > > > > > > > > > *Question is:* >>> > >> >> > > > > > > > > > > How should be >>> implemented >>> > >> >> discover of >>> > >> >> > > > programmatic >>> > >> >> > > > > > change of >>> > >> >> > > > > > > > > > selectedIndex >>> > >> >> > > > > > > > > > > and selectedItem ? >>> > >> >> > > > > > > > > > > >>> > >> >> > > > > > > > > > > *I see following >>> > options:* >>> > >> >> > > > > > > > > > > 1) We should listen >>> on >>> > >> events >>> > >> >> > > > > > > > >>> > >> >> selectedIndexChanged/selectedItemChanged >>> > >> >> > > > > > > > > > and >>> > >> >> > > > > > > > > > > dispatch "change" >>> from >>> > >> >> components >>> > >> >> > View >>> > >> >> > > bead. >>> > >> >> > > > In >>> > >> >> > > > > this way >>> > >> >> > > > > > we >>> > >> >> > > > > > > have to >>> > >> >> > > > > > > > > take >>> > >> >> > > > > > > > > > > into account places >>> where >>> > >> >> "we" as a >>> > >> >> > > component >>> > >> >> > > > > setup those >>> > >> >> > > > > > > properties >>> > >> >> > > > > > > > > > > internally - In that >>> case >>> > >> >> > > > "selectedIndexChanged" >>> > >> >> > > > > and >>> > >> >> > > > > > > > > > "selectedItemChanged" >>> > >> >> > > > > > > > > > > event shouldn't be >>> > >> dispatch. >>> > >> >> > > > > > > > > > > >>> > >> >> > > > > > > > > > > 2) Create separate >>> bead >>> > >> which >>> > >> >> allows >>> > >> >> > > discover >>> > >> >> > > > > > programmatic >>> > >> >> > > > > > > change of >>> > >> >> > > > > > > > > > > selectedIndex and >>> > >> >> selectedItem- cause >>> > >> >> > > not >>> > >> >> > > > everyone >>> > >> >> > > > > > wanted to >>> > >> >> > > > > > > have at >>> > >> >> > > > > > > > > all >>> > >> >> > > > > > > > > > > programmatic change >>> event >>> > >> in >>> > >> >> the >>> > >> >> > > component - >>> > >> >> > > > > probably >>> > >> >> > > > > > most of >>> > >> >> > > > > > > the >>> > >> >> > > > > > > > cases >>> > >> >> > > > > > > > > > > will be opposite. >>> > >> >> > > > > > > > > > > >>> > >> >> > > > > > > > > > > What others think >>> about >>> > >> that ? >>> > >> >> > > > > > > > > > > >>> > >> >> > > > > > > > > > > [1] >>> > >> >> > > > > > > >>> > >> >> > > > > > >>> > >> >> > > > > >>> > >> >> > > > >>> > >> >> > > >>> > >> >> > >>> > >> >> >>> > >> >>> > >>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fapache%2Froyale-asjs%2Fissues%2F353&data=02%7C01%7Caharui%40adobe.com%7Ca945ffe445614a538d4d08d664c13319%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807178284013217&sdata=i2ZNUl1KvL60iqlZt888Q0aowpNvTaVnyQqgFGAvCVs%3D&reserved=0 >>> > >> >> > > > > > > > > > > [2] >>> > >> >> > > > > > > > > > > >>> > >> >> > > > > > > > > > > >>> > >> >> > > > > > > > > > >>> > >> >> > > > > > > > > >>> > >> >> > > > > > > > >>> > >> >> > > > > > > >>> > >> >> > > > > > >>> > >> >> > > > > >>> > >> >> > > > >>> > >> >> > > >>> > >> >> > >>> > >> >> >>> > >> >>> > >>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fapache%2Froyale-asjs%2Ftree%2Fbugfix%2Fissue_353_double_dispatch_of_change_event_in_Jewel_List&data=02%7C01%7Caharui%40adobe.com%7Ca945ffe445614a538d4d08d664c13319%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807178284013217&sdata=%2BewtJrgepDQvKgQxx4MtI3tpyoedNnwsjPFtmnfzY2A%3D&reserved=0 >>> > >> >> > > > > > > > > > > [3] >>> > >> >> > > > > > > >>> > >> >> > > > > > >>> > >> >> > > > > >>> > >> >> > > > >>> > >> >> > > >>> > >> >> > >>> > >> >> >>> > >> >>> > >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Ftranspiledactionscript.com%2Fdev%2Froyale%2F%23&data=02%7C01%7Caharui%40adobe.com%7Ca945ffe445614a538d4d08d664c13319%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807178284013217&sdata=uCD2RJp2iFdW9%2BHjScGeJKaR87qaAT6%2FUDvAgOYAk5Y%3D&reserved=0 >>> > >> >> > > > > > > > > > > >>> > >> >> > > > > > > > > > > Thanks, >>> > >> >> > > > > > > > > > > -- >>> > >> >> > > > > > > > > > > >>> > >> >> > > > > > > > > > > Piotr Zarzycki >>> > >> >> > > > > > > > > > > >>> > >> >> > > > > > > > > > > Patreon: * >>> > >> >> > > > > > > >>> > >> >> > > > > > >>> > >> >> > > > > >>> > >> >> > > > >>> > >> >> > > >>> > >> >> > >>> > >> >> >>> > >> >>> > >>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7Ca945ffe445614a538d4d08d664c13319%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807178284013217&sdata=%2BYYs6ucuVcxDBnsY%2BjPWNAhKsLBVTYWQLbIO%2F6iaze0%3D&reserved=0 >>> > >> >> > > > > > > > > > > < >>> > >> >> > > > > > > >>> > >> >> > > > > > >>> > >> >> > > > > >>> > >> >> > > > >>> > >> >> > > >>> > >> >> > >>> > >> >> >>> > >> >>> > >>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7Ca945ffe445614a538d4d08d664c13319%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807178284013217&sdata=%2BYYs6ucuVcxDBnsY%2BjPWNAhKsLBVTYWQLbIO%2F6iaze0%3D&reserved=0 >>> > >> >> > > > > > > >* >>> > >> >> > > > > > > > > > > >>> > >> >> > > > > > > > > > >>> > >> >> > > > > > > > > > >>> > >> >> > > > > > > > > > -- >>> > >> >> > > > > > > > > > Carlos Rovira >>> > >> >> > > > > > > > > > >>> > >> >> > > > > > > >>> > >> >> > > > > > >>> > >> >> > > > > >>> > >> >> > > > >>> > >> >> > > >>> > >> >> > >>> > >> >> >>> > >> >>> > >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7Ca945ffe445614a538d4d08d664c13319%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807178284013217&sdata=J1FV%2B%2B98n8X%2B63fllpZNMqVxwGiWKMZxcVmVWiQQq8w%3D&reserved=0 >>> > >> >> > > > > > > > > > >>> > >> >> > > > > > > > > >>> > >> >> > > > > > > > > >>> > >> >> > > > > > > > > -- >>> > >> >> > > > > > > > > >>> > >> >> > > > > > > > > Piotr Zarzycki >>> > >> >> > > > > > > > > >>> > >> >> > > > > > > > > Patreon: * >>> > >> >> > > > > > > >>> > >> >> > > > > > >>> > >> >> > > > > >>> > >> >> > > > >>> > >> >> > > >>> > >> >> > >>> > >> >> >>> > >> >>> > >>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7Ca945ffe445614a538d4d08d664c13319%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807178284013217&sdata=%2BYYs6ucuVcxDBnsY%2BjPWNAhKsLBVTYWQLbIO%2F6iaze0%3D&reserved=0 >>> > >> >> > > > > > > > > < >>> > >> >> > > > > > > >>> > >> >> > > > > > >>> > >> >> > > > > >>> > >> >> > > > >>> > >> >> > > >>> > >> >> > >>> > >> >> >>> > >> >>> > >>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7Ca945ffe445614a538d4d08d664c13319%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807178284013217&sdata=%2BYYs6ucuVcxDBnsY%2BjPWNAhKsLBVTYWQLbIO%2F6iaze0%3D&reserved=0 >>> > >> >> > > > > > > >* >>> > >> >> > > > > > > > > >>> > >> >> > > > > > > > >>> > >> >> > > > > > > > >>> > >> >> > > > > > > > -- >>> > >> >> > > > > > > > Carlos Rovira >>> > >> >> > > > > > > > >>> > >> >> > > > > > > >>> > >> >> > > > > > >>> > >> >> > > > > >>> > >> >> > > > >>> > >> >> > > >>> > >> >> > >>> > >> >> >>> > >> >>> > >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7Ca945ffe445614a538d4d08d664c13319%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807178284013217&sdata=J1FV%2B%2B98n8X%2B63fllpZNMqVxwGiWKMZxcVmVWiQQq8w%3D&reserved=0 >>> > >> >> > > > > > > > >>> > >> >> > > > > > > >>> > >> >> > > > > > > >>> > >> >> > > > > > > -- >>> > >> >> > > > > > > >>> > >> >> > > > > > > Piotr Zarzycki >>> > >> >> > > > > > > >>> > >> >> > > > > > > Patreon: * >>> > >> >> > > > > > > >>> > >> >> > > > > > >>> > >> >> > > > > >>> > >> >> > > > >>> > >> >> > > >>> > >> >> > >>> > >> >> >>> > >> >>> > >>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7Ca945ffe445614a538d4d08d664c13319%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807178284023226&sdata=mrx6J9BeewcazF%2F6FE8xAZlfCB72VZC15zgvIOP1JEg%3D&reserved=0 >>> > >> >> > > > > > > < >>> > >> >> > > > > > > >>> > >> >> > > > > > >>> > >> >> > > > > >>> > >> >> > > > >>> > >> >> > > >>> > >> >> > >>> > >> >> >>> > >> >>> > >>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7Ca945ffe445614a538d4d08d664c13319%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807178284023226&sdata=mrx6J9BeewcazF%2F6FE8xAZlfCB72VZC15zgvIOP1JEg%3D&reserved=0 >>> > >> >> > > > > > > >* >>> > >> >> > > > > > > >>> > >> >> > > > > > > >>> > >> >> > > > > > > >>> > >> >> > > > > > >>> > >> >> > > > > > -- >>> > >> >> > > > > > >>> > >> >> > > > > > Piotr Zarzycki >>> > >> >> > > > > > >>> > >> >> > > > > > Patreon: * >>> > >> >> > > > > > >>> > >> >> > > > > >>> > >> >> > > > >>> > >> >> > > >>> > >> >> > >>> > >> >> >>> > >> >>> > >>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7Ca945ffe445614a538d4d08d664c13319%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807178284023226&sdata=mrx6J9BeewcazF%2F6FE8xAZlfCB72VZC15zgvIOP1JEg%3D&reserved=0 >>> > >> >> > > > > > < >>> > >> >> > > > > > >>> > >> >> > > > > >>> > >> >> > > > >>> > >> >> > > >>> > >> >> > >>> > >> >> >>> > >> >>> > >>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7Ca945ffe445614a538d4d08d664c13319%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807178284023226&sdata=mrx6J9BeewcazF%2F6FE8xAZlfCB72VZC15zgvIOP1JEg%3D&reserved=0 >>> > >> >> > > > > > >* >>> > >> >> > > > > > >>> > >> >> > > > > > >>> > >> >> > > > > > >>> > >> >> > > > > >>> > >> >> > > > > -- >>> > >> >> > > > > >>> > >> >> > > > > Piotr Zarzycki >>> > >> >> > > > > >>> > >> >> > > > > Patreon: * >>> > >> >> > > > > >>> > >> >> > > > >>> > >> >> > > >>> > >> >> > >>> > >> >> >>> > >> >>> > >>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7Ca945ffe445614a538d4d08d664c13319%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807178284023226&sdata=mrx6J9BeewcazF%2F6FE8xAZlfCB72VZC15zgvIOP1JEg%3D&reserved=0 >>> > >> >> > > > > < >>> > >> >> > > > > >>> > >> >> > > > >>> > >> >> > > >>> > >> >> > >>> > >> >> >>> > >> >>> > >>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7Ca945ffe445614a538d4d08d664c13319%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807178284023226&sdata=mrx6J9BeewcazF%2F6FE8xAZlfCB72VZC15zgvIOP1JEg%3D&reserved=0 >>> > >> >> > > > > >* >>> > >> >> > > > > >>> > >> >> > > > > >>> > >> >> > > > > >>> > >> >> > > > >>> > >> >> > > > >>> > >> >> > > > >>> > >> >> > > >>> > >> >> > > >>> > >> >> > > >>> > >> >> > >>> > >> >> > -- >>> > >> >> > >>> > >> >> > Piotr Zarzycki >>> > >> >> > >>> > >> >> > Patreon: * >>> > >> >> >>> > >> >>> > >>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fp >>> <https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7Ca945ffe445614a538d4d08d664c13319%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636807178284023226&sdata=mrx6J9BeewcazF%2F6FE8xAZlfCB72VZC15zgvIOP1JEg%3D&reserved=0> >> >> -- Piotr Zarzycki Patreon: *https://www.patreon.com/piotrzarzycki <https://www.patreon.com/piotrzarzycki>*
