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
commit 80846647c8fb99de67c9b7abbf2d46ff882f17a4 Author: Alex Harui <[email protected]> AuthorDate: Thu Sep 27 00:46:34 2018 -0700 use ICollectionView --- .../src/main/royale/mx/controls/ComboBase.as | 35 +++++++++++++++++++++ .../royale/mx/controls/listClasses/ListBase.as | 36 ++++++++++++++++++++++ 2 files changed, 71 insertions(+) diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ComboBase.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ComboBase.as index 9a640a1..118144e 100644 --- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ComboBase.as +++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ComboBase.as @@ -65,6 +65,11 @@ import org.apache.royale.html.beads.IComboBoxView; import org.apache.royale.core.IComboBoxModel; import org.apache.royale.core.IUIBase; import mx.events.FlexEvent; +import mx.collections.IList; +import mx.collections.XMLListCollection; +import mx.collections.ArrayCollection; +import mx.collections.ICollectionView; +import mx.collections.ListCollectionView; /** * The alpha of the content background for this component. @@ -472,6 +477,36 @@ public class ComboBase extends UIComponent implements /*IIMESupport,*/ IFocusMan */ public function set dataProvider(value:Object):void { + if (value is Array) + { + value = new ArrayCollection(value as Array); + } + else if (value is ICollectionView) + { + value = ICollectionView(value); + } + else if (value is IList) + { + value = new ListCollectionView(IList(value)); + } + else if (value is XMLList) + { + value = new XMLListCollection(value as XMLList); + } + else if (value is XML) + { + var xl:XMLList = new XMLList(); + xl += value; + value = new XMLListCollection(xl); + } + else + { + // convert it to an array containing this one item + var tmp:Array = []; + if (value != null) + tmp.push(value); + value = new ArrayCollection(tmp); + } IComboBoxModel(model).dataProvider = value; if (value && IComboBoxModel(model).selectedIndex == -1) IComboBoxModel(model).selectedIndex = 0; 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 1d723cc..ea2cad6 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 @@ -19,12 +19,18 @@ package mx.controls.listClasses { +import mx.collections.ArrayCollection; +import mx.collections.ICollectionView; +import mx.collections.IList; +import mx.collections.ListCollectionView; +import mx.collections.XMLListCollection; import mx.core.EdgeMetrics; import mx.core.IFactory; import mx.core.IUIComponent; import mx.core.ScrollPolicy; import mx.core.UIComponent; import mx.core.mx_internal; +import mx.events.CollectionEvent; import mx.utils.UIDUtil; import org.apache.royale.core.ContainerBaseStrandChildren; @@ -208,6 +214,36 @@ use namespace mx_internal; */ public function set dataProvider(value:Object):void { + if (value is Array) + { + value = new ArrayCollection(value as Array); + } + else if (value is ICollectionView) + { + value = ICollectionView(value); + } + else if (value is IList) + { + value = new ListCollectionView(IList(value)); + } + else if (value is XMLList) + { + value = new XMLListCollection(value as XMLList); + } + else if (value is XML) + { + var xl:XMLList = new XMLList(); + xl += value; + value = new XMLListCollection(xl); + } + else + { + // convert it to an array containing this one item + var tmp:Array = []; + if (value != null) + tmp.push(value); + value = new ArrayCollection(tmp); + } (model as ISelectionModel).dataProvider = value; }
