You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ca...@apache.org on 2018/08/28 09:59:51 UTC

[royale-asjs] branch develop updated: add labelField to CombBox and improve examples

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

carlosrovira 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 349522b  add labelField to CombBox and improve examples
349522b is described below

commit 349522b61d13aa64f75f06c61350bf2346ef24ae
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Tue Aug 28 11:59:46 2018 +0200

    add labelField to CombBox and improve examples
---
 .../src/main/royale/DropDownListPlayGround.mxml    | 62 ++++++++++++----
 .../src/main/royale/models/ListsModel.as           | 17 +++++
 .../royale/org/apache/royale/jewel/ComboBox.as     | 82 +++++++++++++++++-----
 3 files changed, 132 insertions(+), 29 deletions(-)

diff --git a/examples/royale/JewelExample/src/main/royale/DropDownListPlayGround.mxml b/examples/royale/JewelExample/src/main/royale/DropDownListPlayGround.mxml
index e943b62..e57c3e2 100644
--- a/examples/royale/JewelExample/src/main/royale/DropDownListPlayGround.mxml
+++ b/examples/royale/JewelExample/src/main/royale/DropDownListPlayGround.mxml
@@ -27,12 +27,20 @@ limitations under the License.
 		<![CDATA[      
             import org.apache.royale.collections.ArrayList;
 
-            private function dropDownListHandler(event:Event):void {
-                dropDownListResult.html = "<strong>DropDownList selectedItem:</strong> " + dropdownlist.selectedItem;
+            private function watchmenDropDownListHandler(event:Event):void {
+                watchmenDropDownListResult.html = "<strong>DropDownList selectedItem:</strong> " + event.target.selectedItem;
             }
 
-            private function comboboxSelectedItem(event:Event):void {
-				comboBoxResult.html = "<strong>ComboBox selectedItem:</strong> " + combobox.selectedItem;
+            private function watchmenComboBoxSelectedItem(event:Event):void {
+				watchmenComboBoxResult.html = "<strong>ComboBox selectedItem:</strong> " + event.target.selectedItem;
+            }
+            
+			private function avengerswatchmenDropDownListHandler(event:Event):void {
+                avengersDropDownListResult.html = "<strong>DropDownList selectedItem:</strong> " + event.target.selectedItem.nickname;
+            }
+
+            private function avengerswatchmenComboBoxSelectedItem(event:Event):void {
+				avengersComboBoxResult.html = "<strong>ComboBox selectedItem:</strong> " + event.target.selectedItem.nickname;
             }
 		]]>
 	</fx:Script>
@@ -54,15 +62,43 @@ limitations under the License.
 				<html:H3 text="Jewel DropDownList"/>
 				
 				<j:HGroup gap="3" itemsVerticalAlign="itemsCentered">
-					<j:DropDownList id="dropdownlist" dataProvider="{listModel.watchmen}" change="dropDownListHandler(event)"/>
-					<j:Label id="dropDownListResult" html="&lt;strong>DropDownList selectedItem:&lt;/strong> "/>
+					<j:DropDownList dataProvider="{listModel.watchmen}" change="watchmenDropDownListHandler(event)"/>
+					<j:Label id="watchmenDropDownListResult" html="&lt;strong>DropDownList selectedItem:&lt;/strong> "/>
+				</j:HGroup>
+			</j:Card>
+
+		</j:GridCell>
+
+		<j:GridCell desktopNumerator="1" desktopDenominator="2"
+					tabletNumerator="1" tabletDenominator="2"
+					phoneNumerator="1" phoneDenominator="1">
+
+			<j:Card>
+				
+				<html:H3 text="Jewel ComboBox"/>
+				
+				<j:HGroup gap="3" itemsVerticalAlign="itemsCentered">
+					<j:ComboBox dataProvider="{listModel.watchmen}" change="watchmenComboBoxSelectedItem(event)"/>
+					<j:Label id="watchmenComboBoxResult" html="&lt;strong>ComboBox selectedItem:&lt;/strong> "/>
+				</j:HGroup>
+				
+			</j:Card>
+		</j:GridCell>
+	</j:Grid>
+	
+	<j:Grid gap="true" itemsVerticalAlign="itemsSameHeight">
+		<j:GridCell desktopNumerator="1" desktopDenominator="2"
+					tabletNumerator="1" tabletDenominator="2"
+					phoneNumerator="1" phoneDenominator="1">
+			<j:Card>
+				
+				<html:H3 text="Jewel DropDownList"/>
+				
+				<j:HGroup gap="3" itemsVerticalAlign="itemsCentered">
+					<j:DropDownList labelField="nickname" dataProvider="{listModel.avengers}" change="avengerswatchmenDropDownListHandler(event)"/>
+					<j:Label id="avengersDropDownListResult" html="&lt;strong>DropDownList selectedItem:&lt;/strong> "/>
 				</j:HGroup>
 
-				<!-- <j:DropDownList change="changeHandler(event)">
-					<j:dataProvider>
-						<j:ArrayList id="avengersCharacters" source="[Iron Man, Hulk, Thor, Captain America, Black Widow]" />
-					</j:dataProvider>
-				</j:DropDownList> -->
 			</j:Card>
 
 		</j:GridCell>
@@ -76,8 +112,8 @@ limitations under the License.
 				<html:H3 text="Jewel ComboBox"/>
 				
 				<j:HGroup gap="3" itemsVerticalAlign="itemsCentered">
-					<j:ComboBox id="combobox" dataProvider="{listModel.watchmen}" change="comboboxSelectedItem(event)"/>
-					<j:Label id="comboBoxResult" html="&lt;strong>ComboBox selectedItem:&lt;/strong> "/>
+					<j:ComboBox labelField="nickname" dataProvider="{listModel.avengers}" change="avengerswatchmenComboBoxSelectedItem(event)"/>
+					<j:Label id="avengersComboBoxResult" html="&lt;strong>ComboBox selectedItem:&lt;/strong> "/>
 				</j:HGroup>
 				
 			</j:Card>
diff --git a/examples/royale/JewelExample/src/main/royale/models/ListsModel.as b/examples/royale/JewelExample/src/main/royale/models/ListsModel.as
index 9f3e468..880951f 100644
--- a/examples/royale/JewelExample/src/main/royale/models/ListsModel.as
+++ b/examples/royale/JewelExample/src/main/royale/models/ListsModel.as
@@ -41,6 +41,23 @@ package models
 			return _watchmen;
 		}
 
+		private var _avengers:ArrayList = new ArrayList([
+			{nickname: "Iron Man"},
+			{nickname: "Hulk"}, 
+			{nickname: "Thor"},
+			{nickname: "Captain America"},
+            {nickname: "Black Widow"},
+            {nickname: "Hawkeye"},
+            {nickname: "Vision"},
+            {nickname: "Scarlet Witch"},
+            {nickname: "Spiderman"}
+		]);
+		public function get avengers():ArrayList
+		{
+			return _avengers;
+		}
+		
+
 		
 		/**
 		 * Used in the List example.
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/ComboBox.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/ComboBox.as
index 93988f6..e329e29 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/ComboBox.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/ComboBox.as
@@ -18,11 +18,12 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.jewel
 {
-    import org.apache.royale.core.IUIBase;
 	import org.apache.royale.core.StyledUIBase;
-
     import org.apache.royale.core.IComboBoxModel;
-    import org.apache.royale.jewel.beads.models.ComboBoxModel;
+	import org.apache.royale.core.ISelectionModel;
+	import org.apache.royale.core.IDataProviderModel;
+	import org.apache.royale.core.IListPresentationModel;
+	import org.apache.royale.jewel.beads.models.ListPresentationModel;
 	
 	[Event(name="change", type="org.apache.royale.events.Event")]
 	
@@ -40,7 +41,7 @@ package org.apache.royale.jewel
 	 *  @langversion 3.0
 	 *  @playerversion Flash 10.2
 	 *  @playerversion AIR 2.6
-	 *  @productversion Royale 0.0
+	 *  @productversion Royale 0.9.3
 	 */
 	public class ComboBox extends StyledUIBase
 	{
@@ -50,7 +51,7 @@ package org.apache.royale.jewel
 		 *  @langversion 3.0
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
-		 *  @productversion Royale 0.0
+		 *  @productversion Royale 0.9.3
 		 */
 		public function ComboBox()
 		{
@@ -65,15 +66,41 @@ package org.apache.royale.jewel
 		 *  @langversion 3.0
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
-		 *  @productversion Royale 0.0
+		 *  @productversion Royale 0.9.3
+		 *  @royaleignorecoercion org.apache.royale.core.IDataProviderModel
 		 */
 		public function get dataProvider():Object
 		{
-			return IComboBoxModel(model).dataProvider;
+			return IDataProviderModel(model).dataProvider;
 		}
+		/**
+		 * @royaleignorecoercion org.apache.royale.core.IDataProviderModel
+		 */
 		public function set dataProvider(value:Object):void
 		{
-			IComboBoxModel(model).dataProvider = value;
+			IDataProviderModel(model).dataProvider = value;
+		}
+
+		/**
+		 *  The name of field within the data used for display. Each item of the
+		 *  data should have a property with this name.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9.3
+		 *  @royaleignorecoercion org.apache.royale.core.IDataProviderModel
+		 */
+		public function get labelField():String
+		{
+			return IDataProviderModel(model).labelField;
+		}
+		/**
+		 * @royaleignorecoercion org.apache.royale.core.IDataProviderModel
+		 */
+		public function set labelField(value:String):void
+		{
+            IDataProviderModel(model).labelField = value;
 		}
 		
         [Bindable("change")]
@@ -84,35 +111,58 @@ package org.apache.royale.jewel
 		 *  @langversion 3.0
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
-		 *  @productversion Royale 0.0
+		 *  @productversion Royale 0.9.3
+		 *  @royaleignorecoercion org.apache.royale.core.ISelectionModel
 		 */
 		public function get selectedIndex():int
 		{
-			return IComboBoxModel(model).selectedIndex;
+			return ISelectionModel(model).selectedIndex;
 		}
+		/**
+		 * @royaleignorecoercion org.apache.royale.core.ISelectionModel
+		 */
 		public function set selectedIndex(value:int):void
 		{
-			IComboBoxModel(model).selectedIndex = value;
+			ISelectionModel(model).selectedIndex = value;
 		}
 		
         [Bindable("change")]
 		/**
-		 *  The item that is currently selected. Changing this item changes
-		 *  the selectedIndex.
+		 *  The item currently selected. Changing this value also
+		 *  changes the selectedIndex property.
 		 *
 		 *  @langversion 3.0
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
-		 *  @productversion Royale 0.0
+		 *  @productversion Royale 0.9.3
+		 *  @royaleignorecoercion org.apache.royale.core.ISelectionModel
 		 */
 		public function get selectedItem():Object
 		{
-			return IComboBoxModel(model).selectedItem;
+			return ISelectionModel(model).selectedItem;
 		}
 		public function set selectedItem(value:Object):void
 		{
-			IComboBoxModel(model).selectedItem = value;
+			ISelectionModel(model).selectedItem = value;
 		}
 		
+		/**
+		 *  The presentation model for the list.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9.3
+		 *  @royaleignorecoercion org.apache.royale.core.IListPresentationModel
+		 */
+		public function get presentationModel():IListPresentationModel
+		{
+			var presModel:IListPresentationModel = getBeadByType(IListPresentationModel) as IListPresentationModel;
+			if (presModel == null) {
+				presModel = new ListPresentationModel();
+				addBead(presModel);
+			}
+			return presModel;
+		}
 	}
 }