You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by yi...@apache.org on 2020/06/19 11:36:27 UTC

[royale-asjs] branch develop updated: Change ComboBoxItemByField for a Basic Bead so that it can be used by more components

This is an automated email from the ASF dual-hosted git repository.

yishayw 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 2365dbb  Change ComboBoxItemByField for a Basic Bead so that it can be used by more components
     new 57c25cd  Merge pull request #870 from raudjcholo/develop
2365dbb is described below

commit 2365dbb6a6df779fb38c053a792badc6fe82c48f
Author: Raul Nunez <ra...@gmail.com>
AuthorDate: Thu Jun 18 19:43:41 2020 +0200

    Change ComboBoxItemByField for a Basic Bead so that it can be used by more components
---
 .../Basic/src/main/resources/basic-manifest.xml    |  2 +
 .../html/beads/CollectionSelectedItemByField.as}   | 53 ++++++++++++----------
 .../Jewel/src/main/resources/jewel-manifest.xml    |  1 -
 3 files changed, 30 insertions(+), 26 deletions(-)

diff --git a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
index 3db2977..6e59649 100644
--- a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
+++ b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
@@ -294,5 +294,7 @@
     <component id="BrowserRouter" class="org.apache.royale.routing.BrowserRouter"/>
 
     <component id="UIGraphicsBase" class="org.apache.royale.display.UIGraphicsBase"/>
+	
+	<component id="CollectionSelectedItemByField" class="org.apache.royale.html.beads.CollectionSelectedItemByField"/>
 
 </componentPackage>
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/combobox/ComboBoxItemByField.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CollectionSelectedItemByField.as
similarity index 65%
rename from frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/combobox/ComboBoxItemByField.as
rename to frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CollectionSelectedItemByField.as
index e73559a..ea284fd 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/combobox/ComboBoxItemByField.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CollectionSelectedItemByField.as
@@ -16,28 +16,30 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package org.apache.royale.jewel.beads.controls.combobox
+package org.apache.royale.html.beads
 {
   import org.apache.royale.core.IBead;
-  import org.apache.royale.jewel.ComboBox;
   import org.apache.royale.core.IStrand;
   import org.apache.royale.collections.CollectionUtils;
-  import org.apache.royale.collections.ArrayList;
   import org.apache.royale.events.Event;
+  import org.apache.royale.collections.ICollectionView;
+  import org.apache.royale.core.ISelectionModel;
+  import org.apache.royale.events.IEventDispatcher;
   
   /**
-	 *  The ComboBoxItemByField class is a specialty bead that can be used with
-	 *  any ComboBox control. This bead allows to select an item by field
+	 *  The CollectionSelectedItemByField class is a specialty bead that can be used with
+	 *  any control with ISelectionModel. 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
+	 *  @productversion Royale 0.9.8
 	 */
 
-  public class ComboBoxItemByField implements IBead{
+  public class CollectionSelectedItemByField implements IBead{
 
-      protected var comboBox:ComboBox;
+      protected var _model:ISelectionModel;
+	  protected var _strand:IStrand;
 
 	  
 		/**
@@ -46,9 +48,9 @@ package org.apache.royale.jewel.beads.controls.combobox
 		 *  @langversion 3.0
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
-		 *  @productversion Royale 0.9.4
+		 *  @productversion Royale 0.9.8
 		 */
-      public function ComboBoxItemByField()
+      public function CollectionSelectedItemByField()
 		{
 		}
 		
@@ -58,12 +60,13 @@ package org.apache.royale.jewel.beads.controls.combobox
 		 *  @langversion 3.0
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
-		 *  @productversion Royale 0.9.7
+		 *  @productversion Royale 0.9.8
 		 */
         public function set strand(value:IStrand):void
 		{
-			comboBox = value as ComboBox;
-			comboBox.addEventListener("selectionChanged", selectionChangedHandler);
+			_strand = value;
+			_model = _strand.getBeadByType(ISelectionModel) as ISelectionModel;
+			(_strand as IEventDispatcher).addEventListener("selectionChanged", selectionChangedHandler);
 			updateHost();
 		}
 
@@ -74,7 +77,7 @@ package org.apache.royale.jewel.beads.controls.combobox
 		 *  @langversion 3.0
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
-		 *  @productversion Royale 0.9.4
+		 *  @productversion Royale 0.9.8
 		 */
         public function get valueField():String
         {
@@ -95,7 +98,7 @@ package org.apache.royale.jewel.beads.controls.combobox
 		 *  @langversion 3.0
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
-		 *  @productversion Royale 0.9.4
+		 *  @productversion Royale 0.9.8
 		 */
         public function get selectedValue():*{
             return _selectedValue;
@@ -107,29 +110,29 @@ package org.apache.royale.jewel.beads.controls.combobox
         }
 		
 		/**
-		 *  This bead allows update the selected item of the combobox through the entered field 
+		 *  This bead allows update the selected item of the component through the entered field 
 		 */
         protected function updateHost():void
 		{
-			if(comboBox && valueField != "" && selectedValue != null){
-			    var aux:* = CollectionUtils.getItemByField(comboBox.dataProvider as ArrayList,valueField,selectedValue);
+			if(_model && valueField != "" && selectedValue != null){
+			    var aux:* = CollectionUtils.getItemByField(_model.dataProvider as ICollectionView,valueField,selectedValue);
                 if(aux == null){
-                    comboBox.selectedItem = null;
-                    comboBox.selectedIndex = -1;
-                } else if (aux!==comboBox.selectedItem){
-                    comboBox.selectedItem = aux;
+                    _model.selectedItem = null;
+                    _model.selectedIndex = -1;
+                } else if (aux!==_model.selectedItem){
+                    _model.selectedItem = aux;
                 }
             }
 		}
 		
 		/**
-		 *  Select the right item for the combobox.
+		 *  Select the right item for the component.
 		 * 
 		 *  @param event 
 		 */
         protected function selectionChangedHandler(event:Event):void{
-            if(valueField != "" && comboBox){
-                var selectedItem:Object = comboBox.selectedItem;
+            if(valueField != "" && _model){
+                var selectedItem:Object = _model.selectedItem;
                 if(selectedItem != null && selectedValue !== selectedItem[valueField])
                     selectedValue = selectedItem[valueField];
             }
diff --git a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
index 55136c2..e575c79 100644
--- a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
+++ b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
@@ -198,7 +198,6 @@
     <component id="ComboLowerCase" class="org.apache.royale.jewel.beads.controls.combobox.ComboLowerCase"/>
     <component id="ComboBoxDisabled" class="org.apache.royale.jewel.beads.controls.combobox.ComboBoxDisabled"/>
     <component id="ComboBoxTruncateText" class="org.apache.royale.jewel.beads.controls.combobox.ComboBoxTruncateText"/>
-	<component id="ComboBoxItemByField" class="org.apache.royale.jewel.beads.controls.combobox.ComboBoxItemByField"/>
 
     <component id="LayoutChildren" class="org.apache.royale.jewel.beads.layouts.LayoutChildren"/>
     <component id="BasicLayout" class="org.apache.royale.jewel.beads.layouts.BasicLayout"/>