This is an automated email from the ASF dual-hosted git repository.

harbs 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 9fac6c4  Make sure we use the model getter to initialize it
9fac6c4 is described below

commit 9fac6c476d0e60426124c6a6c449d39fc6929823
Author: Harbs <[email protected]>
AuthorDate: Sun Jan 2 13:58:52 2022 +0200

    Make sure we use the model getter to initialize it
---
 .../org/apache/royale/html/beads/AccordionView.as  |  5 ++-
 .../CollectionChangeUpdateForArrayListData.as      |  6 ++--
 .../html/beads/CollectionSelectedItemByField.as    |  3 +-
 .../apache/royale/html/beads/DataContainerView.as  |  5 ++-
 .../html/beads/DataGridColumnChangePropagator.as   |  2 +-
 .../beads/DataGridColumnForceChangePropagator.as   |  2 +-
 .../html/beads/DataProviderChangeNotifier.as       |  4 ++-
 .../beads/DataProviderCollectionChangeNotifier.as  |  5 +--
 .../html/beads/DataProviderItemsChangeNotifier.as  | 27 ++++++++--------
 .../apache/royale/html/beads/DropDownListView.as   |  3 +-
 ...cRemoveAllByNullItemRendererForArrayListData.as |  6 ++--
 ...DynamicRemoveAllItemRendererForArrayListData.as |  4 +--
 .../html/beads/EasyDataProviderChangeNotifier.as   |  6 ++--
 .../html/beads/IndexedItemRendererInitializer.as   |  3 +-
 .../royale/html/beads/ItemRendererFactoryBase.as   |  3 +-
 .../org/apache/royale/html/beads/ListView.as       |  5 +--
 .../beads/TextItemRendererFactoryForArrayData.as   |  3 +-
 .../TextItemRendererFactoryForStringVectorData.as  |  3 +-
 .../beads/VirtualDataItemRendererFactoryBase.as    |  3 +-
 .../apache/royale/html/beads/VirtualListView.as    |  3 +-
 .../beads/controllers/DropDownListController.as    |  5 +--
 .../ListSingleSelectionMouseController.as          |  7 ++--
 .../beads/layouts/VirtualListVerticalLayout.as     |  3 +-
 .../org/apache/royale/html/util/getModelByType.as  | 37 ++++++++++++++++++++++
 24 files changed, 108 insertions(+), 45 deletions(-)

diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/AccordionView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/AccordionView.as
index ee689ae..0542b46 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/AccordionView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/AccordionView.as
@@ -28,6 +28,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.html.beads.layouts.IOneFlexibleChildLayout;
        import org.apache.royale.html.supportClasses.ICollapsible;
        import org.apache.royale.utils.loadBeadFromValuesManager;
+       import org.apache.royale.html.util.getModelByType;
        
        /**
         * The AccordionView sets up the components for the Accordion component.
@@ -70,7 +71,9 @@ package org.apache.royale.html.beads
                override protected function 
selectionChangeHandler(event:Event):void
                {
                        super.selectionChangeHandler(event);
-                       var model:ISelectionModel = 
loadBeadFromValuesManager(ISelectionModel, "iBeadModel", host) as 
ISelectionModel;
+      var model:ISelectionModel = getModelByType(_strand,ISelectionModel) as 
ISelectionModel;
+                       if(!model)
+                               model = 
loadBeadFromValuesManager(ISelectionModel, "iBeadModel", host) as 
ISelectionModel;
                        layout.flexibleChild = String(model.selectedIndex);
                }
                
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CollectionChangeUpdateForArrayListData.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CollectionChangeUpdateForArrayListData.as
index 30a3949..cf16038 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CollectionChangeUpdateForArrayListData.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CollectionChangeUpdateForArrayListData.as
@@ -26,6 +26,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.utils.sendBeadEvent;
        import org.apache.royale.core.Bead;
        import org.apache.royale.core.IHasLabelField;
+       import org.apache.royale.html.util.getModelByType;
 
 
     /**
@@ -94,8 +95,7 @@ package org.apache.royale.html.beads
                {
                        
IEventDispatcher(_strand).removeEventListener("initComplete", initComplete);
 
-                       _dataProviderModel = 
_strand.getBeadByType(IDataProviderModel) as IDataProviderModel;
-                       labelField = _dataProviderModel.labelField;
+                       labelField = dataProviderModel.labelField;
 
                        
dataProviderModel.addEventListener("dataProviderChanged", 
dataProviderChangeHandler);
 
@@ -157,7 +157,7 @@ package org.apache.royale.html.beads
                public function get dataProviderModel():IDataProviderModel
                {
                        if (_dataProviderModel == null) {
-                               _dataProviderModel = 
_strand.getBeadByType(IDataProviderModel) as IDataProviderModel;
+             _dataProviderModel = getModelByType(_strand,IDataProviderModel) 
as IDataProviderModel;
                        }
                        return _dataProviderModel;
                }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CollectionSelectedItemByField.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CollectionSelectedItemByField.as
index a2fe229..520687f 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CollectionSelectedItemByField.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CollectionSelectedItemByField.as
@@ -25,6 +25,7 @@ package org.apache.royale.html.beads
   import org.apache.royale.core.ISelectionModel;
   import org.apache.royale.events.IEventDispatcher;
   import org.apache.royale.core.Bead;
+  import org.apache.royale.html.util.getModelByType;
   
   /**
         *  The CollectionSelectedItemByField class is a specialty bead that 
can be used with
@@ -65,7 +66,7 @@ package org.apache.royale.html.beads
                override public function set strand(value:IStrand):void
                {
                        _strand = value;
-                       _model = _strand.getBeadByType(ISelectionModel) as 
ISelectionModel;
+      _model = getModelByType(_strand,ISelectionModel) as ISelectionModel;
                        listenOnStrand("selectionChanged", 
selectionChangedHandler);
                        updateHost();
                }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataContainerView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataContainerView.as
index b015741..22a491f 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataContainerView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataContainerView.as
@@ -35,6 +35,8 @@ package org.apache.royale.html.beads
        import org.apache.royale.html.supportClasses.DataItemRenderer;
        import org.apache.royale.utils.loadBeadFromValuesManager;
        import org.apache.royale.utils.sendStrandEvent;
+       import org.apache.royale.core.IStrandWithModel;
+       import org.apache.royale.html.util.getModelByType;
 
        /**
         *  The DataContainerView provides the visual elements for the 
DataContainer.
@@ -90,7 +92,8 @@ package org.apache.royale.html.beads
                 */
                protected function beadsAddedHandler(event:Event):void
                {
-                       dataModel = _strand.getBeadByType(IDataProviderModel) 
as IDataProviderModel;
+            dataModel = getModelByType(_strand,IDataProviderModel) as 
IDataProviderModel;
+
                        host.addEventListener("itemsCreated", 
itemsCreatedHandler);
                        // may be called before IDataProviderModel bead is added
                        if (dataModel) 
dataModel.addEventListener("dataProviderChanged", dataProviderChangeHandler);
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridColumnChangePropagator.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridColumnChangePropagator.as
index 70a6849..434bdb9 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridColumnChangePropagator.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridColumnChangePropagator.as
@@ -80,7 +80,7 @@ package org.apache.royale.html.beads
                        for (var i:int=0; i < lists.length; i++)
                        {
                                var list:DataGridColumnList = lists[i] as 
DataGridColumnList;
-                               var listModel:ISelectionModel = 
list.getBeadByType(IBeadModel) as ISelectionModel;
+                               var listModel:ISelectionModel = list.model as 
ISelectionModel;
                                listModel.dataProvider = 
sharedModel.dataProvider;
                        }
                }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridColumnForceChangePropagator.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridColumnForceChangePropagator.as
index 5b1c55c..168e0b2 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridColumnForceChangePropagator.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridColumnForceChangePropagator.as
@@ -66,7 +66,7 @@ package org.apache.royale.html.beads
                        for (var i:int=0; i < lists.length; i++)
                        {
                                var list:DataGridColumnList = lists[i] as 
DataGridColumnList;
-                               var listModel:ISelectionModel = 
list.getBeadByType(IBeadModel) as ISelectionModel;
+                               var listModel:ISelectionModel = list.model as 
ISelectionModel;
                                if (listModel.dataProvider != 
sharedModel.dataProvider)
                                {
                                        listModel.dataProvider = 
sharedModel.dataProvider;
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataProviderChangeNotifier.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataProviderChangeNotifier.as
index 4275ffe..5c4f684 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataProviderChangeNotifier.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataProviderChangeNotifier.as
@@ -22,6 +22,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.core.ISelectionModel;
        import org.apache.royale.events.Event;
        import org.apache.royale.html.supportClasses.DataProviderNotifierBase;
+       import org.apache.royale.html.util.getModelByType;
 
     /**
         *  The DataProviderChangeNotifier notifies listeners when a selection 
model's
@@ -69,7 +70,8 @@ package org.apache.royale.html.beads
                 */
                protected function handleDataProviderChanges(event:Event):void
                {
-                       var selectionModel:ISelectionModel = 
_strand.getBeadByType(ISelectionModel) as ISelectionModel;
+      var selectionModel:ISelectionModel = 
getModelByType(_strand,ISelectionModel) as ISelectionModel;
+
                        selectionModel.dispatchEvent(new 
Event("dataProviderChanged"));
                }
                
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataProviderCollectionChangeNotifier.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataProviderCollectionChangeNotifier.as
index b5bae12..9240647 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataProviderCollectionChangeNotifier.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataProviderCollectionChangeNotifier.as
@@ -23,6 +23,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.events.Event;
        import org.apache.royale.collections.ArrayList;
     import org.apache.royale.html.supportClasses.DataProviderNotifierBase;
+    import org.apache.royale.html.util.getModelByType;
 
     /**
         *  The DataProviderCollectionChangeNotifier notifies listeners when a 
selection model's
@@ -62,8 +63,8 @@ package org.apache.royale.html.beads
 
                private function handleCollectionChanged(event:Event):void
                {
-            var selectionModel:ISelectionModel = 
_strand.getBeadByType(ISelectionModel) as ISelectionModel;
-            selectionModel.dispatchEvent(new Event("dataProviderChanged"));
+                       var selectionModel:ISelectionModel = 
getModelByType(_strand,ISelectionModel) as ISelectionModel;
+                       selectionModel.dispatchEvent(new 
Event("dataProviderChanged"));
                }
        }
 }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataProviderItemsChangeNotifier.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataProviderItemsChangeNotifier.as
index 8c77262..47dd555 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataProviderItemsChangeNotifier.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataProviderItemsChangeNotifier.as
@@ -22,9 +22,10 @@ package org.apache.royale.html.beads
        import org.apache.royale.events.Event;
        import org.apache.royale.collections.IArrayList;
        import org.apache.royale.events.CollectionEvent;
-    import org.apache.royale.html.supportClasses.DataProviderNotifierBase;
+       import org.apache.royale.html.supportClasses.DataProviderNotifierBase;
+       import org.apache.royale.html.util.getModelByType;
 
-    /**
+       /**
         *  The DataProviderItemsChangeNotifier notifies listeners when to 
selection model's
         *  ArrayList dataProvider item has been added, removed or updated.
         *  
@@ -66,7 +67,7 @@ package org.apache.royale.html.beads
                        dataProvider = object[propertyName] as IArrayList;      
                
                        
dataProvider.addEventListener(CollectionEvent.ITEM_ADDED, handleItemAdded);
                        
dataProvider.addEventListener(CollectionEvent.ITEM_REMOVED, handleItemRemoved);
-            dataProvider.addEventListener(CollectionEvent.ITEM_UPDATED, 
handleItemUpdated);
+                       
dataProvider.addEventListener(CollectionEvent.ITEM_UPDATED, handleItemUpdated);
                }
 
                /**
@@ -74,7 +75,7 @@ package org.apache.royale.html.beads
                 */
                private function handleItemAdded(event:CollectionEvent):void
                {
-                       var selectionModel:ISelectionModel = 
_strand.getBeadByType(ISelectionModel) as ISelectionModel;
+      var selectionModel:ISelectionModel = 
getModelByType(_strand,ISelectionModel) as ISelectionModel;
                        selectionModel.dispatchEvent(event.cloneEvent() as 
CollectionEvent);
                }
                
@@ -83,17 +84,17 @@ package org.apache.royale.html.beads
                 */
                private function handleItemRemoved(event:CollectionEvent):void
                {
-                       var selectionModel:ISelectionModel = 
_strand.getBeadByType(ISelectionModel) as ISelectionModel;
+                       var selectionModel:ISelectionModel = 
getModelByType(_strand,ISelectionModel) as ISelectionModel;
                        selectionModel.dispatchEvent(event.cloneEvent() as 
CollectionEvent);
                }
 
-        /**
-         * @private
-         */
-        private function handleItemUpdated(event:CollectionEvent):void
-        {
-            var selectionModel:ISelectionModel = 
_strand.getBeadByType(ISelectionModel) as ISelectionModel;
-            selectionModel.dispatchEvent(event.cloneEvent() as 
CollectionEvent);
-        }
+               /**
+                * @private
+                */
+               private function handleItemUpdated(event:CollectionEvent):void
+               {
+                       var selectionModel:ISelectionModel = 
getModelByType(_strand,ISelectionModel) as ISelectionModel;
+                       selectionModel.dispatchEvent(event.cloneEvent() as 
CollectionEvent);
+               }
        }
 }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DropDownListView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DropDownListView.as
index f446466..b26e5e9 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DropDownListView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DropDownListView.as
@@ -39,6 +39,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.utils.SolidBorderUtil;
        import org.apache.royale.utils.UIUtils;
     import org.apache.royale.html.beads.IDropDownListView;
+    import org.apache.royale.html.util.getModelByType;
     
     /**
      *  The DropDownListView class is the default view for
@@ -116,7 +117,7 @@ package org.apache.royale.html.beads
                override public function set strand(value:IStrand):void
                {
                        super.strand = value;
-            selectionModel = value.getBeadByType(ISelectionModel) as 
ISelectionModel;
+            selectionModel = getModelByType(value,ISelectionModel) as 
ISelectionModel;
             selectionModel.addEventListener("selectedIndexChanged", 
selectionChangeHandler);
             selectionModel.addEventListener("dataProviderChanged", 
selectionChangeHandler);
                        shape = new Shape();
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllByNullItemRendererForArrayListData.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllByNullItemRendererForArrayListData.as
index 3046ee7..7a7a664 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllByNullItemRendererForArrayListData.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllByNullItemRendererForArrayListData.as
@@ -29,6 +29,9 @@ package org.apache.royale.html.beads
        import org.apache.royale.html.beads.IListView;
        import org.apache.royale.core.Bead;
        import org.apache.royale.utils.sendStrandEvent;
+       import org.apache.royale.core.IUIBase;
+       import org.apache.royale.core.IStrandWithModel;
+       import org.apache.royale.html.util.getModelByType;
 
        /**
         * Handles the removal of all itemRenderers once data source is being 
set to null.
@@ -80,7 +83,6 @@ package org.apache.royale.html.beads
                {
                        (_strand as 
IEventDispatcher).removeEventListener("initComplete", initComplete);
                        
-                       _dataProviderModel = 
_strand.getBeadByType(ISelectionModel) as ISelectionModel;
                        
dataProviderModel.addEventListener("dataProviderChanged", 
dataProviderChangeHandler);   
                        
                        // invoke now in case "dataProviderChanged" has already 
been dispatched.
@@ -125,7 +127,7 @@ package org.apache.royale.html.beads
                public function get dataProviderModel(): IDataProviderModel
                {
                        if (_dataProviderModel == null && _strand != null) {
-                               _dataProviderModel = 
_strand.getBeadByType(IDataProviderModel) as IDataProviderModel;
+             _dataProviderModel = getModelByType(_strand,IDataProviderModel) 
as IDataProviderModel;
                        }
                        return _dataProviderModel;
                }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllItemRendererForArrayListData.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllItemRendererForArrayListData.as
index 4f6a069..4546b18 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllItemRendererForArrayListData.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllItemRendererForArrayListData.as
@@ -29,6 +29,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.html.beads.IListView;
        import org.apache.royale.core.Bead;
        import org.apache.royale.utils.sendStrandEvent;
+       import org.apache.royale.html.util.getModelByType;
 
        /**
         *  Handles the removal of all itemRenderers once the all items has 
been removed
@@ -82,7 +83,6 @@ package org.apache.royale.html.beads
                {
                        (_strand as 
IEventDispatcher).removeEventListener("initComplete", initComplete);
                        
-                       _dataProviderModel = 
_strand.getBeadByType(ISelectionModel) as ISelectionModel;
                        
dataProviderModel.addEventListener("dataProviderChanged", 
dataProviderChangeHandler);   
                        
                        // invoke now in case "dataProviderChanged" has already 
been dispatched.
@@ -146,7 +146,7 @@ package org.apache.royale.html.beads
                public function get dataProviderModel(): IDataProviderModel
                {
                        if (_dataProviderModel == null && _strand != null) {
-                               _dataProviderModel = 
_strand.getBeadByType(IDataProviderModel) as IDataProviderModel;
+             _dataProviderModel = getModelByType(_strand,IDataProviderModel) 
as IDataProviderModel;
                        }
                        return _dataProviderModel;
                }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/EasyDataProviderChangeNotifier.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/EasyDataProviderChangeNotifier.as
index 81df4d7..1e99045 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/EasyDataProviderChangeNotifier.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/EasyDataProviderChangeNotifier.as
@@ -21,8 +21,8 @@ package org.apache.royale.html.beads
        import org.apache.royale.collections.IArrayList;
        import org.apache.royale.core.ISelectionModel;
        import org.apache.royale.core.IStrand;
-       import org.apache.royale.core.UIBase;
        import org.apache.royale.events.Event;
+       import org.apache.royale.core.IStrandWithModel;
 
     /**
         *  The EasyDataProviderChangeNotifier is similar to 
DataProviderChangeNotifier
@@ -95,12 +95,12 @@ package org.apache.royale.html.beads
                }
                
                /**
-                * @royaleignorecoercion org.apache.royale.core.UIBase
+                * @royaleignorecoercion org.apache.royale.core.IStrandWithModel
                 * @royaleignorecoercion org.apache.royale.core.ISelectionModel
                 */
                private function get selectionModel():ISelectionModel
                {
-                       return (_strand as UIBase).model as ISelectionModel;
+                       return (_strand as IStrandWithModel).model as 
ISelectionModel;
                }
                
        }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/IndexedItemRendererInitializer.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/IndexedItemRendererInitializer.as
index 051c110..9d21936 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/IndexedItemRendererInitializer.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/IndexedItemRendererInitializer.as
@@ -27,6 +27,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.core.IStrand;
        import org.apache.royale.utils.sendStrandEvent;
        import org.apache.royale.core.IHasLabelField;
+       import org.apache.royale.html.util.getModelByType;
 
        /**
         *  The IndexedItemRendererInitializer class initializes item renderers
@@ -78,7 +79,7 @@ package org.apache.royale.html.beads
                override public function set strand(value:IStrand):void
                {       
                        _strand = value;
-                       dataProviderModel = 
_strand.getBeadByType(IDataProviderModel) as IDataProviderModel;
+      dataProviderModel = getModelByType(_strand,IDataProviderModel) as 
IDataProviderModel;
                        labelField = dataProviderModel.labelField;              
        
                }
                
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ItemRendererFactoryBase.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ItemRendererFactoryBase.as
index 0cb509e..2d666be 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ItemRendererFactoryBase.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ItemRendererFactoryBase.as
@@ -27,6 +27,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.events.Event;
        import org.apache.royale.events.IEventDispatcher;
        import org.apache.royale.utils.loadBeadFromValuesManager;
+       import org.apache.royale.html.util.getModelByType;
 
     /**
      *  The DataItemRendererFactoryBase class is a base class
@@ -80,7 +81,7 @@ package org.apache.royale.html.beads
                protected function finishSetup(event:Event):void
                {                       
                        (_strand as 
IEventDispatcher).removeEventListener("initComplete", finishSetup);
-                       dataProviderModel = 
_strand.getBeadByType(IDataProviderModel) as IDataProviderModel;
+            dataProviderModel = getModelByType(_strand,IDataProviderModel) as 
IDataProviderModel;
                        
dataProviderModel.addEventListener("dataProviderChanged", 
dataProviderChangeHandler);
 
                        // if the host component inherits from 
DataContainerBase, the itemRendererClassFactory will 
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ListView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ListView.as
index 6547a8b..22bcd7b 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ListView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ListView.as
@@ -28,6 +28,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.core.ISelectionModel;
        import org.apache.royale.events.Event;
        import org.apache.royale.utils.getSelectionRenderBead;
+       import org.apache.royale.html.util.getModelByType;
 
        /**
         *  The List class creates the visual elements of the 
org.apache.royale.html.List
@@ -58,7 +59,7 @@ package org.apache.royale.html.beads
                 */
                override protected function handleInitComplete(event:Event):void
                {
-                       listModel = _strand.getBeadByType(ISelectionModel) as 
ISelectionModel;
+      listModel = getModelByType(_strand,ISelectionModel) as ISelectionModel;
                        listModel.addEventListener("selectedIndexChanged", 
selectionChangeHandler);
                        listModel.addEventListener("rollOverIndexChanged", 
rollOverIndexChangeHandler);
 
@@ -133,7 +134,7 @@ package org.apache.royale.html.beads
                {
                        super.handleInitComplete(event);
 
-                       listModel = _strand.getBeadByType(ISelectionModel) as 
ISelectionModel;
+      listModel = getModelByType(_strand,ISelectionModel) as ISelectionModel;
                        listModel.addEventListener("selectedIndexChanged", 
selectionChangeHandler);
                        listModel.addEventListener("rollOverIndexChanged", 
rollOverIndexChangeHandler);
                }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForArrayData.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForArrayData.as
index ea60bf1..6e7e77f 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForArrayData.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForArrayData.as
@@ -36,6 +36,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.utils.sendStrandEvent;
        import org.apache.royale.core.ILabelFieldItemRenderer;
        import org.apache.royale.core.IIndexedItemRenderer;
+       import org.apache.royale.html.util.getModelByType;
 
        
[Event(name="itemRendererCreated",type="org.apache.royale.events.ItemRendererEvent")]
 
@@ -90,7 +91,7 @@ package org.apache.royale.html.beads
                 */
                private function finishSetup(event:Event):void
                {
-                       selectionModel = _strand.getBeadByType(ISelectionModel) 
as ISelectionModel;
+      selectionModel = getModelByType(_strand,ISelectionModel) as 
ISelectionModel;
                        selectionModel.addEventListener("dataProviderChanged", 
dataProviderChangeHandler);
 
                        // if the host component inherits from 
DataContainerBase, the itemRendererClassFactory will
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForStringVectorData.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForStringVectorData.as
index 166b223..5e93685 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForStringVectorData.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForStringVectorData.as
@@ -31,6 +31,7 @@ package org.apache.royale.html.beads
     import org.apache.royale.html.beads.IListView;
        import org.apache.royale.utils.loadBeadFromValuesManager;
        import org.apache.royale.core.DispatcherBead;
+       import org.apache.royale.html.util.getModelByType;
        
        
[Event(name="itemRendererCreated",type="org.apache.royale.events.ItemRendererEvent")]
 
@@ -80,7 +81,7 @@ package org.apache.royale.html.beads
                
                private function finishSetup(event:Event):void
                {
-                       selectionModel = _strand.getBeadByType(ISelectionModel) 
as ISelectionModel;
+            selectionModel = getModelByType(_strand,ISelectionModel) as 
ISelectionModel;
                        selectionModel.addEventListener("dataProviderChanged", 
dataProviderChangeHandler);
                        
                        // if the host component inherits from 
DataContainerBase, the itemRendererClassFactory will 
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryBase.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryBase.as
index e07c75d..ef7df5f 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryBase.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryBase.as
@@ -38,6 +38,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.core.DispatcherBead;
        import org.apache.royale.core.IHasLabelField;
        import org.apache.royale.core.IHasDataField;
+       import org.apache.royale.html.util.getModelByType;
 
     
[Event(name="itemRendererCreated",type="org.apache.royale.events.ItemRendererEvent")]
        
@@ -119,7 +120,7 @@ package org.apache.royale.html.beads
                 */
                private function finishSetup(event:Event):void
                {                       
-                       dataProviderModel = 
_strand.getBeadByType(IDataProviderModel) as IDataProviderModel;
+            dataProviderModel = getModelByType(_strand,IDataProviderModel) as 
IDataProviderModel;
                        
dataProviderModel.addEventListener("dataProviderChanged", 
dataProviderChangeHandler);
                        labelField = dataProviderModel.labelField;
 
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualListView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualListView.as
index 4a965e9..69b4cc5 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualListView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualListView.as
@@ -28,6 +28,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.events.IEventDispatcher;
        import org.apache.royale.events.ItemRendererEvent;
        import org.apache.royale.utils.getSelectionRenderBead;
+       import org.apache.royale.html.util.getModelByType;
                
        /**
         *  The List class creates the visual elements of the 
org.apache.royale.html.List
@@ -56,7 +57,7 @@ package org.apache.royale.html.beads
                 */
                override protected function handleInitComplete(event:Event):void
                {
-                       listModel = _strand.getBeadByType(ISelectionModel) as 
ISelectionModel;
+      listModel = getModelByType(_strand,ISelectionModel) as ISelectionModel;
                        listModel.addEventListener("selectedIndexChanged", 
selectionChangeHandler);
                        listModel.addEventListener("rollOverIndexChanged", 
rollOverIndexChangeHandler);
                        var mapper:IEventDispatcher = 
_strand.getBeadByType(IDataProviderItemRendererMapper) as IEventDispatcher;
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DropDownListController.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DropDownListController.as
index 2ccab69..5207380 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DropDownListController.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DropDownListController.as
@@ -32,6 +32,7 @@ package org.apache.royale.html.beads.controllers
        import org.apache.royale.events.MouseEvent;
        import org.apache.royale.html.beads.IDropDownListView;
        import org.apache.royale.utils.sendStrandEvent;
+       import org.apache.royale.html.util.getModelByType;
 
     /**
      *  The DropDownListController class is the controller for
@@ -80,7 +81,7 @@ package org.apache.royale.html.beads.controllers
         private function 
clickHandler(event:org.apache.royale.events.MouseEvent):void
         {
             var viewBead:IDropDownListView = 
_strand.getBeadByType(IDropDownListView) as IDropDownListView;
-            var selectionModel:ISelectionModel = 
_strand.getBeadByType(ISelectionModel) as ISelectionModel;
+            var selectionModel:ISelectionModel = 
getModelByType(_strand,ISelectionModel) as ISelectionModel;
             var popUpModel:ISelectionModel = UIBase(viewBead.popUp).model as 
ISelectionModel;
             DisplayObject(viewBead.popUp).width = DisplayObject(_strand).width;
             popUpModel.dataProvider = selectionModel.dataProvider;
@@ -108,7 +109,7 @@ package org.apache.royale.html.beads.controllers
         {
             var viewBead:IDropDownListView = 
_strand.getBeadByType(IDropDownListView) as IDropDownListView;
             viewBead.popUpVisible = false;
-            var selectionModel:ISelectionModel = 
_strand.getBeadByType(ISelectionModel) as ISelectionModel;
+            var selectionModel:ISelectionModel = 
getModelByType(_strand,ISelectionModel) as ISelectionModel;
             var popUpModel:ISelectionModel = UIBase(viewBead.popUp).model as 
ISelectionModel;
             selectionModel.selectedIndex = popUpModel.selectedIndex;
                        sendStrandEvent(_strand,"change");
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListSingleSelectionMouseController.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListSingleSelectionMouseController.as
index 8152d8c..bd03f7a 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListSingleSelectionMouseController.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListSingleSelectionMouseController.as
@@ -34,6 +34,8 @@ package org.apache.royale.html.beads.controllers
        import org.apache.royale.html.beads.IListView;
        import org.apache.royale.utils.getSelectionRenderBead;
        import org.apache.royale.utils.sendEvent;
+       import org.apache.royale.html.util.getModelByType;
+       import org.apache.royale.core.IStrandWithModelView;
 
        /**
         *  The ListSingleSelectionMouseController class is a controller for
@@ -108,8 +110,9 @@ package org.apache.royale.html.beads.controllers
                override public function set strand(value:IStrand):void
                {
                        _strand = value;
-                       listModel = value.getBeadByType(ISelectionModel) as 
ISelectionModel;
-                       listView = value.getBeadByType(IListView) as IListView;
+                       var strandType:IStrandWithModelView = value as 
IStrandWithModelView;
+      listModel = strandType.model as ISelectionModel;
+                       listView = strandType.view as IListView;
                        listenOnStrand("itemAdded", handleItemAdded);
                        listenOnStrand("itemRemoved", handleItemRemoved);
                }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VirtualListVerticalLayout.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VirtualListVerticalLayout.as
index 7a0a8fb..81adc3d 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VirtualListVerticalLayout.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VirtualListVerticalLayout.as
@@ -42,6 +42,7 @@ package org.apache.royale.html.beads.layouts
        import org.apache.royale.core.IStrandWithPresentationModel;
        import org.apache.royale.core.LayoutBase;
        import org.apache.royale.events.Event;
+       import org.apache.royale.html.util.getModelByType;
 
         
        /**
@@ -76,7 +77,7 @@ package org.apache.royale.html.beads.layouts
         override public function set strand(value:IStrand):void
         {
             super.strand = value;
-            dataProviderModel = host.getBeadByType(IDataProviderModel) as 
IDataProviderModel;
+            dataProviderModel = getModelByType(_strand,IDataProviderModel) as 
IDataProviderModel;
             dataProviderModel.addEventListener("dataProviderChanged", 
dataProviderChangeHandler);
 
             COMPILE::JS
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/util/getModelByType.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/util/getModelByType.as
new file mode 100644
index 0000000..041e1d2
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/util/getModelByType.as
@@ -0,0 +1,37 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 "License"); 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
+{
+       import org.apache.royale.core.IStrand;
+       import org.apache.royale.core.IStrandWithModel;
+       import org.apache.royale.core.IBeadModel;
+
+       /**
+        * @royaleignorecoercion org.apache.royale.core.IBeadModel
+        * @royaleignorecoercion org.apache.royale.core.IStrandWithModel
+        */
+       public function getModelByType(strand:IStrand,type:Class):IBeadModel
+       {
+               var strandWithModel:IStrandWithModel = strand as 
IStrandWithModel;
+               if(strandWithModel.model is type)
+                       return strandWithModel.model as IBeadModel;
+               
+               return strand.getBeadByType(type) as IBeadModel;
+       }
+}
\ No newline at end of file

Reply via email to