You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ah...@apache.org on 2020/01/08 00:55:25 UTC
[royale-asjs] branch develop updated: Tree support for
labelFunction. Fixes #563
This is an automated email from the ASF dual-hosted git repository.
aharui 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 4bb92b4 Tree support for labelFunction. Fixes #563
4bb92b4 is described below
commit 4bb92b40bc081e2b978b56ac2f538d41d858ee88
Author: Alex Harui <ah...@apache.org>
AuthorDate: Tue Jan 7 16:55:10 2020 -0800
Tree support for labelFunction. Fixes #563
---
.../royale/mx/controls/listClasses/ListBase.as | 39 +++++++++++++++++++++-
...rerFactoryForICollectionViewHierarchicalData.as | 4 +--
.../mx/controls/treeClasses/TreeItemRenderer.as | 25 ++++++--------
3 files changed, 50 insertions(+), 18 deletions(-)
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/ListBase.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/ListBase.as
index 19c3c68..13fa268 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/ListBase.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/ListBase.as
@@ -349,7 +349,44 @@ use namespace mx_internal;
(model as ISelectionModel).labelField = value;
}
- //----------------------------------
+ //----------------------------------
+ // labelFunction
+ //----------------------------------
+
+ private var _labelFunction:Function;
+
+ /**
+ * The name of the field in the data provider items to display as the label.
+ * By default the list looks for a property named <code>label</code>
+ * on each item and displays it.
+ * However, if the data objects do not contain a <code>label</code>
+ * property, you can set the <code>labelField</code> property to
+ * use a different property in the data object. An example would be
+ * "FullName" when viewing a set of people names fetched from a database.
+ *
+ * @default "label"
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ * @royaleignorecoercion org.apache.royale.core.ISelectionModel
+ */
+ public function get labelFunction():Function
+ {
+ return _labelFunction;
+ }
+
+ /**
+ * @private
+ * @royaleignorecoercion org.apache.royale.core.ISelectionModel
+ */
+ public function set labelFunction(value:Function):void
+ {
+ _labelFunction = value;
+ }
+
+ //----------------------------------
// selectedIndex
//----------------------------------
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/treeClasses/DataItemRendererFactoryForICollectionViewHierarchicalData.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/treeClasses/DataItemRendererFactoryForICollectionViewHierarchicalData.as
index bb8b0ff..60604ea 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/treeClasses/DataItemRendererFactoryForICollectionViewHierarchicalData.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/treeClasses/DataItemRendererFactoryForICollectionViewHierarchicalData.as
@@ -45,7 +45,6 @@ package mx.controls.treeClasses
import org.apache.royale.events.ItemRendererEvent;
import org.apache.royale.html.List;
import org.apache.royale.html.beads.DataItemRendererFactoryForCollectionView;
- import org.apache.royale.html.supportClasses.TreeListData;
[Event(name="itemRendererCreated",type="org.apache.royale.events.ItemRendererEvent")]
@@ -152,10 +151,11 @@ package mx.controls.treeClasses
var hasChildren:Boolean = treeData.hasChildren(data);
// Set the listData with the depth of this item
- var treeListData:org.apache.royale.html.supportClasses.TreeListData = new org.apache.royale.html.supportClasses.TreeListData();
+ var treeListData:TreeListData = new TreeListData();
treeListData.depth = depth;
treeListData.isOpen = isOpen;
treeListData.hasChildren = hasChildren;
+ treeListData.owner = _strand;
ir.listData = treeListData;
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/treeClasses/TreeItemRenderer.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/treeClasses/TreeItemRenderer.as
index 687c84c..94e2895 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/treeClasses/TreeItemRenderer.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/treeClasses/TreeItemRenderer.as
@@ -48,12 +48,12 @@ import mx.utils.PopUpUtil;
*/
import mx.controls.Label;
import mx.controls.listClasses.BaseListData;
+import mx.controls.listClasses.IDropInListItemRenderer;
+import mx.controls.Tree;
+import mx.core.IDataRenderer;
import mx.core.IFlexDisplayObject;
-
-import mx.core.mx_internal;
import mx.core.UIComponent;
-import mx.core.IDataRenderer;
-import mx.controls.listClasses.IDropInListItemRenderer;
+import mx.core.mx_internal;
use namespace mx_internal;
@@ -297,9 +297,13 @@ public class TreeItemRenderer extends UIComponent
public function set data(value:Object):void
{
_data = value;
- text = dataToString(value);
-
var treeListData:mx.controls.treeClasses.TreeListData = listData as mx.controls.treeClasses.TreeListData;
+
+ if ((treeListData.owner as Tree).labelFunction)
+ text = (treeListData.owner as Tree).labelFunction(data);
+ else
+ text = dataToString(value);
+
var indentSpace:String = " ";
var extraSpace:String = " ";
@@ -342,15 +346,6 @@ public class TreeItemRenderer extends UIComponent
}
public function set listData(value:Object):void
{
- if (value is org.apache.royale.html.supportClasses.TreeListData)
- {
- var otld:org.apache.royale.html.supportClasses.TreeListData = value as org.apache.royale.html.supportClasses.TreeListData;
- var tld:mx.controls.treeClasses.TreeListData = new mx.controls.treeClasses.TreeListData();
- tld.depth = otld.depth;
- tld.hasChildren = otld.hasChildren;
- tld.isOpen = otld.isOpen;
- value = tld;
- }
_listData = value;
}