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" />

Reply via email to