You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ha...@apache.org on 2022/01/02 21:12:39 UTC

[royale-asjs] 03/03: mx models

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 <ha...@in-tools.com>
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) {