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 12a8294  missed lots of models
12a8294 is described below

commit 12a8294b6691876c26fda451947223a3be7fa068
Author: Harbs <[email protected]>
AuthorDate: Sun Jan 2 15:01:13 2022 +0200

    missed lots of models
---
 .../royale/org/apache/royale/html/DataContainer.as |  3 ++-
 .../royale/html/beads/CSSImageAndTextButtonView.as |  3 ++-
 .../apache/royale/html/beads/CSSTextButtonView.as  |  3 ++-
 .../royale/html/beads/CSSTextToggleButtonView.as   |  3 ++-
 .../org/apache/royale/html/beads/CheckBoxView.as   |  3 ++-
 .../apache/royale/html/beads/ColorPickerView.as    |  5 +++--
 .../royale/html/beads/ColorPickerWithEmptyView.as  |  3 ++-
 .../org/apache/royale/html/beads/ComboBoxView.as   |  7 ++++---
 .../html/beads/DataGridColumnChangePropagator.as   | 11 ++++++++---
 .../beads/DataGridColumnForceChangePropagator.as   | 17 ++++++++++++----
 .../apache/royale/html/beads/DataGridLinesBead.as  | 23 +++++++++++++++-------
 .../org/apache/royale/html/beads/DataGridView.as   | 15 ++++++++++----
 .../org/apache/royale/html/beads/DateFieldView.as  | 11 ++++++++---
 .../org/apache/royale/html/beads/ErrorImage.as     |  3 ++-
 .../royale/html/beads/MultiSelectionListView.as    |  5 +++--
 .../apache/royale/html/beads/RadioButtonView.as    |  3 ++-
 .../org/apache/royale/html/beads/ScrollBarView.as  |  3 ++-
 .../apache/royale/html/beads/SimpleAlertView.as    |  3 ++-
 .../org/apache/royale/html/beads/SliderView.as     |  4 +++-
 .../org/apache/royale/html/beads/SpinnerView.as    | 12 ++++++-----
 .../org/apache/royale/html/beads/TextButtonView.as |  3 ++-
 .../apache/royale/html/beads/TextFieldViewBase.as  |  3 ++-
 .../org/apache/royale/html/beads/TreeGridView.as   |  7 +++++--
 .../org/apache/royale/html/beads/VScrollBarView.as |  3 ++-
 .../CascadingMenuSelectionMouseController.as       |  4 +++-
 .../controllers/DateChooserMouseController.as      | 18 ++++++++++++-----
 .../beads/controllers/DateFieldMouseController.as  |  3 ++-
 .../beads/controllers/MenuBarMouseController.as    |  4 +++-
 .../controllers/ScrollBarMouseControllerBase.as    |  3 ++-
 .../royale/html/beads/layouts/ButtonBarLayout.as   |  3 ++-
 .../royale/html/beads/layouts/DataGridLayout.as    |  5 +++--
 .../royale/html/beads/layouts/HScrollBarLayout.as  |  3 ++-
 .../royale/html/beads/layouts/TreeGridLayout.as    |  3 ++-
 .../royale/html/beads/layouts/VScrollBarLayout.as  |  3 ++-
 .../html/supportClasses/AccordionItemRenderer.as   |  7 +++++--
 35 files changed, 146 insertions(+), 66 deletions(-)

diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/DataContainer.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/DataContainer.as
index 7c5f7c2..b759a26 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/DataContainer.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/DataContainer.as
@@ -48,6 +48,7 @@ package org.apache.royale.html
        import org.apache.royale.html.beads.IListView;
        import org.apache.royale.core.IListWithPresentationModel;
        import org.apache.royale.core.IHasLabelField;
+       import org.apache.royale.html.util.getModelByType;
 
        /**
         *  Indicates that the initialization of the list is complete.
@@ -146,7 +147,7 @@ package org.apache.royale.html
                 */
                public function get presentationModel():IBead
                {
-                       var presModel:IListPresentationModel = 
getBeadByType(IListPresentationModel) as IListPresentationModel;
+      var presModel:IListPresentationModel = 
getModelByType(this,IListPresentationModel) as IListPresentationModel;
                        if (presModel == null) {
                            presModel = 
loadBeadFromValuesManager(IListPresentationModel, "iListPresentationModel", 
this) as IListPresentationModel;
                                if (presModel == null)
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CSSImageAndTextButtonView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CSSImageAndTextButtonView.as
index 85c9ecd..102921d 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CSSImageAndTextButtonView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CSSImageAndTextButtonView.as
@@ -43,6 +43,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.utils.CSSUtils;
        import org.apache.royale.utils.SolidBorderUtil;
        import org.apache.royale.utils.StringTrimmer;
+       import org.apache.royale.html.util.getModelByType;
 
     /**
      *  The CSSTextButtonView class is the default view for
@@ -104,7 +105,7 @@ package org.apache.royale.html.beads
                override public function set strand(value:IStrand):void
                {
                        _strand = value;
-                       textModel = value.getBeadByType(ImageAndTextModel) as 
ImageAndTextModel;
+      textModel = getModelByType(_strand,ImageAndTextModel) as 
ImageAndTextModel;
                        textModel.addEventListener("textChange", 
textChangeHandler);
                        textModel.addEventListener("htmlChange", 
htmlChangeHandler);
             textModel.addEventListener("imageChange", imageChangeHandler);
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CSSTextButtonView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CSSTextButtonView.as
index eabb23b..d4af2b5 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CSSTextButtonView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CSSTextButtonView.as
@@ -43,6 +43,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.utils.CSSUtils;
     import org.apache.royale.utils.SolidBorderUtil;
     import org.apache.royale.utils.StringTrimmer;
+    import org.apache.royale.html.util.getModelByType;
 
     /**
      *  The CSSTextButtonView class is the default view for
@@ -104,7 +105,7 @@ package org.apache.royale.html.beads
                override public function set strand(value:IStrand):void
                {
                        _strand = value;
-                       textModel = value.getBeadByType(ITextModel) as 
ITextModel;
+      textModel = getModelByType(value,ITextModel) as ITextModel;
                        textModel.addEventListener("textChange", 
textChangeHandler);
                        textModel.addEventListener("htmlChange", 
htmlChangeHandler);
                        shape = new Shape();
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CSSTextToggleButtonView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CSSTextToggleButtonView.as
index 0e49846..363a7ed 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CSSTextToggleButtonView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CSSTextToggleButtonView.as
@@ -26,6 +26,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.core.IToggleButtonModel;
        import org.apache.royale.events.Event;
        import org.apache.royale.events.IEventDispatcher;
+       import org.apache.royale.html.util.getModelByType;
 
     /**
      *  The CSSTextToggleButtonView class is the default view for
@@ -80,7 +81,7 @@ package org.apache.royale.html.beads
                {
             super.strand = value;
             
-                       toggleButtonModel = 
value.getBeadByType(IToggleButtonModel) as IToggleButtonModel;
+            toggleButtonModel = getModelByType(value,IToggleButtonModel) as 
IToggleButtonModel;
             toggleButtonModel.addEventListener("selectedChange", 
selectedChangeHandler);
                }
        
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CheckBoxView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CheckBoxView.as
index b0547f4..ad72c71 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CheckBoxView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CheckBoxView.as
@@ -30,6 +30,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.core.IStrand;
        import org.apache.royale.core.IToggleButtonModel;
        import org.apache.royale.events.Event;
+       import org.apache.royale.html.util.getModelByType;
        
     /**
      *  The CheckBoxView class is the default view for
@@ -109,7 +110,7 @@ package org.apache.royale.html.beads
                {
                        super.strand = value;
             
-                       _toggleButtonModel = 
value.getBeadByType(IToggleButtonModel) as IToggleButtonModel;
+      _toggleButtonModel = getModelByType(value,IToggleButtonModel) as 
IToggleButtonModel;
                        _toggleButtonModel.addEventListener("textChange", 
textChangeHandler);
                        _toggleButtonModel.addEventListener("htmlChange", 
htmlChangeHandler);
                        _toggleButtonModel.addEventListener("selectedChange", 
selectedChangeHandler);
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ColorPickerView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ColorPickerView.as
index b17bbca..0ddff90 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ColorPickerView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ColorPickerView.as
@@ -42,6 +42,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.html.supportClasses.IColorPickerPopUp;
        import org.apache.royale.core.IColorModel;
     import org.apache.royale.core.IPopUp;
+    import org.apache.royale.html.util.getModelByType;
        
        /**
         *  The ColorPickerView class creates the visual elements of the 
org.apache.royale.html.ColorPicker 
@@ -184,7 +185,7 @@ package org.apache.royale.html.beads
                public function set popUpVisible(value:Boolean):void
                {
                        if (value && !list.visible) {
-                               var model:IColorModel = 
_strand.getBeadByType(IColorModel) as IColorModel;
+       var model:IColorModel = getModelByType(_strand,IColorModel) as 
IColorModel;
                                (list as IColorPickerPopUp).model = model;
                                list.visible = true;
                                
@@ -227,7 +228,7 @@ package org.apache.royale.html.beads
                 */
                protected function colorChangeAction():void
                {
-                       var model:IColorModel = 
_strand.getBeadByType(IColorModel) as IColorModel;
+      var model:IColorModel = getModelByType(_strand,IColorModel) as 
IColorModel;
                        COMPILE::JS 
                        {
                                
selectedColorDisplay.element.style.backgroundColor = 
CSSUtils.attributeFromColor(model.color);
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ColorPickerWithEmptyView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ColorPickerWithEmptyView.as
index c2a80d2..f1f4902 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ColorPickerWithEmptyView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ColorPickerWithEmptyView.as
@@ -20,6 +20,7 @@ package org.apache.royale.html.beads
 {
        import org.apache.royale.core.IColorModel;
        import org.apache.royale.utils.CSSUtils;
+       import org.apache.royale.html.util.getModelByType;
        
        /**
         *  The ColorPickerWithEmptyView overrides ColorPickerView methods to 
visibly indicate that a selection is empty
@@ -43,7 +44,7 @@ package org.apache.royale.html.beads
                 */
                override protected function colorChangeAction():void
                {
-                       var model:IColorModel = 
_strand.getBeadByType(IColorModel) as IColorModel;
+      var model:IColorModel = getModelByType(_strand,IColorModel) as 
IColorModel;
                        var isEmpty:Boolean = isNaN(model.color);
                        COMPILE::JS 
                        {
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ComboBoxView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ComboBoxView.as
index c0b549a..4358729 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ComboBoxView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ComboBoxView.as
@@ -36,6 +36,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.geom.Point;
        import org.apache.royale.html.beads.IComboBoxView;
        import org.apache.royale.html.util.getLabelFromData;
+       import org.apache.royale.html.util.getModelByType;
        
        /**
         *  The ComboBoxView class creates the visual elements of the 
org.apache.royale.html.ComboBox 
@@ -144,7 +145,7 @@ package org.apache.royale.html.beads
                        list = new popUpClass() as UIBase;
                        list.visible = false;
                        
-                       var model:IComboBoxModel = 
_strand.getBeadByType(IComboBoxModel) as IComboBoxModel;
+      var model:IComboBoxModel = getModelByType(_strand,IComboBoxModel) as 
IComboBoxModel;
                        model.addEventListener("selectedIndexChanged", 
handleItemChange);
                        model.addEventListener("selectedItemChanged", 
handleItemChange);
                        
@@ -177,7 +178,7 @@ package org.apache.royale.html.beads
                public function set popUpVisible(value:Boolean):void
                {
                        if (value && !list.visible) {
-                               var model:IComboBoxModel = 
_strand.getBeadByType(IComboBoxModel) as IComboBoxModel;
+      var model:IComboBoxModel = getModelByType(_strand,IComboBoxModel) as 
IComboBoxModel;
                                list.model = model;
                                list.width = input.width;
                                list.height = 200;
@@ -222,7 +223,7 @@ package org.apache.royale.html.beads
                 */
                protected function itemChangeAction():void
                {
-                       var model:IComboBoxModel = 
_strand.getBeadByType(IComboBoxModel) as IComboBoxModel;
+      var model:IComboBoxModel = getModelByType(_strand,IComboBoxModel) as 
IComboBoxModel;
                        input.text = getLabelFromData(model,model.selectedItem);
                }
                
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 434bdb9..68c69d9 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
@@ -32,6 +32,8 @@ package org.apache.royale.html.beads
        import org.apache.royale.html.beads.IDataGridView;
        import org.apache.royale.core.IStrand;
        import org.apache.royale.core.Bead;
+       import org.apache.royale.core.IStrandWithModel;
+       import org.apache.royale.core.IStrandWithModelView;
        /**
         *  The DataGridColumnChangePropagator picks up the dataProviderChanged 
event
         *  and lets the data grid columns know about it.
@@ -57,26 +59,29 @@ package org.apache.royale.html.beads
                
                /**
                 * @royaleignorecoercion 
org.apache.royale.events.IEventDispatcher
+                * @royaleignorecoercion org.apache.royale.core.IStrandWithModel
                 */
                protected function finishSetup(e:Event):void
                {
-                       var model:IEventDispatcher = 
_strand.getBeadByType(IBeadModel) as IEventDispatcher;
+                       var model:IEventDispatcher = (_strand as 
IStrandWithModel).model as IEventDispatcher;
                        model.addEventListener('dataProviderChanged', 
handleDataProviderChanged);
                }
                
                /**
                 * @royaleignorecoercion org.apache.royale.core.IDataGridModel
+                * @royaleignorecoercion 
org.apache.royale.core.IStrandWithModelView
                 * @royaleignorecoercion org.apache.royale.core.ISelectionModel
                 * @royaleignorecoercion 
org.apache.royale.html.beads.IDataGridView
                 * @royaleignorecoercion 
org.apache.royale.html.supportClasses.DataGridColumnList
                 */
                protected function handleDataProviderChanged(e:Event):void
                {
-                       var dataGridView:IDataGridView = 
_strand.getBeadByType(IDataGridView) as IDataGridView;
+                       var strandType:IStrandWithModelView = _strand as 
IStrandWithModelView;
+                       var dataGridView:IDataGridView = strandType.view as 
IDataGridView;
                        var lists:Array = dataGridView.columnLists;
                        if (lists == null) return;
                        
-                       var sharedModel:IDataGridModel = 
_strand.getBeadByType(IBeadModel) as IDataGridModel;
+                       var sharedModel:IDataGridModel = strandType.model as 
IDataGridModel;
                        for (var i:int=0; i < lists.length; i++)
                        {
                                var list:DataGridColumnList = lists[i] as 
DataGridColumnList;
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 168e0b2..4785c46 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
@@ -32,6 +32,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.html.beads.IDataGridView;
        import org.apache.royale.core.IStrand;
        import org.apache.royale.utils.sendBeadEvent;
+       import org.apache.royale.core.IStrandWithModel;
        /**
         *  The DataGridColumnForceChangePropagator picks up the 
dataProviderChanged event
         *  and lets the data grid columns know about it, whether or not the 
data provider object was changed.
@@ -50,19 +51,27 @@ package org.apache.royale.html.beads
                public function DataGridColumnForceChangePropagator()
                {
                }
-               
+               /**
+                * @royaleignorecoercion org.apache.royale.core.IStrandWithModel
+                */
                public function set strand(value:IStrand):void
                {
                        _strand = value;
-                       var model:IEventDispatcher = 
value.getBeadByType(IBeadModel) as IEventDispatcher;
+                       var model:IEventDispatcher = (value as 
IStrandWithModel).model as IEventDispatcher;
                        model.addEventListener('dataProviderChanged', 
handleDataProviderChanged);
                }
-               
+               /**
+                * @royaleignorecoercion org.apache.royale.core.IStrandWithModel
+                * @royaleignorecoercion org.apache.royale.core.ISelectionModel
+                * @royaleignorecoercion org.apache.royale.core.IDataGridModel
+                * @royaleignorecoercion 
org.apache.royale.html.beads.IDataGridView
+                * @royaleignorecoercion 
org.apache.royale.html.supportClasses.DataGridColumnList
+                */
                protected function handleDataProviderChanged(e:Event):void
                {
                        var dataGridView:IDataGridView = 
_strand.getBeadByType(IDataGridView) as IDataGridView;
                        var lists:Array = dataGridView.columnLists;
-                       var sharedModel:IDataGridModel = 
_strand.getBeadByType(IBeadModel) as IDataGridModel;
+                       var sharedModel:IDataGridModel = (_strand as 
IStrandWithModel).model as IDataGridModel;
                        for (var i:int=0; i < lists.length; i++)
                        {
                                var list:DataGridColumnList = lists[i] as 
DataGridColumnList;
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridLinesBead.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridLinesBead.as
index 6350e8b..77b5115 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridLinesBead.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridLinesBead.as
@@ -35,6 +35,7 @@ package org.apache.royale.html.beads
     import org.apache.royale.html.beads.DataGridView;
        import org.apache.royale.html.beads.models.DataGridPresentationModel;
        import org.apache.royale.html.supportClasses.DataGridColumn;
+       import org.apache.royale.core.IStrandWithModelView;
        
        /**
         * The DataGridLinesBead is an add on bead for the DataGrid. This bead
@@ -113,6 +114,13 @@ package org.apache.royale.html.beads
                protected var _area:UIBase;
                
                /**
+                * @royaleignorecoercion 
org.apache.royale.core.IStrandWithModelView
+                */
+               private function get typedStrand():IStrandWithModelView
+               {
+                       return _strand as IStrandWithModelView
+               }
+               /**
                 * Invoked when all of the beads have been added to the 
DataGrid. This
                 * function seeks the Container that parents the lists that are 
the DataGrid's
                 * columns. An overlay GraphicContainer is added to this 
Container so that the
@@ -122,6 +130,7 @@ package org.apache.royale.html.beads
             *  @playerversion Flash 10.2
             *  @playerversion AIR 2.6
             *  @productversion Royale 0.0
+                * @royaleignorecoercion 
org.apache.royale.events.IEventDispatcher
                 */
                protected function handleInitComplete(event:Event):void
                {
@@ -134,20 +143,20 @@ package org.apache.royale.html.beads
             }
 
                        // Now set up listeners to handle changes in the size 
of the DataGrid.
-                       
IEventDispatcher(_strand).addEventListener("sizeChanged", drawLines);
-                       
IEventDispatcher(_strand).addEventListener("widthChanged", drawLines);
-                       
IEventDispatcher(_strand).addEventListener("heightChanged", drawLines);
+                       host.addEventListener("sizeChanged", drawLines);
+                       host.addEventListener("widthChanged", drawLines);
+                       host.addEventListener("heightChanged", drawLines);
                        
                        // 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;
-                       
IEventDispatcher(model).addEventListener("dataProviderChanged", drawLines);
+                       var model:IBeadModel = typedStrand.model as IBeadModel;
+                       (model as 
IEventDispatcher).addEventListener("dataProviderChanged", drawLines);
                }
                
         protected function getDataProviderLength():int
         {
-            var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) 
as IDataGridModel;
+            var sharedModel:IDataGridModel = typedStrand.model as 
IDataGridModel;
             var arrayList:ArrayList = sharedModel.dataProvider as ArrayList;
             return arrayList.length;            
         }
@@ -164,7 +173,7 @@ package org.apache.royale.html.beads
                 */
                protected function drawLines(event:Event):void
                {
-                       var sharedModel:IDataGridModel = 
_strand.getBeadByType(IBeadModel) as IDataGridModel;
+                       var sharedModel:IDataGridModel = typedStrand.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;
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridView.as
index 90d778e..6804c99 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridView.as
@@ -42,6 +42,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.html.supportClasses.Viewport;
        import org.apache.royale.utils.sendStrandEvent;
        import org.apache.royale.utils.sendEvent;
+       import org.apache.royale.core.IStrandWithModelView;
 
                /**
                 *  The DataGridView class is the visual bead for the 
org.apache.royale.html.DataGrid.
@@ -183,13 +184,19 @@ package org.apache.royale.html.beads
                                if (_listArea)
                                        sendEvent(_listArea,"layoutChanged");
                        }
-
+                       /**
+                        * @royaleignorecoercion 
org.apache.royale.core.IStrandWithModelView
+                        */
+                       private function get typedStrand():IStrandWithModelView
+                       {
+                               return _strand as IStrandWithModelView
+                       }
                        /**
                         * @private
                         */
                        protected function 
handleDataProviderChanged(event:Event):void
                        {
-                var sharedModel:IDataGridModel = 
_strand.getBeadByType(IBeadModel) as IDataGridModel;
+                var sharedModel:IDataGridModel = typedStrand.model as 
IDataGridModel;
                                var l:uint = _lists ?  _lists.length : 0;
                 for (var i:int=0; i < l; i++)
                 {
@@ -206,7 +213,7 @@ package org.apache.royale.html.beads
                         */
                        private function 
handleSelectedIndexChanged(event:Event):void
                        {
-                               var sharedModel:IDataGridModel = 
_strand.getBeadByType(IBeadModel) as IDataGridModel;
+                               var sharedModel:IDataGridModel = 
typedStrand.model as IDataGridModel;
                                var newIndex:int = sharedModel.selectedIndex;
 
                                for (var i:int=0; i < _lists.length; i++)
@@ -223,7 +230,7 @@ package org.apache.royale.html.beads
                         */
                        private function 
handleColumnListChange(event:Event):void
                        {
-                               var sharedModel:IDataGridModel = 
_strand.getBeadByType(IBeadModel) as IDataGridModel;
+                               var sharedModel:IDataGridModel = 
typedStrand.model as IDataGridModel;
                                var list:IDataGridColumnList = 
event.currentTarget as IDataGridColumnList;
                                sharedModel.selectedIndex = list.selectedIndex;
 
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DateFieldView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DateFieldView.as
index 161bb02..558226a 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DateFieldView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DateFieldView.as
@@ -45,6 +45,8 @@ package org.apache.royale.html.beads
                import org.apache.royale.html.beads.TextInputView;
                import flash.text.TextFieldType;
        }
+       import org.apache.royale.core.IStrandWithModel;
+       import org.apache.royale.html.util.getModelByType;
 
        /**
         * The DateFieldView class is a bead for DateField that creates the
@@ -146,12 +148,15 @@ package org.apache.royale.html.beads
 
                        
getHost().addEventListener("initComplete",handleInitComplete);
                }
-
+               /**
+                * @royaleignorecoercion org.apache.royale.core.IBeadModel
+                * @royaleignorecoercion org.apache.royale.core.IStrandWithModel
+                */
                private function handleInitComplete(event:Event):void
                {
                        _textInput.height = _button.height;
 
-                       var model:IBeadModel = 
_strand.getBeadByType(IBeadModel) as IBeadModel;
+                       var model:IBeadModel = (_strand as 
IStrandWithModel).model as IBeadModel;
                        
IEventDispatcher(model).addEventListener("selectedDateChanged", 
selectionChangeHandler);
                }
 
@@ -206,7 +211,7 @@ package org.apache.royale.html.beads
                         _popUp = ValuesManager.valuesImpl.newInstance(_strand, 
"iPopUp") as IDateChooser;
                     }
 
-                                       var model:IDateChooserModel = 
_strand.getBeadByType(IDateChooserModel) as IDateChooserModel;
+                                       var model:IDateChooserModel = 
getModelByType(_strand,IDateChooserModel) as IDateChooserModel;
                                        _popUp.selectedDate = 
model.selectedDate;
                     var popUpModel:IDateChooserModelWithChangeCheck = 
_popUp.getBeadByType(IDateChooserModelWithChangeCheck) as 
IDateChooserModelWithChangeCheck;
                     popUpModel.disableChangeCheck = true;
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ErrorImage.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ErrorImage.as
index d3f6e69..8516bb9 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ErrorImage.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ErrorImage.as
@@ -23,6 +23,7 @@ package org.apache.royale.html.beads {
     import org.apache.royale.core.IImageModel;
     import org.apache.royale.core.IStrand;
     import org.apache.royale.events.Event;
+    import org.apache.royale.html.util.getModelByType;
   
     /**
         *  The ErrorImage class is a bead that can be used to 
@@ -91,7 +92,7 @@ package org.apache.royale.html.beads {
         protected function get hostModel():IImageModel
         {    
             if(!_hostModel)
-                _hostModel = _strand.getBeadByType(IImageModel) as IImageModel;
+                _hostModel = getModelByType(_strand,IImageModel) as 
IImageModel;
             return _hostModel;
         }
 
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/MultiSelectionListView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/MultiSelectionListView.as
index f99b479..da9bde3 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/MultiSelectionListView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/MultiSelectionListView.as
@@ -41,6 +41,7 @@ package org.apache.royale.html.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.html.util.getModelByType;
 
        /**
         *  The List class creates the visual elements of the 
org.apache.royale.html.List
@@ -71,7 +72,7 @@ package org.apache.royale.html.beads
                 */
                override protected function handleInitComplete(event:Event):void
                {
-                       listModel = _strand.getBeadByType(IMultiSelectionModel) 
as IMultiSelectionModel;
+                       listModel = 
getModelByType(_strand,IMultiSelectionModel) as IMultiSelectionModel;
                        listModel.addEventListener("selectedIndicesChanged", 
selectionChangeHandler);
                        listModel.addEventListener("rollOverIndexChanged", 
rollOverIndexChangeHandler);
 
@@ -156,7 +157,7 @@ package org.apache.royale.html.beads
                {
                        super.handleInitComplete(event);
 
-                       listModel = _strand.getBeadByType(IMultiSelectionModel) 
as IMultiSelectionModel;
+                       listModel = 
getModelByType(_strand,IMultiSelectionModel) as IMultiSelectionModel;
                        listModel.addEventListener("selectedIndicesChanged", 
selectionChangeHandler);
                        listModel.addEventListener("rollOverIndexChanged", 
rollOverIndexChangeHandler);
                }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/RadioButtonView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/RadioButtonView.as
index 32abe85..617b922 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/RadioButtonView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/RadioButtonView.as
@@ -30,6 +30,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.core.IStrand;
        import org.apache.royale.core.IValueToggleButtonModel;
        import org.apache.royale.events.Event;
+       import org.apache.royale.html.util.getModelByType;
        
        /**
         *  The RadioButtonView class creates the visual elements of the 
org.apache.royale.html.RadioButton 
@@ -107,7 +108,7 @@ package org.apache.royale.html.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/Basic/src/main/royale/org/apache/royale/html/beads/ScrollBarView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ScrollBarView.as
index fc3d381..951e4b4 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ScrollBarView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ScrollBarView.as
@@ -34,6 +34,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.html.Button;
        import 
org.apache.royale.html.beads.controllers.ButtonAutoRepeatController;
        import org.apache.royale.utils.loadBeadFromValuesManager;
+       import org.apache.royale.html.util.getModelByType;
 
     /**
      *  The ScrollBarView class is the default view for
@@ -109,7 +110,7 @@ package org.apache.royale.html.beads
             for each (var bead:IBead in beads)
                 addBead(bead);
                         
-                       sbModel = value.getBeadByType(IScrollBarModel) as 
IScrollBarModel;
+                       sbModel = getModelByType(value,IScrollBarModel) as 
IScrollBarModel;
             sbModel.addEventListener("maximumChange", changeHandler);
             sbModel.addEventListener("minimumChange", changeHandler);
             sbModel.addEventListener("snapIntervalChange", changeHandler);
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SimpleAlertView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SimpleAlertView.as
index 1e8cdd1..f6fa841 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SimpleAlertView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SimpleAlertView.as
@@ -39,6 +39,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.utils.loadBeadFromValuesManager;
        import org.apache.royale.html.beads.IBackgroundBead;
        import org.apache.royale.html.beads.IBorderBead;
+       import org.apache.royale.html.util.getModelByType;
        
        /**
         *  The SimpleAlertView class creates the visual elements of the 
@@ -100,7 +101,7 @@ package org.apache.royale.html.beads
                                loadBeadFromValuesManager(IBorderBead, 
"iBorderBead", value);
                        }
                        
-                       var model:IAlertModel = 
_strand.getBeadByType(IAlertModel) as IAlertModel;
+                       var model:IAlertModel = 
getModelByType(_strand,IAlertModel) as IAlertModel;
                        
model.addEventListener("messageChange",handleMessageChange);
                        
model.addEventListener("htmlMessageChange",handleMessageChange);
 
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SliderView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SliderView.as
index 17eb60b..794bbc5 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SliderView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SliderView.as
@@ -40,6 +40,7 @@ package org.apache.royale.html.beads
     import org.apache.royale.html.TextButton;
     import org.apache.royale.utils.sendStrandEvent;
     import org.apache.royale.utils.loadBeadFromValuesManager;
+    import org.apache.royale.core.IStrandWithModel;
        
        /**
         *  The SliderView class creates the visual elements of the 
org.apache.royale.html.Slider 
@@ -77,6 +78,7 @@ package org.apache.royale.html.beads
                 * 
                 *  @royaleignorecoercion org.apache.royale.core.IParent
                 *  @royaleignorecoercion org.apache.royale.core.IRangeModel
+                *  @royaleignorecoercion 
org.apache.royale.core.IStrandWithModel
                 *  @royaleignorecoercion 
org.apache.royale.events.IEventDispatcher
                 */
                override public function set strand(value:IStrand):void
@@ -112,7 +114,7 @@ package org.apache.royale.html.beads
                                (host as IParent).addElement(_thumb);
                        }
                        
-                       rangeModel = _strand.getBeadByType(IBeadModel) as 
IRangeModel;
+                       rangeModel = (_strand as IStrandWithModel).model as 
IRangeModel;
 
                        var rm:IEventDispatcher = rangeModel as 
IEventDispatcher;
                        
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SpinnerView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SpinnerView.as
index 2e5d5e8..2cf47c7 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SpinnerView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SpinnerView.as
@@ -34,10 +34,12 @@ COMPILE::SWF {
        import org.apache.royale.events.IEventDispatcher;
        import org.apache.royale.html.Button;
 
-COMPILE::JS {
-       import org.apache.royale.html.beads.controllers.SpinnerMouseController;
-    import org.apache.royale.html.supportClasses.SpinnerButton;
-}
+       COMPILE::JS {
+               import 
org.apache.royale.html.beads.controllers.SpinnerMouseController;
+               import org.apache.royale.html.supportClasses.SpinnerButton;
+       }
+    import org.apache.royale.html.util.getModelByType;
+    import org.apache.royale.core.IStrandWithModel;
 
        /**
         *  The SpinnerView class creates the visual elements of the 
org.apache.royale.html.Spinner
@@ -104,7 +106,7 @@ COMPILE::JS {
 
                                UIBase(_strand).$sprite_addChild(_decrement);
                                UIBase(_strand).$sprite_addChild(_increment);
-                               rangeModel = _strand.getBeadByType(IBeadModel) 
as IRangeModel;
+                               rangeModel = (_strand as 
IStrandWithModel).model as IRangeModel;
                        }
                        
IEventDispatcher(value).addEventListener("widthChanged",sizeChangeHandler);
                        
IEventDispatcher(value).addEventListener("heightChanged",sizeChangeHandler);
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextButtonView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextButtonView.as
index 726e5f0..2684a7d 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextButtonView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextButtonView.as
@@ -30,6 +30,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.core.ITextModel;
        import org.apache.royale.events.Event;
        import org.apache.royale.events.IEventDispatcher;
+       import org.apache.royale.html.util.getModelByType;
 
     /**
      *  The TextButtonView class is the default view for
@@ -94,7 +95,7 @@ package org.apache.royale.html.beads
                override public function set strand(value:IStrand):void
                {
                        super.strand = value;
-                       textModel = value.getBeadByType(ITextModel) as 
ITextModel;
+                       textModel = getModelByType(value,ITextModel) as 
ITextModel;
                        textModel.addEventListener("textChange", 
textChangeHandler);
                        textModel.addEventListener("htmlChange", 
htmlChangeHandler);
                        shape = new Shape();
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextFieldViewBase.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextFieldViewBase.as
index f5bfa2b..5f38c80 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextFieldViewBase.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextFieldViewBase.as
@@ -30,6 +30,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.core.ValuesManager;
        import org.apache.royale.events.Event;
        import org.apache.royale.events.IEventDispatcher;
+       import org.apache.royale.html.util.getModelByType;
        
     /**
      *  The TextFieldViewBase class is the base class for
@@ -88,7 +89,7 @@ package org.apache.royale.html.beads
                public function set strand(value:IStrand):void
                {
                        _strand = value;
-                       _textModel = value.getBeadByType(ITextModel) as 
ITextModel;
+                       _textModel = getModelByType(value,ITextModel) as 
ITextModel;
             _textModel.addEventListener("textChange", textChangeHandler);
             _textModel.addEventListener("htmlChange", htmlChangeHandler);
             IEventDispatcher(_strand).addEventListener("widthChanged", 
widthChangeHandler);
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TreeGridView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TreeGridView.as
index 781e735..e96a40d 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TreeGridView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TreeGridView.as
@@ -46,6 +46,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.html.supportClasses.IDataGridColumn;
        import org.apache.royale.utils.sendStrandEvent;
        import org.apache.royale.utils.loadBeadFromValuesManager;
+       import org.apache.royale.core.IStrandWithModel;
        
        /**
         * The TreeGridView class is responsible for creating the 
sub-components of the TreeGrid:
@@ -218,10 +219,11 @@ package org.apache.royale.html.beads
                /**
                 * @private
                 * @royaleignorecoercion org.apache.royale.core.IDataGridModel
+                * @royaleignorecoercion org.apache.royale.core.IStrandWithModel
                 */
                private function handleSelectedIndexChanged(event:Event):void
                {
-                       var sharedModel:IDataGridModel = 
_strand.getBeadByType(IBeadModel) as IDataGridModel;
+                       var sharedModel:IDataGridModel = (_strand as 
IStrandWithModel).model as IDataGridModel;
                        var newIndex:int = sharedModel.selectedIndex;
                        
                        for(var i:int=0; i < _lists.length; i++) {
@@ -234,10 +236,11 @@ package org.apache.royale.html.beads
                /**
                 * @private
                 * @royaleignorecoercion org.apache.royale.core.IDataGridModel
+                * @royaleignorecoercion org.apache.royale.core.IStrandWithModel
                 */
                private function handleColumnListChange(event:Event):void
                {
-                       var sharedModel:IDataGridModel = 
_strand.getBeadByType(IBeadModel) as IDataGridModel;
+                       var sharedModel:IDataGridModel = (_strand as 
IStrandWithModel).model as IDataGridModel;
                        
                        if (event.target is List) {
                                var list:List = event.target as List;
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VScrollBarView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VScrollBarView.as
index 75e713a..5e25ed7 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VScrollBarView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VScrollBarView.as
@@ -33,6 +33,7 @@ package org.apache.royale.html.beads
     import org.apache.royale.events.Event;
        import org.apache.royale.html.Button;
        import 
org.apache.royale.html.beads.controllers.ButtonAutoRepeatController;
+       import org.apache.royale.html.util.getModelByType;
 
     /**
      *  The ScrollBarView class is the default view for
@@ -76,7 +77,7 @@ package org.apache.royale.html.beads
         override protected function changeHandler(event:Event):void
         {
                layout.layout();
-               sbModel = host.getBeadByType(IScrollBarModel) as 
IScrollBarModel;
+               sbModel = getModelByType(host,IScrollBarModel) as 
IScrollBarModel;
                sbModel.stepSize = Math.max(Math.round(host.height / 
STEP_RATE), 1);
         }            
 
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/CascadingMenuSelectionMouseController.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/CascadingMenuSelectionMouseController.as
index 6fb7862..d259006 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/CascadingMenuSelectionMouseController.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/CascadingMenuSelectionMouseController.as
@@ -35,6 +35,7 @@ package org.apache.royale.html.beads.controllers
        COMPILE::JS {
                import org.apache.royale.events.BrowserEvent;
        }
+       import org.apache.royale.core.IStrandWithModel;
 
        /**
         * The CascadingMenuSelectionMouseController does the same job as the 
MenuSelectionMouseController
@@ -72,12 +73,13 @@ package org.apache.royale.html.beads.controllers
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.9.6
+                * @royaleignorecoercion org.apache.royale.core.IStrandWithModel
                 */
                override protected function 
selectedHandler(event:ItemClickedEvent):void
                {
                        var node:Object = event.data;
                        
-                       var model:ICascadingMenuModel = 
_strand.getBeadByType(IBeadModel) as ICascadingMenuModel;
+                       var model:ICascadingMenuModel = (_strand as 
IStrandWithModel).model as ICascadingMenuModel;
                        
                        if (getHasMenu(node, model)) {
                                var c:Class = 
ValuesManager.valuesImpl.getValue(_strand, "iMenu");
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateChooserMouseController.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateChooserMouseController.as
index b016f47..da803ca 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateChooserMouseController.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateChooserMouseController.as
@@ -30,6 +30,7 @@ package org.apache.royale.html.beads.controllers
        import org.apache.royale.events.Event;
        import org.apache.royale.events.MouseEvent;
        import org.apache.royale.events.IEventDispatcher;
+       import org.apache.royale.core.IStrandWithModelView;
        
        /**
         *  The DateChooserMouseController class is responsible for listening to
@@ -56,7 +57,14 @@ package org.apache.royale.html.beads.controllers
                }
                
                private var _strand:IStrand;
-               
+
+               /**
+                * @royaleignorecoercion 
org.apache.royale.core.IStrandWithModelView
+                */
+               private function get host():IStrandWithModelView
+               {
+                       return _strand as IStrandWithModelView
+               }
                /**
                 *  @copy org.apache.royale.core.IBead#strand
                 *  
@@ -71,7 +79,7 @@ package org.apache.royale.html.beads.controllers
                {
                        _strand = value;
                        
-                       var view:DateChooserView = 
value.getBeadByType(IBeadView) as DateChooserView;
+                       var view:DateChooserView = host.view as DateChooserView;
                        view.prevMonthButton.addEventListener("click", 
prevMonthClickHandler);
                        view.nextMonthButton.addEventListener("click", 
nextMonthClickHandler);
                        
@@ -86,7 +94,7 @@ package org.apache.royale.html.beads.controllers
                private function listHandler(event:Event):void
                {
                        var list:DateChooserList = event.target as 
DateChooserList;
-                       var model:DateChooserModel = 
_strand.getBeadByType(IBeadModel) as DateChooserModel;                     
+                       var model:DateChooserModel = host.model as 
DateChooserModel;
                        model.selectedDate = list.selectedItem as Date;
                }
 
@@ -98,7 +106,7 @@ package org.apache.royale.html.beads.controllers
                {
                        event.preventDefault();
             
-                       var model:DateChooserModel = 
_strand.getBeadByType(IBeadModel) as DateChooserModel;
+                       var model:DateChooserModel = host.model as 
DateChooserModel;
                        var month:Number = model.displayedMonth - 1;
                        var year:Number  = model.displayedYear;
                        if (month < 0) {
@@ -117,7 +125,7 @@ package org.apache.royale.html.beads.controllers
                {
                        event.preventDefault();
             
-                       var model:DateChooserModel = 
_strand.getBeadByType(IBeadModel) as DateChooserModel;
+                       var model:DateChooserModel = host.model as 
DateChooserModel;
                        var month:Number = model.displayedMonth + 1;
                        var year:Number  = model.displayedYear;
                        if (month >= 12) {
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
index 4b1765a..0cfafd0 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
@@ -30,6 +30,7 @@ package org.apache.royale.html.beads.controllers
     import org.apache.royale.utils.Timer;
     import org.apache.royale.utils.UIUtils;
     import org.apache.royale.utils.sendStrandEvent;
+    import org.apache.royale.html.util.getModelByType;
        
        /**
         * The DateFieldMouseController class is responsible for monitoring
@@ -132,7 +133,7 @@ package org.apache.royale.html.beads.controllers
             
                        var viewBead:DateFieldView = 
_strand.getBeadByType(DateFieldView) as DateFieldView;
                        
-                       var model:IDateChooserModel = 
_strand.getBeadByType(IDateChooserModel) as IDateChooserModel;
+                       var model:IDateChooserModel = 
getModelByType(_strand,IDateChooserModel) as IDateChooserModel;
                        model.selectedDate = 
IDateChooserModel(viewBead.popUp.getBeadByType(IDateChooserModel)).selectedDate;
 
                        viewBead.popUpVisible = false;
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuBarMouseController.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuBarMouseController.as
index c3b74c9..78672b8 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuBarMouseController.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuBarMouseController.as
@@ -35,6 +35,7 @@ package org.apache.royale.html.beads.controllers
        import org.apache.royale.utils.UIUtils;
        import org.apache.royale.utils.loadBeadFromValuesManager;
        import org.apache.royale.utils.sendEvent;
+       import org.apache.royale.core.IStrandWithModel;
 
        /**
         * The MenuBarMouseController handles mouse events for the MenuBar. 
While the menu bar is
@@ -105,6 +106,7 @@ package org.apache.royale.html.beads.controllers
                 *  @royaleignorecoercion org.apache.royale.core.UIBase
                 *  @royaleignorecoercion org.apache.royale.core.IFactory
                 *  @royaleignorecoercion org.apache.royale.core.IMenuBarModel
+                *  @royaleignorecoercion 
org.apache.royale.core.IStrandWithModel
      * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
                 */
                override protected function 
selectedHandler(event:ItemClickedEvent):void
@@ -118,7 +120,7 @@ package org.apache.royale.html.beads.controllers
                        var menuFactory:IFactory = 
loadBeadFromValuesManager(IFactory, "iMenuFactory", _strand) as IFactory;
                        var menu:IMenu = menuFactory.newInstance() as IMenu;
                        
-                       var model:IMenuBarModel = 
_strand.getBeadByType(IBeadModel) as IMenuBarModel;
+                       var model:IMenuBarModel = (_strand as 
IStrandWithModel).model as IMenuBarModel;
                        
                        menu.dataProvider = getMenuDataProvider(event.data, 
model.submenuField);
                        menu.labelField = model.labelField;
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ScrollBarMouseControllerBase.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ScrollBarMouseControllerBase.as
index 71b2bab..5d92c25 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ScrollBarMouseControllerBase.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ScrollBarMouseControllerBase.as
@@ -26,6 +26,7 @@ package org.apache.royale.html.beads.controllers
     import org.apache.royale.events.MouseEvent;
        import org.apache.royale.html.beads.IScrollBarView;
        import org.apache.royale.utils.sendStrandEvent;
+       import org.apache.royale.html.util.getModelByType;
 
     /**
      *  The ScrollBarMouseControllerBase class is the base class
@@ -91,7 +92,7 @@ package org.apache.royale.html.beads.controllers
                public function set strand(value:IStrand):void
                {
                        _strand = value;
-                       sbModel = value.getBeadByType(IScrollBarModel) as 
IScrollBarModel;
+                       sbModel = getModelByType(value,IScrollBarModel) as 
IScrollBarModel;
                        sbView = value.getBeadByType(IScrollBarView) as 
IScrollBarView;
                        sbView.decrement.addEventListener(MouseEvent.CLICK, 
decrementClickHandler);
                        sbView.increment.addEventListener(MouseEvent.CLICK, 
incrementClickHandler);
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/ButtonBarLayout.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/ButtonBarLayout.as
index 5bf485f..f7b788a 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/ButtonBarLayout.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/ButtonBarLayout.as
@@ -25,6 +25,7 @@ package org.apache.royale.html.beads.layouts
        import org.apache.royale.core.IStrand;
        import org.apache.royale.html.beads.models.ButtonBarModel;
        import org.apache.royale.html.supportClasses.UIItemRendererBase;
+       import org.apache.royale.html.util.getModelByType;
 
        /**
         *  The ButtonBarLayout class bead sizes and positions the button
@@ -83,7 +84,7 @@ package org.apache.royale.html.beads.layouts
                {
                        var contentView:ILayoutView = layoutView;
 
-                       var model:ButtonBarModel = (host as 
IStrand).getBeadByType(ButtonBarModel) as ButtonBarModel;
+                       var model:ButtonBarModel = 
getModelByType(_strand,ButtonBarModel) as ButtonBarModel;
                        if (model) {
                                buttonWidths = model.buttonWidths;
                                _widthType = model.widthType;
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/DataGridLayout.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/DataGridLayout.as
index b1922c7..d29aa85 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/DataGridLayout.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/DataGridLayout.as
@@ -37,6 +37,7 @@ package org.apache.royale.html.beads.layouts
     import org.apache.royale.html.beads.models.ButtonBarModel;
     import org.apache.royale.html.supportClasses.IDataGridColumn;
     import org.apache.royale.core.Bead;
+    import org.apache.royale.html.util.getModelByType;
        
        /**
         * DataGridLayout is a class that handles the size and positioning of 
the
@@ -106,7 +107,7 @@ package org.apache.royale.html.beads.layouts
                        // 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 = 
getModelByType(header,ButtonBarModel) as ButtonBarModel;
                        return bbmodel.dataProvider as Array;
                }
 
@@ -120,7 +121,7 @@ package org.apache.royale.html.beads.layouts
                        // 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 = 
getModelByType(header,ButtonBarModel) as ButtonBarModel;
                        bbmodel.buttonWidths = columnWidths;
                }
         
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/HScrollBarLayout.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/HScrollBarLayout.as
index 4b2ebd4..9446024 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/HScrollBarLayout.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/HScrollBarLayout.as
@@ -32,6 +32,7 @@ package org.apache.royale.html.beads.layouts
     import org.apache.royale.geom.Rectangle;
        import org.apache.royale.html.beads.IScrollBarView;
        import org.apache.royale.html.Button;
+       import org.apache.royale.html.util.getModelByType;
 
     /**
      *  The HScrollBarLayout class is a layout
@@ -84,7 +85,7 @@ package org.apache.royale.html.beads.layouts
                public function layout():Boolean
                {
             if (!sbModel)
-                sbModel = _strand.getBeadByType(IScrollBarModel) as 
IScrollBarModel
+                sbModel = getModelByType(_strand,IScrollBarModel) as 
IScrollBarModel
                                        
                        var metrics:EdgeData = (ValuesManager.valuesImpl as 
IBorderPaddingMarginValuesImpl).getBorderAndPaddingMetrics(_strand as IUIBase);
             
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/TreeGridLayout.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/TreeGridLayout.as
index 4c38110..ff57506 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/TreeGridLayout.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/TreeGridLayout.as
@@ -36,6 +36,7 @@ package org.apache.royale.html.beads.layouts
        import org.apache.royale.html.supportClasses.TreeGridColumn;
        import org.apache.royale.core.IRenderedObject;
        import org.apache.royale.core.Bead;
+       import org.apache.royale.html.util.getModelByType;
        
        /**
         * The TreeGridLayout class provides the sizing and positioning for the 
sub-components
@@ -166,7 +167,7 @@ package org.apache.royale.html.beads.layouts
                                xpos += columnList.width;
                        }
                        
-                       var bbmodel:ButtonBarModel = 
header.getBeadByType(ButtonBarModel) as ButtonBarModel;
+                       var bbmodel:ButtonBarModel = 
getModelByType(header,ButtonBarModel) as ButtonBarModel;
                        bbmodel.buttonWidths = columnWidths;
                        header.dispatchEvent(new Event("layoutNeeded"));
                        
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VScrollBarLayout.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VScrollBarLayout.as
index 8490238..543d4d7 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VScrollBarLayout.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VScrollBarLayout.as
@@ -32,6 +32,7 @@ package org.apache.royale.html.beads.layouts
     import org.apache.royale.geom.Rectangle;
        import org.apache.royale.html.beads.IScrollBarView;
        import org.apache.royale.html.beads.ScrollBarView;
+       import org.apache.royale.html.util.getModelByType;
 
     /**
      *  The VScrollBarLayout class is a layout
@@ -83,7 +84,7 @@ package org.apache.royale.html.beads.layouts
                public function layout():Boolean
                {
             if (!sbModel)
-                sbModel = _strand.getBeadByType(IScrollBarModel) as 
IScrollBarModel
+                sbModel = getModelByType(_strand,IScrollBarModel) as 
IScrollBarModel
                                        
                        var metrics:EdgeData = (ValuesManager.valuesImpl as 
IBorderPaddingMarginValuesImpl).getBorderAndPaddingMetrics(_strand as IUIBase);
                     
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/AccordionItemRenderer.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/AccordionItemRenderer.as
index 9cb303e..5479d3e 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/AccordionItemRenderer.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/AccordionItemRenderer.as
@@ -27,6 +27,7 @@ package org.apache.royale.html.supportClasses
        import org.apache.royale.html.Panel;
        import org.apache.royale.html.TitleBar;
        import org.apache.royale.html.beads.PanelView;
+       import org.apache.royale.html.util.getModelByType;
        
        public class AccordionItemRenderer extends Panel implements 
IItemRenderer, ICollapsible
        {
@@ -60,7 +61,9 @@ package org.apache.royale.html.supportClasses
                {
                        super.height = value;
                }
-               
+               /**
+                * @royaleignorecoercion org.apache.royale.core.IStrand
+                */
                public function set data(value:Object):void
                {
                        while (numElements > 0)
@@ -71,7 +74,7 @@ package org.apache.royale.html.supportClasses
                        var dataAsStrand:IStrand = value as IStrand;
                        if (dataAsStrand)
                        {
-                               var dataTitleModel:ITitleBarModel = 
dataAsStrand.getBeadByType(ITitleBarModel) as ITitleBarModel;
+                               var dataTitleModel:ITitleBarModel = 
getModelByType(dataAsStrand,ITitleBarModel) as ITitleBarModel;
                                if (dataTitleModel)
                                {
 //                                     titleBar.model = dataTitleModel;

Reply via email to