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

commit 79d755ed6423bb31bf627d788704cc099d9dd0fe
Author: Harbs <[email protected]>
AuthorDate: Sun Jan 2 23:12:25 2022 +0200

    mx models
---
 .../beads/AdvancedDataGridHeaderLayout.as          |  8 ++++++--
 .../royale/mx/containers/beads/VirtualListView.as  |  3 ++-
 .../MXRoyale/src/main/royale/mx/controls/Menu.as   | 15 ++++----------
 .../AdvancedDataGridItemRenderer.as                |  2 +-
 .../AdvancedDataGridItemRendererInitializer.as     |  2 +-
 .../mx/controls/beads/CSSImageAndTextButtonView.as |  3 ++-
 .../main/royale/mx/controls/beads/CheckBoxView.as  |  3 ++-
 .../mx/controls/beads/DataGridColumnResizeBead.as  | 12 +++++------
 .../beads/DataGridItemRendererInitializer.as       |  2 +-
 .../beads/DataGridLinesBeadForICollectionView.as   | 19 +++++++++++------
 .../main/royale/mx/controls/beads/DataGridView.as  | 12 +++++------
 .../main/royale/mx/controls/beads/DateFieldView.as |  3 ++-
 .../mx/controls/beads/MultiSelectionListView.as    |  6 ++++--
 .../royale/mx/controls/beads/RadioButtonView.as    |  3 ++-
 .../ListMultiSelectionMouseController.as           |  3 ++-
 .../beads/layouts/AdvancedDataGridLayout.as        |  6 ++++--
 .../controls/beads/layouts/DataGridHeaderLayout.as |  6 ++++--
 .../dataGridClasses/DataGridItemRenderer.as        |  2 +-
 .../royale/mx/controls/listClasses/ListBase.as     | 10 +--------
 .../apache/royale/mobile/beads/DatePickerView.as   | 10 ++++-----
 .../royale/mobile/beads/StackedViewManagerView.as  | 16 +++++++--------
 .../royale/mobile/beads/TabbedViewManagerView.as   | 10 ++++-----
 .../apache/royale/mobile/beads/ToggleSwitchView.as | 24 ++++++++++++----------
 .../royale/mobile/beads/ViewManagerViewBase.as     | 10 ++++-----
 24 files changed, 100 insertions(+), 90 deletions(-)

diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/containers/beads/AdvancedDataGridHeaderLayout.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/containers/beads/AdvancedDataGridHeaderLayout.as
index 66c43c4..c25bd9b 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/containers/beads/AdvancedDataGridHeaderLayout.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/containers/beads/AdvancedDataGridHeaderLayout.as
@@ -123,7 +123,11 @@ public class AdvancedDataGridHeaderLayout extends 
LayoutBase
     //  Overridden methods
     //
     
//--------------------------------------------------------------------------
-
+    /**
+     * @royaleignorecoercion org.apache.royale.core.IStrandWithModel
+     * @royaleignorecoercion org.apache.royale.html.beads.models.ButtonBarModel
+     * @royaleemitcoercion org.apache.royale.core.ILayoutChild
+     */
        override public function layout():Boolean
        {
                // ignore other lifecycle layouts until the DP is set
@@ -132,7 +136,7 @@ public class AdvancedDataGridHeaderLayout extends LayoutBase
                
         var contentView:ILayoutView = layoutView;
         
-        var model:ButtonBarModel = (host as 
IStrand).getBeadByType(ButtonBarModel) as ButtonBarModel;
+        var model:ButtonBarModel = (_strand as IStrandWithModel).model as 
ButtonBarModel;
         if (model) {
             buttonWidths = model.buttonWidths;
         }
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/containers/beads/VirtualListView.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/containers/beads/VirtualListView.as
index ef9b125..bb36273 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/containers/beads/VirtualListView.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/containers/beads/VirtualListView.as
@@ -28,6 +28,7 @@ package mx.containers.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 mx.containers.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/MXRoyale/src/main/royale/mx/controls/Menu.as 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/Menu.as
index 7d22b9c..b2a3532 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/Menu.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/Menu.as
@@ -98,6 +98,7 @@ package mx.controls
        import org.apache.royale.core.ILayoutParent;
        import org.apache.royale.core.ILayoutView;
        import org.apache.royale.core.IHasLabelField;
+       import org.apache.royale.html.util.getModelByType;
        
        use namespace mx_internal;
        
@@ -2824,17 +2825,9 @@ package mx.controls
         public function get presentationModel():IBead
         {
             if (_presentationModel == null) {
-                var bead:IBead = getBeadByType(IListPresentationModel);
-                if (bead)
-                    _presentationModel = bead as IListPresentationModel;
-                else
-                {
-                    var c:Class = ValuesManager.valuesImpl.getValue(this, 
"iListPresentationModel");
-                    if (c) {
-                        _presentationModel = new c() as IListPresentationModel;
-                        addBead(_presentationModel as IBead);
-                    }
-                }
+                               var bead:IBead = 
loadBeadFromValuesManager(IListPresentationModel,"iListPresentationModel",this);
+                               if (bead)
+                                       _presentationModel = bead as 
IListPresentationModel;
             }
             
             return _presentationModel;
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridItemRenderer.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridItemRenderer.as
index f1dd48d..9790de4 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridItemRenderer.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridItemRenderer.as
@@ -154,7 +154,7 @@ public class AdvancedDataGridItemRenderer extends 
StringItemRenderer
     {
         var treeListData:AdvancedDataGridListData = listData as 
AdvancedDataGridListData;
         var owner:AdvancedDataGrid = treeListData.owner as AdvancedDataGrid;
-        var adgModel:DataGridICollectionViewModel = 
owner.getBeadByType(DataGridICollectionViewModel) as 
DataGridICollectionViewModel;
+        var adgModel:DataGridICollectionViewModel = owner.model as 
DataGridICollectionViewModel;
         var column:DataGridColumn = adgModel.columns[treeListData.columnIndex];
 
         super.data = value;
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/AdvancedDataGridItemRendererInitializer.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/AdvancedDataGridItemRendererInitializer.as
index c4eeaac..108fa42 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/AdvancedDataGridItemRendererInitializer.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/AdvancedDataGridItemRendererInitializer.as
@@ -76,7 +76,7 @@ import mx.controls.AdvancedDataGrid;
 
             if (!adgColumnList.grid) return;
 
-            var adgColumnListModel:DataGridColumnICollectionViewModel = 
adgColumnList.getBeadByType(DataGridColumnICollectionViewModel) as 
DataGridColumnICollectionViewModel;
+            var adgColumnListModel:DataGridColumnICollectionViewModel = 
adgColumnList.model as DataGridColumnICollectionViewModel;
                        var adg:AdvancedDataGrid = (adgColumnList.grid as 
AdvancedDataGrid);
                        var depth:int = adg.getDepth(data);
                        var isOpen:Boolean = adg.isItemOpen(data);
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/CSSImageAndTextButtonView.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/CSSImageAndTextButtonView.as
index ece98e5..768299b 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/CSSImageAndTextButtonView.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/CSSImageAndTextButtonView.as
@@ -41,6 +41,7 @@ package mx.controls.beads
        import org.apache.royale.utils.CSSUtils;
     import org.apache.royale.utils.SolidBorderUtil;
     import org.apache.royale.utils.StringTrimmer;
+    import org.apache.royale.core.IStrandWithModel;
 
     /**
      *  The CSSTextButtonView class is the default view for
@@ -102,7 +103,7 @@ package mx.controls.beads
                override public function set strand(value:IStrand):void
                {
                        _strand = value;
-                       textModel = value.getBeadByType(ImageAndTextModel) as 
ImageAndTextModel;
+                       textModel = (value as IStrandWithModel).model as 
ImageAndTextModel;
                        textModel.addEventListener("textChange", 
textChangeHandler);
                        textModel.addEventListener("htmlChange", 
htmlChangeHandler);
             textModel.addEventListener("imageChange", imageChangeHandler);
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/CheckBoxView.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/CheckBoxView.as
index 49f7c5c..8476fed 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/CheckBoxView.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/CheckBoxView.as
@@ -31,6 +31,7 @@ package mx.controls.beads
        import org.apache.royale.core.IToggleButtonModel;
     import org.apache.royale.core.UIBase;
        import org.apache.royale.events.Event;
+       import org.apache.royale.core.IStrandWithModel;
        
     /**
      *  The CheckBoxView class is the default view for
@@ -110,7 +111,7 @@ package mx.controls.beads
                {
                        super.strand = value;
             
-                       _toggleButtonModel = 
value.getBeadByType(IToggleButtonModel) as IToggleButtonModel;
+                       _toggleButtonModel = (value as IStrandWithModel).model 
as IToggleButtonModel;
                        _toggleButtonModel.addEventListener("textChange", 
textChangeHandler);
                        _toggleButtonModel.addEventListener("htmlChange", 
htmlChangeHandler);
                        _toggleButtonModel.addEventListener("selectedChange", 
selectedChangeHandler);
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridColumnResizeBead.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridColumnResizeBead.as
index 212a262..52d5c6a 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridColumnResizeBead.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridColumnResizeBead.as
@@ -66,7 +66,7 @@ package mx.controls.beads
         private var _view:org.apache.royale.html.beads.DataGridView;
         
         private var gridBase:ListBase;
-        
+        private var host:UIBase;
         /**                            
          *  @copy org.apache.royale.core.IBead#strand
          *
@@ -78,7 +78,7 @@ package mx.controls.beads
         public function set strand(value:IStrand):void
         {
             _strand = value;
-            var host:UIBase = _strand as UIBase;
+            host = _strand as UIBase;
             _view = host.view as org.apache.royale.html.beads.DataGridView; // 
need to get its initComplete handler to run first
             
             _overlay = new CompoundGraphic();
@@ -137,7 +137,7 @@ package mx.controls.beads
             // Also set up a listener on the model to know when the 
dataProvider has
             // changed which might affect the number of rows/columns and thus 
the
             // grid lines.
-            var model:IBeadModel = _strand.getBeadByType(IBeadModel) as 
IBeadModel;
+            var model:IBeadModel = host.model as IBeadModel;
             IEventDispatcher(model).addEventListener("dataProviderChanged", 
drawLines);
             
             // if the headerText gets changed, the overlay is removed, so 
re-apply it
@@ -166,7 +166,7 @@ package mx.controls.beads
          */
         protected function drawLines(event:Event):void
         {
-            var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) 
as IDataGridModel;
+            var sharedModel:IDataGridModel = host.model as IDataGridModel;
             var columns:Array = sharedModel.columns;                   
             var totalHeight:Number = _header.height;
             
@@ -239,7 +239,7 @@ package mx.controls.beads
          */
         private function mouseOverHandler(event:MouseEvent):void
         {
-            var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) 
as IDataGridModel;
+            var sharedModel:IDataGridModel = host.model as IDataGridModel;
             var columns:Array = sharedModel.columns;                   
             var totalHeight:Number = _header.height;
             
@@ -353,7 +353,7 @@ package mx.controls.beads
             if (columnIndex == -1)
                 return;
             
-            var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) 
as IDataGridModel;
+            var sharedModel:IDataGridModel = host.model as IDataGridModel;
             var columns:Array = sharedModel.columns;
             var oldWidth:Number = columns[columnIndex].columnWidth;
             var deltaWidth:Number = lastX - startX;
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridItemRendererInitializer.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridItemRendererInitializer.as
index cd9dd47..c3d1eb2 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridItemRendererInitializer.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridItemRendererInitializer.as
@@ -67,7 +67,7 @@ package mx.controls.beads
 
             if (!dgColumnList.grid) return;
 
-            var dgColumnListModel:DataGridColumnICollectionViewModel = 
dgColumnList.getBeadByType(DataGridColumnICollectionViewModel) as 
DataGridColumnICollectionViewModel;
+            var dgColumnListModel:DataGridColumnICollectionViewModel = 
dgColumnList.model as DataGridColumnICollectionViewModel;
                        var dg:DataGrid = (dgColumnList.grid as DataGrid);
 
                        var dataField:String = 
dg.columns[dgColumnListModel.columnIndex].dataField;
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridLinesBeadForICollectionView.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridLinesBeadForICollectionView.as
index 86d2618..1cead99 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridLinesBeadForICollectionView.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridLinesBeadForICollectionView.as
@@ -39,19 +39,26 @@ package mx.controls.beads
                {
                        super();
                }
-        
+        /**
+                * @royaleignorecoercion mx.core.UIComponent
+         * 
+         */
+        protected function getHost():UIComponent
+        {
+            return _strand as UIComponent;
+        }
         override protected function handleInitComplete(event:Event):void
         {
             super.handleInitComplete(event);
             // column resizing
-            IEventDispatcher(_strand).addEventListener("layoutNeeded", 
drawLines);
-            IEventDispatcher(_strand).addEventListener("renderColumnsNeeded", 
drawLines);
+            getHost().addEventListener("layoutNeeded", drawLines);
+            getHost().addEventListener("renderColumnsNeeded", drawLines);
         }
 
                
         override protected function getDataProviderLength():int
         {
-            var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) 
as IDataGridModel;
+            var sharedModel:IDataGridModel = getHost().model as IDataGridModel;
             var arrayList:ICollectionView = sharedModel.dataProvider as 
ICollectionView;
             return arrayList ? arrayList.length : 0;            
         }
@@ -68,7 +75,7 @@ package mx.controls.beads
          */
         override protected function drawLines(event:Event):void
         {
-            var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) 
as IDataGridModel;
+            var sharedModel:IDataGridModel = getHost().model as IDataGridModel;
             var presentationModel:DataGridPresentationModel = 
_strand.getBeadByType(DataGridPresentationModel) as DataGridPresentationModel;
             var layoutParent:ILayoutHost = _area.getBeadByType(ILayoutHost) as 
ILayoutHost;
             var contentView:IParentIUIBase = layoutParent.contentView as 
IParentIUIBase;
@@ -115,7 +122,7 @@ package mx.controls.beads
                 }
                 if (isNaN(ww))
                                        ww = 0;
-                var bgColors:Array = (_strand as 
UIComponent).getStyle("alternatingItemColors");
+                var bgColors:Array = 
getHost().getStyle("alternatingItemColors");
                 var yy:Number = n * rowHeight;
                 
                 var bgFill0:SolidColor = new SolidColor();
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as
index fe5985a..e271e45 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DataGridView.as
@@ -85,10 +85,10 @@ COMPILE::JS{
         protected var columnClass:Class = DataGridColumn;
         
         public var visibleColumns:Array = [];
-        
+        private var host:IDataGrid;
         override protected function handleInitComplete(event:Event):void
         {
-            var host:IDataGrid = _strand as IDataGrid;
+            host = _strand as IDataGrid;
             
             if (host.model.columns == null && host.model.dataProvider != null)
             {
@@ -172,7 +172,7 @@ COMPILE::JS{
                 //@todo check listeners are not already attached from previous 
occasion....here
                 col.addEventListener("headerTextChanged", updateHeader);
                 var list:DataGridColumnList = col.list as DataGridColumnList;
-                var adgColumnListModel:DataGridColumnICollectionViewModel = 
list.getBeadByType(DataGridColumnICollectionViewModel) as 
DataGridColumnICollectionViewModel;
+                var adgColumnListModel:DataGridColumnICollectionViewModel = 
list.model as DataGridColumnICollectionViewModel;
                 adgColumnListModel.columnIndex = i;
                 list.visible = col.visible;
                 list.addEventListener(ItemClickEvent.ITEM_CLICK, 
itemClickHandler);
@@ -208,7 +208,7 @@ COMPILE::JS{
          */
         override protected function handleDataProviderChanged(event:Event):void
         {
-            var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) 
as IDataGridModel;
+            var sharedModel:IDataGridModel = host.model as IDataGridModel;
             if (sharedModel.columns == null && sharedModel.dataProvider != 
null && sharedModel.dataProvider.length > 0)
             {
                 generateCols();
@@ -226,7 +226,7 @@ COMPILE::JS{
 
         private function registerRendererChange():void
         {
-            var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) 
as IDataGridModel;
+            var sharedModel:IDataGridModel = host.model as IDataGridModel;
             if (sharedModel.columns == null || sharedModel.dataProvider == 
null) return;
 
             for (var i:int=0; i < sharedModel.columns.length; i++)
@@ -245,7 +245,7 @@ COMPILE::JS{
          */
         private function generateCols():void
         {
-            var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) 
as IDataGridModel;
+            var sharedModel:IDataGridModel = host.model as IDataGridModel;
             if (sharedModel.dataProvider.length > 0)
             {
                 var col:DataGridColumn;
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DateFieldView.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DateFieldView.as
index f51ff32..dfde049 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DateFieldView.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DateFieldView.as
@@ -36,6 +36,7 @@ package mx.controls.beads
     import org.apache.royale.geom.Point;
     import org.apache.royale.utils.PointUtils;
     import mx.controls.DateField;
+    import org.apache.royale.html.util.getModelByType;
        
     /**
      *  The NumericStepperView class overrides the Basic
@@ -112,7 +113,7 @@ package mx.controls.beads
                     {
                         _popUp.selectedDate = 
dateField.parseFunction(_textInput.text, dateField.formatString);
                     }
-                    var popUpModel:IDateChooserModelWithChangeCheck = 
_popUp.getBeadByType(IDateChooserModelWithChangeCheck) as 
IDateChooserModelWithChangeCheck;
+                    var popUpModel:IDateChooserModelWithChangeCheck = 
getModelByType(_popUp,IDateChooserModelWithChangeCheck) as 
IDateChooserModelWithChangeCheck;
                     popUpModel.disableChangeCheck = true;
 
                                        var host:IPopUpHost = 
UIUtils.findPopUpHost(getHost());
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/MultiSelectionListView.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/MultiSelectionListView.as
index ac31a25..9e047bc 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/MultiSelectionListView.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/MultiSelectionListView.as
@@ -41,6 +41,7 @@ package mx.controls.beads
        import org.apache.royale.events.IEventDispatcher;
        import org.apache.royale.html.supportClasses.Border;
        import org.apache.royale.html.supportClasses.DataGroup;
+       import org.apache.royale.core.IStrandWithModel;
 
        /**
         *  The List class creates the visual elements of the 
org.apache.royale.html.List
@@ -68,10 +69,11 @@ package mx.controls.beads
                /**
                 * @private
                 * @royaleignorecoercion 
org.apache.royale.core.IMultiSelectionModel
+                * @royaleignorecoercion org.apache.royale.core.IStrandWithModel
                 */
                override protected function handleInitComplete(event:Event):void
                {
-                       listModel = _strand.getBeadByType(IMultiSelectionModel) 
as IMultiSelectionModel;
+                       listModel = (_strand as IStrandWithModel).model as 
IMultiSelectionModel;
                        listModel.addEventListener("selectedIndicesChanged", 
selectionChangeHandler);
                        listModel.addEventListener("rollOverIndexChanged", 
rollOverIndexChangeHandler);
                        
@@ -157,7 +159,7 @@ package mx.controls.beads
                {
                        super.handleInitComplete(event);
 
-                       listModel = _strand.getBeadByType(IMultiSelectionModel) 
as IMultiSelectionModel;
+                       listModel = (_strand as IStrandWithModel).model as 
IMultiSelectionModel;
                        listModel.addEventListener("selectedIndicesChanged", 
selectionChangeHandler);
                        listModel.addEventListener("rollOverIndexChanged", 
rollOverIndexChangeHandler);
                }
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/RadioButtonView.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/RadioButtonView.as
index 2486d21..7b86999 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/RadioButtonView.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/RadioButtonView.as
@@ -34,6 +34,7 @@ package mx.controls.beads
        import org.apache.royale.events.Event;
        
     import mx.controls.RadioButton;
+    import org.apache.royale.html.util.getModelByType;
     
        /**
         *  The RadioButtonView class creates the visual elements of the 
org.apache.royale.html.RadioButton 
@@ -114,7 +115,7 @@ package mx.controls.beads
                override public function set strand(value:IStrand):void
                {
                        super.strand = value;
-                       _toggleButtonModel = 
value.getBeadByType(IValueToggleButtonModel) as IValueToggleButtonModel;
+                       _toggleButtonModel = 
getModelByType(value,IValueToggleButtonModel) as IValueToggleButtonModel;
                        _toggleButtonModel.addEventListener("textChange", 
textChangeHandler);
                        _toggleButtonModel.addEventListener("htmlChange", 
htmlChangeHandler);
                        
_toggleButtonModel.addEventListener("selectedValueChange", 
selectedValueChangeHandler);
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/controllers/ListMultiSelectionMouseController.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/controllers/ListMultiSelectionMouseController.as
index 376f55b..f274de8 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/controllers/ListMultiSelectionMouseController.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/controllers/ListMultiSelectionMouseController.as
@@ -34,6 +34,7 @@ package mx.controls.beads.controllers
        import org.apache.royale.utils.getSelectionRenderBead;
        import org.apache.royale.utils.sendEvent;
        import org.apache.royale.core.Bead;
+       import org.apache.royale.html.util.getModelByType;
 
        /**
         *  The ListMultiSelectionMouseController class is a controller for
@@ -107,7 +108,7 @@ package mx.controls.beads.controllers
                override public function set strand(value:IStrand):void
                {
                        _strand = value;
-                       listModel = value.getBeadByType(IMultiSelectionModel) 
as IMultiSelectionModel;
+                       listModel = getModelByType(value,IMultiSelectionModel) 
as IMultiSelectionModel;
                        listView = value.getBeadByType(IListView) as IListView;
                        listenOnStrand("itemAdded", handleItemAdded);
                        listenOnStrand("itemRemoved", handleItemRemoved);
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/AdvancedDataGridLayout.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/AdvancedDataGridLayout.as
index a263405..cba07ab 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/AdvancedDataGridLayout.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/AdvancedDataGridLayout.as
@@ -57,14 +57,16 @@ package mx.controls.beads.layouts
                public function AdvancedDataGridLayout()
                {
         }
-        
+        /**
+                * @royaleignorecoercion org.apache.royale.core.UIBase
+         */
         override protected function setHeaderWidths(columnWidths:Array):void
         {
             var header:IUIBase = (uiHost.view as IDataGridView).header;
             // fancier DG's will filter invisible columns and only put visible 
columns
             // in the bbmodel, so do all layout based on the bbmodel, not the 
set
             // of columns that may contain invisible columns
-            var bbmodel:ButtonBarModel = header.getBeadByType(ButtonBarModel) 
as ButtonBarModel;
+            var bbmodel:ButtonBarModel = (header as UIBase).model as 
ButtonBarModel;
             if (bbmodel.dataProvider && (bbmodel.dataProvider.length != 
columnWidths.length))
             {
                 // probably some grouped columns so recompute widths;
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/DataGridHeaderLayout.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/DataGridHeaderLayout.as
index bd0b660..8c95b90 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/DataGridHeaderLayout.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/layouts/DataGridHeaderLayout.as
@@ -123,7 +123,9 @@ public class DataGridHeaderLayout extends LayoutBase
     //  Overridden methods
     //
     
//--------------------------------------------------------------------------
-
+    /**
+     * @royaleignorecoercion org.apache.royale.core.IStrandWithModel
+     */
        override public function layout():Boolean
        {
                // ignore other lifecycle layouts until the DP is set
@@ -132,7 +134,7 @@ public class DataGridHeaderLayout extends LayoutBase
                
         var contentView:ILayoutView = layoutView;
         
-        var model:ButtonBarModel = (host as 
IStrand).getBeadByType(ButtonBarModel) as ButtonBarModel;
+        var model:ButtonBarModel = (_strand as IStrandWithModel).model as 
ButtonBarModel;
         if (model) {
             buttonWidths = model.buttonWidths;
         }
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/dataGridClasses/DataGridItemRenderer.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/dataGridClasses/DataGridItemRenderer.as
index b994c28..95d911e 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/dataGridClasses/DataGridItemRenderer.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/dataGridClasses/DataGridItemRenderer.as
@@ -360,7 +360,7 @@ public class DataGridItemRenderer extends StringItemRenderer
     {
         var listData:DataGridListData = this.listData as DataGridListData;
         var owner:DataGrid = listData.owner as DataGrid;
-        var dgModel:DataGridICollectionViewModel = 
owner.getBeadByType(DataGridICollectionViewModel) as 
DataGridICollectionViewModel;
+        var dgModel:DataGridICollectionViewModel = owner.model as 
DataGridICollectionViewModel;
         var column:DataGridColumn = dgModel.columns[listData.columnIndex];
 
         super.data = value;
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 a42324a..361a74b 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
@@ -1024,17 +1024,9 @@ use namespace mx_internal;
         public function get presentationModel():IBead
         {
             if (_presentationModel == null) {
-                var bead:IBead = getBeadByType(IListPresentationModel);
+                var bead:IBead = 
loadBeadFromValuesManager(IListPresentationModel,"iListPresentationModel",this);
                 if (bead)
                     _presentationModel = bead as IListPresentationModel;
-                else
-                {
-                    var c:Class = ValuesManager.valuesImpl.getValue(this, 
"iListPresentationModel");
-                    if (c) {
-                        _presentationModel = new c() as IListPresentationModel;
-                        addBead(_presentationModel as IBead);
-                    }
-                }
             }
             
             return _presentationModel;
diff --git 
a/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/DatePickerView.as
 
b/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/DatePickerView.as
index 461e455..e45ab11 100644
--- 
a/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/DatePickerView.as
+++ 
b/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/DatePickerView.as
@@ -62,7 +62,7 @@ package org.apache.royale.mobile.beads
 
                private function monthValue(model:RangeModelExtended, 
index:Number):String
                {
-                       var dayModel:IDateChooserModel = 
_strand.getBeadByType(IDateChooserModel) as IDateChooserModel;
+                       var dayModel:IDateChooserModel = host.model as 
IDateChooserModel;
                        return String(dayModel.monthNames[index]);
                }
 
@@ -75,7 +75,7 @@ package org.apache.royale.mobile.beads
                {
                        return String(index);
                }
-               
+               private var host:UIBase;
                /**
                 *  @copy org.apache.royale.core.IBead#strand
                 *
@@ -89,8 +89,8 @@ package org.apache.royale.mobile.beads
                        super.strand = value;
                        _strand = value;
 
-                       var host:UIBase = _strand as UIBase;
-                       var model:IDateChooserModel = 
_strand.getBeadByType(IDateChooserModel) as IDateChooserModel;
+                       host = _strand as UIBase;
+                       var model:IDateChooserModel = host.model as 
IDateChooserModel;
                        var today:Date = model.selectedDate;
 
                        var third:int = int(host.width/3.0)
@@ -161,7 +161,7 @@ package org.apache.royale.mobile.beads
 
                private function handleStepperChange(event:Event):void
                {
-                       var model:IDateChooserModel = 
_strand.getBeadByType(IDateChooserModel) as IDateChooserModel;
+                       var model:IDateChooserModel = host.model as 
IDateChooserModel;
 
                        var newMonth:Number = _monthStepper.value;
                        var newDay:Number = _dayStepper.value;
diff --git 
a/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/StackedViewManagerView.as
 
b/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/StackedViewManagerView.as
index 3e028d6..ba7cfcb 100644
--- 
a/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/StackedViewManagerView.as
+++ 
b/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/StackedViewManagerView.as
@@ -62,12 +62,12 @@ package org.apache.royale.mobile.beads
                
                public function get toolBar():ToolBar
                {
-                       var model:ViewManagerModel = 
_strand.getBeadByType(IBeadModel) as ViewManagerModel;
+                       var model:ViewManagerModel = getHost().model as 
ViewManagerModel;
                        return model.toolBar;
                }
                public function set toolBar(value:ToolBar):void
                {
-                       var model:ViewManagerModel = 
_strand.getBeadByType(IBeadModel) as ViewManagerModel;
+                       var model:ViewManagerModel = getHost().model as 
ViewManagerModel;
                        model.toolBar = value;
                }
                
@@ -79,7 +79,7 @@ package org.apache.royale.mobile.beads
                {
                        super.strand = value;
                        
-                       var model:ViewManagerModel = 
value.getBeadByType(IBeadModel) as ViewManagerModel;
+                       var model:ViewManagerModel = getHost().model as 
ViewManagerModel;
                        
                        if (model.toolBarItems)
                        {
@@ -94,7 +94,7 @@ package org.apache.royale.mobile.beads
                {                       
                        super.addViewElements();
                        
-                       var model:ViewManagerModel = 
_strand.getBeadByType(IBeadModel) as ViewManagerModel;
+                       var model:ViewManagerModel = getHost().model as 
ViewManagerModel;
                        model.addEventListener("viewPushed", handlePushEvent);
                        model.addEventListener("viewPopped", handlePopEvent);
                        
@@ -109,7 +109,7 @@ package org.apache.royale.mobile.beads
                
                private function handlePushEvent(event:Event):void
                {
-                       var model:ViewManagerModel = 
_strand.getBeadByType(IBeadModel) as ViewManagerModel;
+                       var model:ViewManagerModel = getHost().model as 
ViewManagerModel;
                        var n:int = model.views.length;
                        if (n > 0) {
                                showViewByIndex(n-1);
@@ -118,7 +118,7 @@ package org.apache.royale.mobile.beads
                
                private function handlePopEvent(event:Event):void
                {
-                       var model:ViewManagerModel = 
_strand.getBeadByType(IBeadModel) as ViewManagerModel;
+                       var model:ViewManagerModel = getHost().model as 
ViewManagerModel;
                        var n:int = model.views.length;
                        if (n > 0) {
                                showViewByIndex(n-1);
@@ -127,7 +127,7 @@ package org.apache.royale.mobile.beads
                
                public function showView(view:IViewManagerView):void
                {
-                       var model:ViewManagerModel = 
_strand.getBeadByType(IBeadModel) as ViewManagerModel;
+                       var model:ViewManagerModel = getHost().model as 
ViewManagerModel;
                        for(var i:int=0; i < model.views.length; i++) {
                                if (view == model.views[i]) {
                                        showViewByIndex(i);
@@ -138,7 +138,7 @@ package org.apache.royale.mobile.beads
                
                protected function showViewByIndex(index:int):void
                {
-                       var model:ViewManagerModel = 
_strand.getBeadByType(IBeadModel) as ViewManagerModel;
+                       var model:ViewManagerModel = getHost().model as 
ViewManagerModel;
                        
                        if (_topView != null) {
                                getHost().removeElement(_topView);
diff --git 
a/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/TabbedViewManagerView.as
 
b/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/TabbedViewManagerView.as
index 01b7c15..102b416 100644
--- 
a/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/TabbedViewManagerView.as
+++ 
b/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/TabbedViewManagerView.as
@@ -63,12 +63,12 @@ package org.apache.royale.mobile.beads
                
                public function get tabBar():TabBar
                {
-                       var model:ViewManagerModel = 
_strand.getBeadByType(IBeadModel) as ViewManagerModel;
+                       var model:ViewManagerModel = getHost().model as 
ViewManagerModel;
                        return model.tabBar;
                }
                public function set tabBar(value:TabBar):void
                {
-                       var model:ViewManagerModel = 
_strand.getBeadByType(IBeadModel) as ViewManagerModel;
+                       var model:ViewManagerModel = getHost().model as 
ViewManagerModel;
                        model.tabBar = value;
                }
                
@@ -80,7 +80,7 @@ package org.apache.royale.mobile.beads
                {
                        super.strand = value;
                        
-                       var model:ViewManagerModel = 
value.getBeadByType(IBeadModel) as ViewManagerModel;
+                       var model:ViewManagerModel = getHost().model as 
ViewManagerModel;
                        
                        // TabbedViewManager always has a TabBar
                        var tbar:TabBar = new TabBar();
@@ -110,7 +110,7 @@ package org.apache.royale.mobile.beads
                 */
                protected function showViewByIndex(index:int):void
                {
-                       var model:ViewManagerModel = 
_strand.getBeadByType(IBeadModel) as ViewManagerModel;
+                       var model:ViewManagerModel = getHost().model as 
ViewManagerModel;
                        
                        if (_currentView != null) {
                                getHost().removeElement(_currentView);
@@ -145,7 +145,7 @@ package org.apache.royale.mobile.beads
                private function handleButtonBarChange(event:Event):void
                {
                        var newIndex:Number = tabBar.selectedIndex;
-                       var model:ViewManagerModel = 
_strand.getBeadByType(IBeadModel) as ViewManagerModel;
+                       var model:ViewManagerModel = getHost().model as 
ViewManagerModel;
                        
                        // doing this will trigger the selectedIndexChanged 
event which will
                        // tell the strand to switch views
diff --git 
a/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/ToggleSwitchView.as
 
b/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/ToggleSwitchView.as
index a95a76c..8bd26e1 100644
--- 
a/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/ToggleSwitchView.as
+++ 
b/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/ToggleSwitchView.as
@@ -21,12 +21,12 @@ package org.apache.royale.mobile.beads
        import org.apache.royale.core.IStrand;
        import org.apache.royale.core.IBeadView;
        import org.apache.royale.core.IToggleButtonModel;
-       import org.apache.royale.core.IUIBase;
        import org.apache.royale.core.UIBase;
        import org.apache.royale.svg.Rect;
        import org.apache.royale.graphics.SolidColor;
        import org.apache.royale.graphics.SolidColorStroke;
        import org.apache.royale.events.Event;
+       import org.apache.royale.core.IUIBase;
        
        /**
         * The ToggleSwitchView creates the element used to display the 
ToggleSwitch
@@ -73,11 +73,13 @@ package org.apache.royale.mobile.beads
                {
                        return _strand as IUIBase;
                }
-               public function set host(value:IUIBase):void
+               /**
+                * @royaleignorecoercion org.apache.royale.core.UIBase
+                */
+               private function getHost():UIBase
                {
-                       // not implemented; getter only.
+                       return _strand as UIBase;
                }
-               
                private var _strand:IStrand;
                
                /**
@@ -90,18 +92,18 @@ package org.apache.royale.mobile.beads
                public function set strand(value:IStrand):void
                {
                        _strand = value;
-                       UIBase(_strand).addEventListener("sizeChanged", 
sizeChangedHandler);
-                       UIBase(_strand).addEventListener("widthChanged", 
sizeChangedHandler);
-                       UIBase(_strand).addEventListener("heightChanged", 
sizeChangedHandler);
+                       host.addEventListener("sizeChanged", 
sizeChangedHandler);
+                       host.addEventListener("widthChanged", 
sizeChangedHandler);
+                       host.addEventListener("heightChanged", 
sizeChangedHandler);
                        
-                       var model:IToggleButtonModel = 
value.getBeadByType(IToggleButtonModel) as IToggleButtonModel;
+                       var model:IToggleButtonModel = getHost().model as 
IToggleButtonModel;
                        model.addEventListener("selectedChange", 
toggleChangedHandler);
                        
                        boundingBox = new Rect();
-                       UIBase(host).addElement(boundingBox, false);
+                       getHost().addElement(boundingBox, false);
                        
                        actualSwitch = new Rect();
-                       UIBase(host).addElement(actualSwitch, false);
+                       getHost().addElement(actualSwitch, false);
                        
                        layoutChromeElements();
                }
@@ -135,7 +137,7 @@ package org.apache.royale.mobile.beads
                 */
                protected function sizeViewsToFitContentArea():void
                {
-                       var model:IToggleButtonModel = 
_strand.getBeadByType(IToggleButtonModel) as IToggleButtonModel;
+                       var model:IToggleButtonModel = getHost().model as 
IToggleButtonModel;
                        
                        boundingBox.x = 0;
                        boundingBox.y = 0;
diff --git 
a/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/ViewManagerViewBase.as
 
b/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/ViewManagerViewBase.as
index 98675d5..843f35f 100644
--- 
a/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/ViewManagerViewBase.as
+++ 
b/frameworks/projects/Mobile/src/main/royale/org/apache/royale/mobile/beads/ViewManagerViewBase.as
@@ -72,12 +72,12 @@ package org.apache.royale.mobile.beads
 
                public function get navigationBar():NavigationBar
                {
-                       var model:ViewManagerModel = 
_strand.getBeadByType(IBeadModel) as ViewManagerModel;
+                       var model:ViewManagerModel = getHost().model as 
ViewManagerModel;
                        return model.navigationBar;
                }
                public function set navigationBar(value:NavigationBar):void
                {
-                       var model:ViewManagerModel = 
_strand.getBeadByType(IBeadModel) as ViewManagerModel;
+                       var model:ViewManagerModel = getHost().model as 
ViewManagerModel;
                        model.navigationBar = value;
                }
                
@@ -89,7 +89,7 @@ package org.apache.royale.mobile.beads
                {
                        super.strand = value;
                        
-                       var model:ViewManagerModel = 
value.getBeadByType(IBeadModel) as ViewManagerModel;
+                       var model:ViewManagerModel = getHost().model as 
ViewManagerModel;
 //                     model.addEventListener("selectedIndexChanged", 
viewsChangedHandler);
 
                        if (model.navigationBarItems)
@@ -139,7 +139,7 @@ package org.apache.royale.mobile.beads
 //                     var contentAreaY:Number = 0;
 //                     var contentAreaHeight:Number = host.height;
 //                     
-//                     var model:ViewManagerModel = 
_strand.getBeadByType(IBeadModel) as ViewManagerModel;
+//                     var model:ViewManagerModel = getHost().model as 
ViewManagerModel;
 //                     
 //                     if (_navigationBar)
 //                     {
@@ -163,7 +163,7 @@ package org.apache.royale.mobile.beads
                
                protected function sizeViewsToFitContentArea():void
                {
-//                     var model:ViewManagerModel = 
_strand.getBeadByType(IBeadModel) as ViewManagerModel;
+//                     var model:ViewManagerModel = getHost().model as 
ViewManagerModel;
 //                     
 //                     var n:int = ViewManagerModel(model).views.length;
 //                     if (n > 0) {

Reply via email to