Added List to the Express framework; its dataProvider can be either Array or ArrayList and it will set up the correct beads to handle it.
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/d1b6c5d2 Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/d1b6c5d2 Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/d1b6c5d2 Branch: refs/heads/feature/fontawesome Commit: d1b6c5d270820219573ec8218d49973dfe452164 Parents: ed7f71b Author: Peter Ent <p...@apache.org> Authored: Mon Jan 9 14:23:51 2017 -0500 Committer: Peter Ent <p...@apache.org> Committed: Mon Jan 9 14:23:51 2017 -0500 ---------------------------------------------------------------------- .../Express/src/main/flex/ExpressClasses.as | 1 + .../main/flex/org/apache/flex/express/List.as | 64 ++++++++++++++++++++ .../src/main/resources/express-manifest.xml | 2 +- 3 files changed, 66 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d1b6c5d2/frameworks/projects/Express/src/main/flex/ExpressClasses.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Express/src/main/flex/ExpressClasses.as b/frameworks/projects/Express/src/main/flex/ExpressClasses.as index 7c9da2a..70c74de 100644 --- a/frameworks/projects/Express/src/main/flex/ExpressClasses.as +++ b/frameworks/projects/Express/src/main/flex/ExpressClasses.as @@ -32,6 +32,7 @@ internal class ExpressClasses import org.apache.flex.express.Container; Container; import org.apache.flex.express.HContainer; HContainer; import org.apache.flex.express.HView; HView; + import org.apache.flex.express.List; List; import org.apache.flex.express.MXMLItemRenderer; MXMLItemRenderer; import org.apache.flex.express.TextInput; TextInput; import org.apache.flex.express.VContainer; VContainer; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d1b6c5d2/frameworks/projects/Express/src/main/flex/org/apache/flex/express/List.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Express/src/main/flex/org/apache/flex/express/List.as b/frameworks/projects/Express/src/main/flex/org/apache/flex/express/List.as new file mode 100644 index 0000000..258ae77 --- /dev/null +++ b/frameworks/projects/Express/src/main/flex/org/apache/flex/express/List.as @@ -0,0 +1,64 @@ +package org.apache.flex.express +{ + import org.apache.flex.collections.ArrayList; + import org.apache.flex.core.IBead; + import org.apache.flex.events.Event; + import org.apache.flex.html.List; + import org.apache.flex.html.beads.DataItemRendererFactoryForArrayData; + import org.apache.flex.html.beads.DataItemRendererFactoryForArrayList; + import org.apache.flex.html.beads.models.ArrayListSelectionModel; + import org.apache.flex.html.beads.models.ArraySelectionModel; + + public class List extends org.apache.flex.html.List + { + public function List() + { + super(); + } + + override public function set dataProvider(value:Object):void + { + if (value is Array) { + // see if ArrayList beads are present and if so, remove them. + // see if Array beads are present and if not, add them. + + if (model != null) { + removeBead(model as IBead); + } + var newModel:ArraySelectionModel = new ArraySelectionModel(); + addBead(newModel); + + var oldFactory1:Object = getBeadByType(DataItemRendererFactoryForArrayList); + if (oldFactory1 != null) { + removeBead(oldFactory1 as IBead); + } + var newFactory1:DataItemRendererFactoryForArrayData = new DataItemRendererFactoryForArrayData(); + addBead(newFactory1); + } + else if (value is ArrayList) { + // see if Array beads are present and if so, remove them. + // see if ArrayList beads are present and if not, add them. + + if (model != null) { + removeBead(model as IBead); + } + var newListModel:ArrayListSelectionModel = new ArrayListSelectionModel(); + addBead(newListModel); + + var oldFactory2:Object = getBeadByType(DataItemRendererFactoryForArrayData); + if (oldFactory2 != null) { + removeBead(oldFactory2 as IBead); + } + var newFactory2:DataItemRendererFactoryForArrayList = new DataItemRendererFactoryForArrayList(); + addBead(newFactory2); + } + + super.dataProvider = value; + + // since the model and factory were pushed programmatically onto the strand after the original + // cycle of beads, generated an artifical "beadsAdded" to let these new beads it is OK to continue + // the start-up process. + dispatchEvent(new Event("beadsAdded")); + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d1b6c5d2/frameworks/projects/Express/src/main/resources/express-manifest.xml ---------------------------------------------------------------------- diff --git a/frameworks/projects/Express/src/main/resources/express-manifest.xml b/frameworks/projects/Express/src/main/resources/express-manifest.xml index cd5a3ff..19b0d09 100644 --- a/frameworks/projects/Express/src/main/resources/express-manifest.xml +++ b/frameworks/projects/Express/src/main/resources/express-manifest.xml @@ -26,6 +26,7 @@ <component id="Container" class="org.apache.flex.express.Container"/> <component id="HContainer" class="org.apache.flex.express.HContainer"/> <component id="HView" class="org.apache.flex.express.HView"/> + <component id="List" class="org.apache.flex.express.List"/> <component id="MXMLItemRenderer" class="org.apache.flex.express.MXMLItemRenderer"/> <component id="TextInput" class="org.apache.flex.express.TextInput"/> <component id="VContainer" class="org.apache.flex.express.VContainer"/> @@ -44,7 +45,6 @@ <component id="TextButton" class="org.apache.flex.html.TextButton" lookupOnly="true" /> <component id="ToggleTextButton" class="org.apache.flex.html.ToggleTextButton" lookupOnly="true" /> <component id="TextArea" class="org.apache.flex.html.TextArea" lookupOnly="true" /> - <component id="List" class="org.apache.flex.html.List" lookupOnly="true" /> <component id="SimpleList" class="org.apache.flex.html.SimpleList" lookupOnly="true" /> <component id="CheckBox" class="org.apache.flex.html.CheckBox" lookupOnly="true" /> <component id="RadioButton" class="org.apache.flex.html.RadioButton" lookupOnly="true" />