You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ha...@apache.org on 2018/05/29 21:17:56 UTC

[royale-asjs] branch feature/revert-refactor updated: Created getLabelFromData utility function

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

harbs pushed a commit to branch feature/revert-refactor
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/feature/revert-refactor by this push:
     new 1f64c90  Created getLabelFromData utility function
1f64c90 is described below

commit 1f64c90d42ade8d3f21d645a6e78d65fe6450804
Author: Harbs <ha...@in-tools.com>
AuthorDate: Wed May 30 00:17:47 2018 +0300

    Created getLabelFromData utility function
    
    This cleans up a number of classes and enables cheap support for more generic value objects in lists and the like.
---
 .../projects/Basic/src/main/royale/BasicClasses.as |  2 +
 .../org/apache/royale/html/beads/ComboBoxView.as   | 11 +++++-
 .../supportClasses/CascadingMenuItemRenderer.as    |  8 +---
 .../html/supportClasses/MenuBarItemRenderer.as     |  8 +---
 .../royale/html/supportClasses/MenuItemRenderer.as |  8 +---
 .../html/supportClasses/StringItemRenderer.as      |  8 +---
 .../html/supportClasses/TextButtonItemRenderer.as  | 14 ++-----
 .../apache/royale/html/util/getLabelFromData.as    | 46 ++++++++++++++++++++++
 8 files changed, 69 insertions(+), 36 deletions(-)

diff --git a/frameworks/projects/Basic/src/main/royale/BasicClasses.as b/frameworks/projects/Basic/src/main/royale/BasicClasses.as
index ff55193..6a09fac 100644
--- a/frameworks/projects/Basic/src/main/royale/BasicClasses.as
+++ b/frameworks/projects/Basic/src/main/royale/BasicClasses.as
@@ -298,6 +298,8 @@ internal class BasicClasses
 	import org.apache.royale.html.beads.models.TreeGridModel; TreeGridModel;
 	import org.apache.royale.html.beads.layouts.TreeGridLayout; TreeGridLayout;
 	import org.apache.royale.html.beads.TreeGridView; TreeGridView;
+
+	import org.apache.royale.html.util.getLabelFromData; getLabelFromData;
 }
 
 }
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ComboBoxView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ComboBoxView.as
index c201457..2fd79ef 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ComboBoxView.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ComboBoxView.as
@@ -35,6 +35,7 @@ package org.apache.royale.html.beads
 	import org.apache.royale.core.IPopUpHost;
 	import org.apache.royale.geom.Point;
 	import org.apache.royale.html.beads.IComboBoxView;
+	import org.apache.royale.html.util.getLabelFromData;
 	
 	/**
 	 *  The ComboBoxView class creates the visual elements of the org.apache.royale.html.ComboBox 
@@ -107,6 +108,8 @@ package org.apache.royale.html.beads
 		
 		/**
 		 * @private
+		 * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
+		 * @royaleignorecoercion org.apache.royale.core.UIBase
 		 */
 		override public function set strand(value:IStrand):void
 		{
@@ -164,6 +167,10 @@ package org.apache.royale.html.beads
 			if (list) return list.visible;
 			else return false;
 		}
+		/**
+		 * @royaleignorecoercion org.apache.royale.core.IComboBoxModel
+		 * @royaleignorecoercion org.apache.royale.core.IUIBase
+		 */
 		public function set popUpVisible(value:Boolean):void
 		{
 			if (value && !list.visible) {
@@ -208,15 +215,17 @@ package org.apache.royale.html.beads
 		
 		/**
 		 * @private
+		 * @royaleignorecoercion org.apache.royale.core.IComboBoxModel
 		 */
 		protected function itemChangeAction():void
 		{
 			var model:IComboBoxModel = _strand.getBeadByType(IComboBoxModel) as IComboBoxModel;
-			input.text = model.selectedItem as String;
+			input.text = getLabelFromData(model.selectedItem);
 		}
 		
 		/**
 		 * @private
+		 * @royaleignorecoercion org.apache.royale.core.UIBase
 		 */
 		protected function sizeChangeAction():void
 		{
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/CascadingMenuItemRenderer.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/CascadingMenuItemRenderer.as
index 50f6e39..7cf3b7d 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/CascadingMenuItemRenderer.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/CascadingMenuItemRenderer.as
@@ -22,6 +22,7 @@ package org.apache.royale.html.supportClasses
 	import org.apache.royale.html.Label;
 	import org.apache.royale.html.beads.ITextItemRenderer;
 	import org.apache.royale.svg.Rect;
+	import org.apache.royale.html.util.getLabelFromData;
 
 	/**
 	 * The CascadingMenuItemRenderer is the itemRenderer class for the elements of a CascadingMenu.
@@ -94,18 +95,13 @@ package org.apache.royale.html.supportClasses
 				}
 			}
 			else {
-				var text:String;
-				if (value is String) text = value as String;
-				else if (labelField) text = String(value[labelField]);
-				else if (dataField) text = String(value[dataField]);
-				else text = String(value);
 				
 				if (label == null) {
 					label = new Label();
 					addElement(label);
 				}
 				
-				label.text = text;
+				label.text = getLabelFromData(value);
 				
 				if (value.hasOwnProperty("menu")) {
 					if (submenuIndicator == null) {
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/MenuBarItemRenderer.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/MenuBarItemRenderer.as
index 9e0c53b..67ac760 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/MenuBarItemRenderer.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/MenuBarItemRenderer.as
@@ -20,6 +20,7 @@ package org.apache.royale.html.supportClasses
 {
 	import org.apache.royale.html.Label;
 	import org.apache.royale.html.beads.ITextItemRenderer;
+	import org.apache.royale.html.util.getLabelFromData;
 	
 	public class MenuBarItemRenderer extends DataItemRenderer implements ITextItemRenderer
 	{
@@ -43,13 +44,8 @@ package org.apache.royale.html.supportClasses
 		override public function set data(value:Object):void
 		{
 			super.data = value;
-			var text:String;
-			if (value is String) text = value as String;
-			else if (labelField) text = String(value[labelField]);
-			else if (dataField) text = String(value[dataField]);
-			else text = String(value);
 			
-			label.text = text;
+			label.text = getLabelFromData(value);
 			
 			adjustSize();
 		}
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/MenuItemRenderer.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/MenuItemRenderer.as
index c53cb7c..466b6dd 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/MenuItemRenderer.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/MenuItemRenderer.as
@@ -21,6 +21,7 @@ package org.apache.royale.html.supportClasses
 	import org.apache.royale.core.ISelectableItemRenderer;
 	import org.apache.royale.html.Label;
 	import org.apache.royale.html.beads.ITextItemRenderer;
+	import org.apache.royale.html.util.getLabelFromData;
 
 	/**
 	 * The MenuItemRenderer class is the default itemRenderer for Menus.
@@ -73,13 +74,8 @@ package org.apache.royale.html.supportClasses
 		override public function set data(value:Object):void
 		{
 			super.data = value;
-			var text:String;
-			if (value is String) text = value as String;
-			else if (labelField) text = String(value[labelField]);
-			else if (dataField) text = String(value[dataField]);
-			else text = String(value);
 			
-			label.text = text;
+			label.text = getLabelFromData(value);
 		}
 		
 		/**
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/StringItemRenderer.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/StringItemRenderer.as
index 5487068..bdb5a23 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/StringItemRenderer.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/StringItemRenderer.as
@@ -32,6 +32,7 @@ package org.apache.royale.html.supportClasses
     }
     import org.apache.royale.events.Event;
     import org.apache.royale.html.beads.ITextItemRenderer;
+	import org.apache.royale.html.util.getLabelFromData;
 
 	/**
 	 *  The StringItemRenderer class displays data in string form using the data's toString()
@@ -146,12 +147,7 @@ package org.apache.royale.html.supportClasses
 		{
 			super.data = value;
             var text:String;
-			if (value is String) text = value as String;
-			else if (labelField) text = "" + value[labelField];
-			else if (dataField) text = "" + value[dataField];
-			else text = "" + value;
-
-            this.text = text;
+            this.text = getLabelFromData(value);
 		}
 
         // COMPILE::JS
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/TextButtonItemRenderer.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/TextButtonItemRenderer.as
index 4f2fe1b..524d28e 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/TextButtonItemRenderer.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/TextButtonItemRenderer.as
@@ -27,6 +27,7 @@ package org.apache.royale.html.supportClasses
 	import org.apache.royale.html.TextButton;
 	import org.apache.royale.html.beads.ITextItemRenderer;
 	import org.apache.royale.events.ItemClickedEvent;
+	import org.apache.royale.html.util.getLabelFromData;
 
 	COMPILE::JS
 	{
@@ -84,17 +85,8 @@ package org.apache.royale.html.supportClasses
 			var valueAsString:String;
 
 			if (data == null) return;
-
-			if (data is String) {
-				valueAsString = data as String;
-			}
-			else if (labelField != null) {
-				valueAsString = "" + data[labelField];
-			}
-			else if (data.hasOwnProperty("label")) {
-				valueAsString = "" + data["label"];
-			}
-			else if (data.hasOwnProperty("title")) {
+			valueAsString = getLabelFromData(data);
+			if (!valueAsString && data.hasOwnProperty("title")) {
 				valueAsString = "" + data["title"];
 			}
 
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/util/getLabelFromData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/util/getLabelFromData.as
new file mode 100644
index 0000000..f48b98c
--- /dev/null
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/util/getLabelFromData.as
@@ -0,0 +1,46 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 "Licens"); 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.html.util
+{
+
+    /**
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion Royale 0.9.3
+     * Utility function to get a label string from a value object
+     */
+    public function getLabelFromData(data:Object):String
+    {
+        // slightly more code, but we bail early if it's a string which is often
+        if (data is String) return "" + data;
+        if(!data) return "";
+
+        if (ownsProperty("labelField")) return "" + data[data["labelField"]];
+        if (ownsProperty("dataField")) return "" + data[data["dataField"]];
+        if (ownsProperty("label")) return "" + data["label"];
+
+        return "" + data;
+        // a little less code with this function
+        function ownsProperty(val:String):Boolean{
+            return data.hasOwnProperty(val);
+        }
+
+    }
+}

-- 
To stop receiving notification emails like this one, please contact
harbs@apache.org.