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.