Hi, Perfect Carlos, I also see that solution. Everything works again ok. Thx Hiedra.
-----Mensaje original----- De: Carlos Rovira <[email protected]> Enviado el: jueves, 3 de diciembre de 2020 11:27 Para: Apache Royale Development <[email protected]> Asunto: Re: Jewel List - selectionChange (Bis) Hi Maria Jose, ok, I took a look at ButtonBarModel and didn't remember it was using Basic ArraySelectionModel. Since Jewel is using by default ArrayListModel in all components I think the solution is to change that to a new jewel ButtonBarModel that extends from jewel ArrayListSelectionModel. I just committed it. Let me know if that solves the problem thanks El jue, 3 dic 2020 a las 0:24, Maria Jose Esteve (<[email protected]>) escribi贸: > Hi, > I don't understand Carlos, my control "extends" from Jewel > ToggleButtonBar and the model it has defined is ButtonBarModel (not > IJewelSelectionModel). > Do you want me to modify it? It is not a model that I can modify, is it? > What am I missing ??? Ahahahaha, forgive me, maybe my English > translation has been bad 馃槤 > > Hiedra. > > -----Mensaje original----- > De: Carlos Rovira <[email protected]> Enviado el: mi茅rcoles, 2 > de diciembre de 2020 22:55 > Para: Apache Royale Development <[email protected]> > Asunto: Re: Jewel List - selectionChange (Bis) > > Hi Maria Jose, > > what surprises me is your model is not IJewelSelectionModel. Since is > a jewel component you need it to make it work. > So I think the approach is to add it to your code. If you don't want > to add it I need to know the reason to understand it. > > > > El mi茅, 2 dic 2020 a las 3:21, Maria Jose Esteve (<[email protected]>) > escribi贸: > > > Hi, Carlos > > Some time ago I implemented a control that ran from Jewel > > ToggleButtonBar, PagNavigationButtonBar, and today we realized that > > it > has stopped working. > > The console shows an error in > > > > The problem occurs because the ToggleButtonBar loads the > > ListSingleSelectionMouseController and ButtonBarModel beads, and the > > latter does not implement IJewelSelectionModel and does not have the > > new isItemClicked property. > > > > A possible solution would be to modify the selectedHandler function > > (no other control would give an error): > > > > override protected function > > selectedHandler(event:ItemClickedEvent):void > > { > > if(listModel is IJewelSelectionModel) > > (listModel as IJewelSelectionModel).isItemClicked = true; > > super.selectedHandler(event); > > if(listModel is IJewelSelectionModel) > > (listModel as IJewelSelectionModel).isItemClicked = > > false; } > > > > I have tested it and it works fine. What do you think? > > > > Thx. > > Hiedra. > > > > -----Mensaje original----- > > De: Carlos Rovira <[email protected]> Enviado el: lunes, 30 de > > noviembre de 2020 9:09 > > Para: Apache Royale Development <[email protected]> > > Asunto: Re: Jewel List - selectionChange (Bis) > > > > ok, let me know how it goes > > thanks > > > > El lun, 30 nov 2020 a las 1:37, Maria Jose Esteve > > (<[email protected]>) > > escribi贸: > > > > > Hi Carlos, > > > Yes, I have seen your changes and was comparing them with mine. In > > > the end, I also modified the controller and the model but in > > > another > way. > > > I have to analyze your solution 馃槤, because I added some extra > > > modifications that may not be necessary now. > > > Just this past week I was implementing an extension to the Jewel > > > ComboBox control and had problems with the popup list, I am also > > > going to check these modifications to see if they have been fixed. > > > > > > Thanks Carlos, I'll tell you. > > > Hiedra. > > > > > > -----Mensaje original----- > > > De: Carlos Rovira <[email protected]> Enviado el: domingo, > > > 29 de noviembre de 2020 22:59 > > > Para: Apache Royale Development <[email protected]> > > > Asunto: Re: Jewel List - selectionChange (Bis) > > > > > > Hi Maria Jose, > > > > > > I finally was able to have time to check this. I finally think > > > this is very close to the List component since always users will > > > want to put the selectedItem into view (can't think of a case that > > > will not be what we all want). So I abandoned the bead idea. > > > Instead I made the scrollToIndex run in any case selectionChange > > > is triggered but left out the case when the user clicks over an > > > item, since as you said don't this a case we want since the item is > > > already on view. > > > > > > Hope this helps and I think we can close this case > > > > > > Carlos > > > > > > > > > > > > El jue, 5 nov 2020 a las 0:51, Maria Jose Esteve > > > (<[email protected]>) > > > escribi贸: > > > > > > > Hi, > > > > This could be a possible implementation of the > > > > ScrollIndexToSelection > > > bead: > > > > > > > > package xxxx.jewel.beads.controls.list { > > > > import org.apache.royale.core.IBead; > > > > import org.apache.royale.core.IStrand; > > > > import org.apache.royale.events.Event; > > > > import org.apache.royale.events.IEventDispatcher; > > > > import > org.apache.royale.jewel.beads.views.IScrollToIndexView; > > > > import org.apache.royale.core.ISelectionModel; > > > > import org.apache.royale.core.UIBase; > > > > > > > > /** > > > > * The ScrollIndexToSelection bead is a specialty bead > > > > that can be used with > > > > * Jewel List List control to make sure that whenever > > > > the selected item changes it becomes visible. > > > > * > > > > * @langversion 3.0 > > > > * @playerversion Flash 10.2 > > > > * @playerversion AIR 2.6 > > > > * @productversion Royale 0.9.8 > > > > */ > > > > public class ScrollIndexToSelection implements IBead > > > > { > > > > /** > > > > * constructor. > > > > * > > > > * @langversion 3.0 > > > > * @playerversion Flash 10.2 > > > > * @playerversion AIR 2.6 > > > > * @productversion Royale 0.9.8 > > > > */ > > > > public function ScrollIndexToSelection() > > > > { > > > > } > > > > > > > > protected var _strand:IStrand; > > > > > > > > /** > > > > * @copy org.apache.royale.core.IBead#strand > > > > * > > > > * @langversion 3.0 > > > > * @playerversion Flash 10.2 > > > > * @playerversion AIR 2.6 > > > > * @productversion Royale 0.9.8 > > > > */ > > > > public function set strand(value:IStrand):void > > > > { > > > > _strand = value; > > > > > > > > IEventDispatcher(_strand).addEventListener("selectionChanged", > > > > selectionChangeHandler); > > > > } > > > > > > > > /** > > > > * Ensures that the data provider item at the > > > > given index is visible. > > > > */ > > > > private function > > > > selectionChangeHandler(ev:Event):void > > > > { > > > > var host:UIBase = UIBase(_strand); > > > > if(!host) > > > > return; > > > > > > > > if(host.view && host.view is > > IScrollToIndexView) > > > > { > > > > if(host.model && host.model is > > > > ISelectionModel) > > > > { > > > > var setIndex:int = > > > > (host.model as ISelectionModel).selectedIndex; > > > > (host.view as > > > > IScrollToIndexView).scrollToIndex(setIndex); > > > > > > > > } > > > > } > > > > } > > > > } > > > > } > > > > > > > > The bead works, but the user experience is bad, too many jumps / > > > > scrolls ... > > > > They say that ignorance is very daring, you have to forgive me 馃槤 ... > > > > this is how I see it: > > > > The selectionChanged event of the List is dispatched when the > > > > selectedIndex of the model is explicitly set and this occurs in > > > > at least 3 > > > > scenarios: > > > > 1- Assignment by code, valueCommit > > > > 2- Click on an itemRenderer > > > > 3- And when we move with the keyboard (key down / up) Of these > > > > three scenarios I think that the only one that should be > > > > controlled is 1, why? Because when clicked, the item is visible > > > > and, when we move with the keyboard the ListKeyDownController, > > > > after modifying the selectedIndex, explicitly calls scrollToIndex. > > > > Could scenario 1, valueCommit, be differentiated from the rest? > > > > > > > > If the double positioning that occurs in scenarios 2 and 3 could > > > > not be avoided, we could "hide" it by overriding the > > > > scrollToIndex function so that it does not make the scroll > > > > change if the item is visible at that moment. > > > > > > > > As you see? > > > > > > > > Thx. > > > > Hiedra > > > > > > > > -----Mensaje original----- > > > > De: Carlos Rovira <[email protected]> Enviado el: > > > > mi茅rcoles, > > > > 4 de noviembre de 2020 11:16 > > > > Para: Apache Royale Development <[email protected]> > > > > Asunto: Re: Jewel List - selectionChange (Bis) > > > > > > > > Yeah, I think it should be pretty straight forward. > > > > For example a name could be "ScrollIndexToSelection" in the " > > > > org.apache.royale.jewel.beads.controls.list" package. > > > > Then it just listen for selectionChange event and do the > > > > scrollToIndex > > > > > > > > thanks! > > > > > > > > El mi茅., 4 nov. 2020 a las 10:40, Maria Jose Esteve > > > > (<[email protected]>) > > > > escribi贸: > > > > > > > > > Right Carlos. If the guideline is that the operation should be > > > > > the same, basically, I also think it should be a bead, since > > > > > the application of the scrollToIndex, whenever the selected > > > > > element is changed, it would be a sudden change. > > > > > > > > > > > > > > > > > > > > Would we agree to add this functionality in a bead? > > > > > > > > > > If you tell me yes, I try 馃槤 > > > > > > > > > > > > > > > > > > > > Thx. > > > > > > > > > > Hiedra > > > > > > > > > > -----Mensaje original----- > > > > > De: Carlos Rovira <[email protected]> Enviado el: > > > > > mi茅rcoles, > > > > > 4 de noviembre de 2020 10:02 > > > > > Para: Apache Royale Development <[email protected]> > > > > > Asunto: Re: Jewel List - selectionChange (Bis) > > > > > > > > > > > > > > > > > > > > Hi Maria Jose, > > > > > > > > > > > > > > > > > > > > so if I'm understanding correctly, we currently have the same > > > > > behaviour as Flex (maybe we need to update a bit to improve > > > > > over time, but in essence is the same): Moving with keys > > > > > trigger the scrollToIndex, but if we use programmatically > > > > > selectedItem, the > > > > scrollToIndex is not triggered, right? > > > > > > > > > > > > > > > > > > > > If so I think we are ok in the TLC List, and the behaviour > > > > > should go to a bead. > > > > > > > > > > > > > > > > > > > > Can you confirm? > > > > > > > > > > > > > > > > > > > > thanks > > > > > > > > > > > > > > > > > -- > > > > Carlos Rovira > > > > Apache Member & Apache Royale PMC *Apache Software Foundation* > > > > http://about.me/carlosrovira > > > > > > > > > > > > > -- > > > Carlos Rovira > > > Apache Member & Apache Royale PMC > > > *Apache Software Foundation* > > > http://about.me/carlosrovira > > > > > > > > > -- > > Carlos Rovira > > Apache Member & Apache Royale PMC > > *Apache Software Foundation* > > http://about.me/carlosrovira > > > > > -- > Carlos Rovira > Apache Member & Apache Royale PMC > *Apache Software Foundation* > http://about.me/carlosrovira > -- Carlos Rovira Apache Member & Apache Royale PMC *Apache Software Foundation* http://about.me/carlosrovira
