Hi Raúl, great :) so if you have it working for Combo and List maybe you can make a new PR that remove the older one and add the new one to Basic with a meaningful name (i.e: CollectionSelectedItemByField?)
Thanks :) El jue., 18 jun. 2020 a las 16:04, Raúl Núñez (<[email protected]>) escribió: > Perfect! > > This is how it works > > Thank you very much!! > > El jue., 18 jun. 2020 a las 13:49, Yishay Weiss (<[email protected]>) > escribió: > > > Hi Raul, > > > > I noticed you’re now listening to the model bead and not the strand. I’m > > not sure now why that’s not working (we should check), but if the old way > > was working, you can simply replace: > > > > _model.addEventListener("selectionChanged", selectionChangedHandler); > > > > With > > > > (_strand as IEventDispatcher).addEventListener("selectionChanged", > > selectionChangedHandler); > > > > Thanks, > > Yishay > > > > From: Raúl Núñez<mailto:[email protected]> > > Sent: Thursday, June 18, 2020 2:29 PM > > To: [email protected]<mailto:[email protected]> > > Subject: Problem with standardization of the new Bead ComboBoxItemByField > > > > Hi: > > > > I commited a PR (869) with a new Bead for ComboBox: ComboBoxItemByField. > > > > Yishay said me that it could be very interesting to make some changes in > > order to use the bead in a more generic way. > > > > I've tried apply those changes but I haven't got it to work. > > > > My problem is selectionChangedHandler never launches. I have checked with > > another events as selectedItemChanged and selectedIndexChanged. Since the > > handler is never launched, the selectedValue variable is not updated. > > > > > > ComboBoxItemByField changes: > > > > > > > //////////////////////////////////////////////////////////////////////////////// > > // > > // Licensed to the Apache Software Foundation (ASF) under one or more > > // contributor license agreements. See the NOTICE file distributed with > > // this work for additional information regarding copyright ownership. > > // The ASF licenses this file to You under the Apache License, Version > 2.0 > > // (the "License"); you may not use this file except in compliance with > > // the License. You may obtain a copy of the License at > > // > > // http://www.apache.org/licenses/LICENSE-2.0 > > // > > // Unless required by applicable law or agreed to in writing, software > > // distributed under the License is distributed on an "AS IS" BASIS, > > // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or > > implied. > > // See the License for the specific language governing permissions and > > // limitations under the License. > > // > > > > > //////////////////////////////////////////////////////////////////////////////// > > package org.apache.royale.jewel.beads.controls.combobox > > { > > import org.apache.royale.core.IBead; > > import org.apache.royale.core.IStrand; > > import org.apache.royale.collections.CollectionUtils; > > import org.apache.royale.events.Event; > > import org.apache.royale.collections.ICollectionView; > > import org.apache.royale.core.ISelectionModel; > > > > /** > > * The _modelItemByField class is a specialty bead that can be used > > with > > * any _model control. This bead allows to select an item by field > > * > > * @langversion 3.0 > > * @playerversion Flash 10.2 > > * @playerversion AIR 2.6 > > * @productversion Royale 0.9.4 > > */ > > > > public class ComboBoxItemByField implements IBead{ > > > > protected var _model:ISelectionModel; > > protected var _strand:IStrand; > > > > > > /** > > * constructor. > > * > > * @langversion 3.0 > > * @playerversion Flash 10.2 > > * @playerversion AIR 2.6 > > * @productversion Royale 0.9.4 > > */ > > public function ComboBoxItemByField() > > { > > } > > > > /** > > * @copy org.apache.royale.core.IBead#strand > > * > > * @langversion 3.0 > > * @playerversion Flash 10.2 > > * @playerversion AIR 2.6 > > * @productversion Royale 0.9.7 > > */ > > public function set strand(value:IStrand):void > > { > > _strand = value; > > _model = _strand.getBeadByType(ISelectionModel) as > > ISelectionModel; > > _model.addEventListener("selectionChanged" > > , selectionChangedHandler); > > updateHost(); > > } > > > > private var _valueField:String; > > /** > > * The string that will be used for comparison field name > > * > > * @langversion 3.0 > > * @playerversion Flash 10.2 > > * @playerversion AIR 2.6 > > * @productversion Royale 0.9.4 > > */ > > public function get valueField():String > > { > > return _valueField; > > } > > public function set valueField(value:String):void > > { > > _valueField = value; > > updateHost(); > > } > > > > private var _selectedValue:*; > > > > /** > > * Any kind of object to perform the comparison or select > > * the item with this value in the field. > > * > > * @langversion 3.0 > > * @playerversion Flash 10.2 > > * @playerversion AIR 2.6 > > * @productversion Royale 0.9.4 > > */ > > public function get selectedValue():*{ > > return _selectedValue; > > } > > > > public function set selectedValue(value:*):void{ > > _selectedValue = value; > > updateHost(); > > } > > > > /** > > * This bead allows update the selected item of the _model > > through the entered field > > */ > > protected function updateHost():void > > { > > if(_model && valueField != "" && selectedValue != null){ > > var aux:* = CollectionUtils > > .getItemByField(_model.dataProvider as ICollectionView > > ,valueField,selectedValue); > > if(aux == null){ > > _model.selectedItem = null; > > _model.selectedIndex = -1; > > } else if (aux!==_model.selectedItem){ > > _model.selectedItem = aux; > > } > > } > > } > > > > /** > > * Select the right item for the _model. > > * > > * @param event > > */ > > protected function selectionChangedHandler(event:Event):void{ > > if(valueField != "" && _model){ > > var selectedItem:Object = _model.selectedItem; > > if(selectedItem != null > > && selectedValue !== selectedItem[valueField]) > > selectedValue = selectedItem[valueField]; > > } > > } > > > > } > > } > > > > > > Componente example: > > > > <j:ComboBox percentWidth="90" localId="comboCenter" > > labelField="displaytext" > > dateprovider="{centers}"> > > <j:beads> > > <j:ComboBoxItemByField valueField="code" localId= > > "comboCenterItemByField" /> > > </j:beads> > > </j:ComboBox> > > > > Thanks!! > > > > > -- Carlos Rovira http://about.me/carlosrovira
