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 <[email protected]>
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
[email protected].

Reply via email to