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

aharui pushed a commit to branch has
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git

commit fb8b203e8a693853f64abb29571124cde1ee8518
Author: Alex Harui <[email protected]>
AuthorDate: Mon Feb 3 17:06:18 2020 -0800

    working towards a clean compile
---
 .../html/beads/DataItemRendererFactoryBase.as      |  17 ++-
 .../beads/DataItemRendererFactoryForArrayData.as   |   6 +-
 .../beads/DataItemRendererFactoryForArrayList.as   |   2 +-
 .../DataItemRendererFactoryForCollectionView.as    |  20 ++--
 .../DataItemRendererFactoryForHierarchicalData.as  |   4 +-
 .../DynamicAddItemRendererForArrayListData.as      |  12 +-
 .../DynamicItemsRendererFactoryForArrayListData.as |  18 +--
 .../DynamicRemoveItemRendererForArrayListData.as   |   8 +-
 .../DynamicUpdateItemRendererForArrayListData.as   |   6 +-
 .../apache/royale/html/beads/ITextItemRenderer.as  |   7 +-
 .../MultiSelectionItemRendererClassFactory.as      |   4 +-
 .../html/beads/SelectableItemRendererBeadBase.as   |   6 +-
 .../SolidBackgroundSelectableItemRendererBead.as   |  15 ++-
 .../TextItemRendererFactoryForStringVectorData.as  |   2 +-
 .../VirtualDataItemRendererFactoryForArrayData.as  |  14 ++-
 .../apache/royale/html/beads/VirtualListView.as    |  53 +++++++--
 .../controllers/ItemRendererMouseController.as     |  57 +++++----
 .../ListMultiSelectionMouseController.as           |  25 ++--
 .../ListSingleSelectionMouseController.as          |  22 ++--
 .../MultiSelectionItemRendererMouseController.as   |  59 ++++++----
 .../beads/layouts/VirtualListVerticalLayout.as     |   8 +-
 .../html/supportClasses/AccordionItemRenderer.as   |  91 +--------------
 ...AlternatingBackgroundColorStringItemRenderer.as |  27 ++---
 .../supportClasses/ButtonBarButtonItemRenderer.as  |   2 -
 .../supportClasses/CascadingMenuItemRenderer.as    |   2 -
 .../html/supportClasses/ColorItemRenderer.as       |  51 +++-----
 .../royale/html/supportClasses/DataItemRenderer.as |  25 ----
 .../html/supportClasses/GraphicsItemRenderer.as    |   9 +-
 .../html/supportClasses/MenuBarItemRenderer.as     |   2 -
 .../royale/html/supportClasses/MenuItemRenderer.as |   2 -
 .../html/supportClasses/StringItemRenderer.as      |   1 -
 .../supportClasses/TreeGridControlItemRenderer.as  |   2 +-
 .../html/supportClasses/UIItemRendererBase.as      | 128 ++-------------------
 33 files changed, 264 insertions(+), 443 deletions(-)

diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryBase.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryBase.as
index 2cfc0b4..645af87 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryBase.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryBase.as
@@ -19,14 +19,17 @@
 package org.apache.royale.html.beads
 {
        import org.apache.royale.core.IBead;
+       import org.apache.royale.core.IChild;
        import org.apache.royale.core.IDataProviderItemRendererMapper;
+       import org.apache.royale.core.IDataProviderModel;
        import org.apache.royale.core.IItemRendererClassFactory;
        import org.apache.royale.core.IItemRendererOwnerView;
+       import org.apache.royale.core.ILayoutHost;
        import org.apache.royale.core.IListPresentationModel;
+       import org.apache.royale.core.IParentIUIBase;
        import org.apache.royale.core.ISelectableItemRenderer;
-       import org.apache.royale.core.IDataProviderModel;
        import org.apache.royale.core.IStrand;
-    import org.apache.royale.core.IStrandWithModelView;
+       import org.apache.royale.core.IStrandWithModelView;
        import org.apache.royale.core.IUIBase;
        import org.apache.royale.core.SimpleCSSStyles;
        import org.apache.royale.core.UIBase;
@@ -35,12 +38,8 @@ package org.apache.royale.html.beads
        import org.apache.royale.events.EventDispatcher;
        import org.apache.royale.events.IEventDispatcher;
        import org.apache.royale.html.List;
-       
-    import org.apache.royale.html.beads.IListView;
-       import org.apache.royale.core.IChild;
-       import org.apache.royale.core.ILayoutHost;
-       import org.apache.royale.core.IParentIUIBase;
-    import org.apache.royale.html.supportClasses.DataItemRenderer;
+       import org.apache.royale.html.beads.IListView;
+       import org.apache.royale.html.supportClasses.DataItemRenderer;
        import org.apache.royale.utils.loadBeadFromValuesManager;
        import org.apache.royale.utils.sendEvent;
        import org.apache.royale.utils.sendStrandEvent;
@@ -229,7 +228,7 @@ package org.apache.royale.html.beads
             return 0;
         }
         
-        override protected function getItemAt(i):Object
+        override protected function getItemAt(i:int):Object
         {
             return null;
         }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayData.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayData.as
index 2d8417d..4d61df3 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayData.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayData.as
@@ -27,7 +27,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.core.ILayoutHost;
        import org.apache.royale.core.IListPresentationModel;
        import org.apache.royale.core.IParentIUIBase;
-       import org.apache.royale.core.ISelectableItemRenderer;
+       import org.apache.royale.core.IIndexedItemRenderer;
        import org.apache.royale.core.IStrand;
        import org.apache.royale.core.IStrandWithModelView;
        import org.apache.royale.core.IUIBase;
@@ -57,7 +57,7 @@ package org.apache.royale.html.beads
      *  @playerversion AIR 2.6
      *  @productversion Royale 0.8
      */
-       public class DataItemRendererFactoryForArrayData extends 
EventDispatcher implements IBead, IDataProviderItemRendererMapper
+       public class DataItemRendererFactoryForArrayData extends 
DataItemRendererFactoryBase implements IBead, IDataProviderItemRendererMapper
        {
         /**
          *  Constructor.
@@ -96,7 +96,7 @@ package org.apache.royale.html.beads
             return dp.length;
         }
         
-        override protected function getItemAt(i):Object
+        override protected function getItemAt(i:int):Object
         {
             return dp[i];
         }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayList.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayList.as
index 4f64530..9e19958 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayList.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayList.as
@@ -24,7 +24,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.core.IItemRendererClassFactory;
        import org.apache.royale.core.IItemRendererOwnerView;
        import org.apache.royale.core.IListPresentationModel;
-       import org.apache.royale.core.ISelectableItemRenderer;
+       import org.apache.royale.core.IIndexedItemRenderer;
        import org.apache.royale.core.IDataProviderModel;
        import org.apache.royale.core.IStrand;
     import org.apache.royale.core.IStrandWithModelView;
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForCollectionView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForCollectionView.as
index 92efa26..3d2882a 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForCollectionView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForCollectionView.as
@@ -26,7 +26,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.core.IItemRendererClassFactory;
        import org.apache.royale.core.IItemRendererOwnerView;
        import org.apache.royale.core.IListPresentationModel;
-       import org.apache.royale.core.ISelectableItemRenderer;
+       import org.apache.royale.core.IIndexedItemRenderer;
        import org.apache.royale.core.ISelectionModel;
        import org.apache.royale.core.IStrand;
        import org.apache.royale.core.SimpleCSSStyles;
@@ -56,7 +56,7 @@ package org.apache.royale.html.beads
                 * @private
                 * @royaleignorecoercion 
org.apache.royale.collections.ICollectionView
                 * @royaleignorecoercion 
org.apache.royale.core.IListPresentationModel
-                * @royaleignorecoercion 
org.apache.royale.core.ISelectableItemRenderer
+                * @royaleignorecoercion 
org.apache.royale.core.IIndexedItemRenderer
                 * @royaleignorecoercion 
org.apache.royale.events.IEventDispatcher
                 */
                protected function dataProviderChangeHandler(event:Event):void
@@ -80,7 +80,7 @@ package org.apache.royale.html.beads
                 * @private
                 * @royaleignorecoercion 
org.apache.royale.collections.ICollectionView
                 * @royaleignorecoercion 
org.apache.royale.core.IListPresentationModel
-                * @royaleignorecoercion 
org.apache.royale.core.ISelectableItemRenderer
+                * @royaleignorecoercion 
org.apache.royale.core.IIndexedItemRenderer
                 * @royaleignorecoercion 
org.apache.royale.events.IEventDispatcher
                 */
                protected function itemAddedHandler(event:CollectionEvent):void
@@ -92,7 +92,7 @@ package org.apache.royale.html.beads
                                return;
                        
                        var presentationModel:IListPresentationModel = 
_strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
-                       var ir:ISelectableItemRenderer = 
itemRendererFactory.createItemRenderer(dataGroup) as ISelectableItemRenderer;
+                       var ir:IIndexedItemRenderer = 
itemRendererFactory.createItemRenderer(dataGroup) as IIndexedItemRenderer;
                        labelField = dataProviderModel.labelField;
                        
                        fillRenderer(event.index, event.item, ir, 
presentationModel);
@@ -101,7 +101,7 @@ package org.apache.royale.html.beads
                        var n:int = dataGroup.numItemRenderers;
                        for (var i:int = event.index; i < n; i++)
                        {
-                               ir = dataGroup.getItemRendererAt(i) as 
ISelectableItemRenderer;
+                               ir = dataGroup.getItemRendererAt(i) as 
IIndexedItemRenderer;
                                ir.index = i;
                                
                                // could let the IR know its index has been 
changed (eg, it might change its
@@ -119,7 +119,7 @@ package org.apache.royale.html.beads
                 * @private
                 * @royaleignorecoercion 
org.apache.royale.collections.ICollectionView
                 * @royaleignorecoercion 
org.apache.royale.core.IListPresentationModel
-                * @royaleignorecoercion 
org.apache.royale.core.ISelectableItemRenderer
+                * @royaleignorecoercion 
org.apache.royale.core.IIndexedItemRenderer
                 * @royaleignorecoercion 
org.apache.royale.events.IEventDispatcher
                 */
                protected function 
itemRemovedHandler(event:CollectionEvent):void
@@ -130,14 +130,14 @@ package org.apache.royale.html.beads
                        if (!dp)
                                return;
                        
-                       var ir:ISelectableItemRenderer = 
dataGroup.getItemRendererAt(event.index) as ISelectableItemRenderer;
+                       var ir:IIndexedItemRenderer = 
dataGroup.getItemRendererAt(event.index) as IIndexedItemRenderer;
                        dataGroup.removeItemRenderer(ir);
                        
                        // adjust the itemRenderers' index to adjust for the 
shift
                        var n:int = dataGroup.numItemRenderers;
                        for (var i:int = event.index; i < n; i++)
                        {
-                               ir = dataGroup.getItemRendererAt(i) as 
ISelectableItemRenderer;
+                               ir = dataGroup.getItemRendererAt(i) as 
IIndexedItemRenderer;
                                ir.index = i;
                                
                                // could let the IR know its index has been 
changed (eg, it might change its
@@ -153,7 +153,7 @@ package org.apache.royale.html.beads
                /**
                 * @private
                 * @royaleignorecoercion 
org.apache.royale.collections.ICollectionView
-                * @royaleignorecoercion 
org.apache.royale.core.ISelectableItemRenderer
+                * @royaleignorecoercion 
org.apache.royale.core.IIndexedItemRenderer
                 */
                protected function 
itemUpdatedHandler(event:CollectionEvent):void
                {
@@ -165,7 +165,7 @@ package org.apache.royale.html.beads
 
                        // update the given renderer with (possibly) new 
information so it can change its
                        // appearence or whatever.
-                       var ir:ISelectableItemRenderer = 
dataGroup.getItemRendererAt(event.index) as ISelectableItemRenderer;
+                       var ir:IIndexedItemRenderer = 
dataGroup.getItemRendererAt(event.index) as IIndexedItemRenderer;
                        setData(ir, event.item, event.index);
                }
                
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForHierarchicalData.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForHierarchicalData.as
index 1554964..152df3d 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForHierarchicalData.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForHierarchicalData.as
@@ -28,7 +28,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.core.IItemRendererClassFactory;
        import org.apache.royale.core.IItemRendererOwnerView;
        import org.apache.royale.core.IListPresentationModel;
-       import org.apache.royale.core.ISelectableItemRenderer;
+       import org.apache.royale.core.IIndexedItemRenderer;
        import org.apache.royale.core.IStrand;
        import org.apache.royale.core.IUIBase;
        import org.apache.royale.core.SimpleCSSStyles;
@@ -76,7 +76,7 @@ package org.apache.royale.html.beads
          *  @playerversion AIR 2.6
          *  @productversion Royale 0.0
                 */
-               override protected function setData(ir:ISelectableItemRenderer, 
data:Object, index:int):void
+               override protected function setData(ir:IIndexedItemRenderer, 
data:Object, index:int):void
                {
                        if (!dataProviderModel)
                                return;
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicAddItemRendererForArrayListData.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicAddItemRendererForArrayListData.as
index 41da133..16ab7bc 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicAddItemRendererForArrayListData.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicAddItemRendererForArrayListData.as
@@ -23,7 +23,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.core.IItemRendererClassFactory;
        import org.apache.royale.core.IItemRendererOwnerView;
        import org.apache.royale.core.IListPresentationModel;
-       import org.apache.royale.core.ISelectableItemRenderer;
+       import org.apache.royale.core.IIndexedItemRenderer;
        import org.apache.royale.core.ISelectionModel;
        import org.apache.royale.core.IStrand;
        import org.apache.royale.core.IStrandWithModelView;
@@ -124,13 +124,13 @@ package org.apache.royale.html.beads
                 *  @productversion Royale 0.9.0
                 *  @royaleignorecoercion 
org.apache.royale.core.IListPresentationModel
                 *  @royaleignorecoercion org.apache.royale.core.IParent
-                *  @royaleignorecoercion 
org.apache.royale.core.ISelectableItemRenderer
+                *  @royaleignorecoercion 
org.apache.royale.core.IIndexedItemRenderer
                 *  @royaleignorecoercion 
org.apache.royale.events.IEventDispatcher
                 */
                protected function handleItemAdded(event:CollectionEvent):void
                {
                        var presentationModel:IListPresentationModel = 
_strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
-                       var ir:ISelectableItemRenderer = 
itemRendererFactory.createItemRenderer(itemRendererOwnerView) as 
ISelectableItemRenderer;
+                       var ir:IIndexedItemRenderer = 
itemRendererFactory.createItemRenderer(itemRendererOwnerView) as 
IIndexedItemRenderer;
 
                        fillRenderer(event.index, event.item, ir, 
presentationModel);
                        
@@ -139,7 +139,7 @@ package org.apache.royale.html.beads
                        var n:int = dataGroup.numElements;
                        for (var i:int = event.index; i < n; i++)
                        {
-                               ir = dataGroup.getElementAt(i) as 
ISelectableItemRenderer;
+                               ir = dataGroup.getElementAt(i) as 
IIndexedItemRenderer;
                                ir.index = i;
                        }
 
@@ -214,7 +214,7 @@ package org.apache.royale.html.beads
          */
         protected function fillRenderer(index:int,
                                         item:Object,
-                                        itemRenderer:ISelectableItemRenderer,
+                                        itemRenderer:IIndexedItemRenderer,
                                         
presentationModel:IListPresentationModel):void
         {
             itemRendererOwnerView.addItemRendererAt(itemRenderer, index);
@@ -235,7 +235,7 @@ package org.apache.royale.html.beads
         /**
          * @private
          */
-        protected function setData(itemRenderer:ISelectableItemRenderer, 
data:Object, index:int):void
+        protected function setData(itemRenderer:IIndexedItemRenderer, 
data:Object, index:int):void
         {
             itemRenderer.index = index;
             itemRenderer.data = data;
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicItemsRendererFactoryForArrayListData.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicItemsRendererFactoryForArrayListData.as
index 801247f..1602582 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicItemsRendererFactoryForArrayListData.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicItemsRendererFactoryForArrayListData.as
@@ -25,7 +25,7 @@ package org.apache.royale.html.beads
     import org.apache.royale.core.IItemRendererClassFactory;
     import org.apache.royale.core.IItemRendererOwnerView;
     import org.apache.royale.core.IListPresentationModel;
-    import org.apache.royale.core.ISelectableItemRenderer;
+    import org.apache.royale.core.IIndexedItemRenderer;
     import org.apache.royale.core.ISelectionModel;
     import org.apache.royale.core.IStrand;
     import org.apache.royale.core.SimpleCSSStyles;
@@ -45,7 +45,7 @@ package org.apache.royale.html.beads
     /**
      *  The DynamicItemsRendererFactoryForArrayListData class reads an
      *  array of data and creates an item renderer for every
-     *  ISelectableItemRenderer in the array.
+     *  IIndexedItemRenderer in the array.
      *
      *  @langversion 3.0
      *  @playerversion Flash 10.2
@@ -156,7 +156,7 @@ package org.apache.royale.html.beads
                /**
                 * @private
          * @royaleignorecoercion org.apache.royale.core.IListPresentationModel
-         * @royaleignorecoercion org.apache.royale.core.ISelectableItemRenderer
+         * @royaleignorecoercion org.apache.royale.core.IIndexedItemRenderer
                 */
         protected function dataProviderChangeHandler(event:Event):void
         {
@@ -174,7 +174,7 @@ package org.apache.royale.html.beads
             var n:int = dp.length;
             for (var i:int = 0; i < n; i++)
             {
-                var ir:ISelectableItemRenderer = 
itemRendererFactory.createItemRenderer(dataGroup) as ISelectableItemRenderer;
+                var ir:IIndexedItemRenderer = 
itemRendererFactory.createItemRenderer(dataGroup) as IIndexedItemRenderer;
                 var item:Object = dp.getItemAt(i);
                 fillRenderer(i, item, ir, presentationModel);
             }
@@ -185,7 +185,7 @@ package org.apache.royale.html.beads
                /**
                 * @private
          * @royaleignorecoercion org.apache.royale.core.IListPresentationModel
-         * @royaleignorecoercion org.apache.royale.core.ISelectableItemRenderer
+         * @royaleignorecoercion org.apache.royale.core.IIndexedItemRenderer
                 */
         protected function itemAddedHandler(event:CollectionEvent):void
         {
@@ -194,7 +194,7 @@ package org.apache.royale.html.beads
                 return;
 
             var presentationModel:IListPresentationModel = 
_strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
-            var ir:ISelectableItemRenderer = 
itemRendererFactory.createItemRenderer(dataGroup) as ISelectableItemRenderer;
+            var ir:IIndexedItemRenderer = 
itemRendererFactory.createItemRenderer(dataGroup) as IIndexedItemRenderer;
 
             fillRenderer(event.index, event.item, ir, presentationModel);
                        
@@ -202,7 +202,7 @@ package org.apache.royale.html.beads
                        var n:int = dataGroup.numItemRenderers;
                        for (var i:int = event.index; i < n; i++)
                        {
-                               ir = dataGroup.getItemRendererAt(i) as 
ISelectableItemRenderer;
+                               ir = dataGroup.getItemRendererAt(i) as 
IIndexedItemRenderer;
                                ir.index = i;
                        }
 
@@ -216,7 +216,7 @@ package org.apache.royale.html.beads
                 */
         protected function fillRenderer(index:int,
                                       item:Object,
-                                      itemRenderer:ISelectableItemRenderer,
+                                      itemRenderer:IIndexedItemRenderer,
                                       
presentationModel:IListPresentationModel):void
         {
                        dataGroup.addItemRendererAt(itemRenderer, index);
@@ -237,7 +237,7 @@ package org.apache.royale.html.beads
                /**
                 * @private
                 */
-               protected function 
setData(itemRenderer:ISelectableItemRenderer, data:Object, index:int):void
+               protected function setData(itemRenderer:IIndexedItemRenderer, 
data:Object, index:int):void
                {
                        itemRenderer.index = index;
                        itemRenderer.data = data;
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveItemRendererForArrayListData.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveItemRendererForArrayListData.as
index 41d341a..5cce251 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveItemRendererForArrayListData.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveItemRendererForArrayListData.as
@@ -21,7 +21,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.core.IBead;
        import org.apache.royale.core.IDataProviderModel;
        import org.apache.royale.core.IItemRendererOwnerView;
-       import org.apache.royale.core.ISelectableItemRenderer;
+       import org.apache.royale.core.IIndexedItemRenderer;
        import org.apache.royale.core.ISelectionModel;
        import org.apache.royale.core.IStrand;
        import org.apache.royale.core.IStrandWithModelView;
@@ -114,20 +114,20 @@ package org.apache.royale.html.beads
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.9.0
                 *  @royaleignorecoercion org.apache.royale.core.IParent
-                *  @royaleignorecoercion 
org.apache.royale.core.ISelectableItemRenderer
+                *  @royaleignorecoercion 
org.apache.royale.core.IIndexedItemRenderer
                 *  @royaleignorecoercion 
org.apache.royale.events.IEventDispatcher
                 */
                protected function handleItemRemoved(event:CollectionEvent):void
                {
                        var parent:IParent = itemRendererOwnerView as IParent;
-                       var ir:ISelectableItemRenderer = 
parent.getElementAt(event.index) as ISelectableItemRenderer;
+                       var ir:IIndexedItemRenderer = 
parent.getElementAt(event.index) as IIndexedItemRenderer;
                        itemRendererOwnerView.removeItemRenderer(ir);
                        
                        // adjust the itemRenderers' index to adjust for the 
shift
                        var n:int = parent.numElements;
                        for (var i:int = event.index; i < n; i++)
                        {
-                               ir = parent.getElementAt(i) as 
ISelectableItemRenderer;
+                               ir = parent.getElementAt(i) as 
IIndexedItemRenderer;
                                ir.index = i;
                        }
 
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicUpdateItemRendererForArrayListData.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicUpdateItemRendererForArrayListData.as
index 89defed..aae14ff 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicUpdateItemRendererForArrayListData.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicUpdateItemRendererForArrayListData.as
@@ -21,7 +21,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.core.IBead;
        import org.apache.royale.core.IDataProviderModel;
        import org.apache.royale.core.IItemRendererOwnerView;
-       import org.apache.royale.core.ISelectableItemRenderer;
+       import org.apache.royale.core.IIndexedItemRenderer;
        import org.apache.royale.core.ISelectionModel;
        import org.apache.royale.core.IStrand;
        import org.apache.royale.core.IStrandWithModelView;
@@ -115,7 +115,7 @@ package org.apache.royale.html.beads
                 */
                protected function handleItemAdded(event:CollectionEvent):void
                {
-            var ir:ISelectableItemRenderer = 
itemRendererOwnerView.getItemRendererForIndex(event.index) as 
ISelectableItemRenderer;
+            var ir:IIndexedItemRenderer = 
itemRendererOwnerView.getItemRendererForIndex(event.index) as 
IIndexedItemRenderer;
 
             setData(ir, event.item, event.index);
 
@@ -166,7 +166,7 @@ package org.apache.royale.html.beads
         /**
          * @private
          */
-        protected function setData(itemRenderer:ISelectableItemRenderer, 
data:Object, index:int):void
+        protected function setData(itemRenderer:IIndexedItemRenderer, 
data:Object, index:int):void
         {
             itemRenderer.index = index;
             itemRenderer.data = data;
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ITextItemRenderer.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ITextItemRenderer.as
index fa401e0..792cf7d 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ITextItemRenderer.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/ITextItemRenderer.as
@@ -18,8 +18,9 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.html.beads
 {
-       import org.apache.royale.core.ISelectableItemRenderer;
-
+    import org.apache.royale.core.IItemRenderer;
+    import org.apache.royale.core.ILabelFieldItemRenderer;
+    
     /**
      *  The ITextItemRenderer interface is the interface for
      *  for org.apache.royale.core.IItemRenderer that display text.
@@ -29,7 +30,7 @@ package org.apache.royale.html.beads
      *  @playerversion AIR 2.6
      *  @productversion Royale 0.0
      */
-       public interface ITextItemRenderer extends ISelectableItemRenderer
+       public interface ITextItemRenderer extends IItemRenderer, 
ILabelFieldItemRenderer
        {
         /**
          *  The text to be displayed in the item renderer.
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/MultiSelectionItemRendererClassFactory.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/MultiSelectionItemRendererClassFactory.as
index 0a11815..d2a9eef 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/MultiSelectionItemRendererClassFactory.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/MultiSelectionItemRendererClassFactory.as
@@ -49,9 +49,9 @@ package org.apache.royale.html.beads
                        super();
                }
 
-               override public function 
createFromClass(parent:IItemRendererOwnerView):IItemRenderer
+               override public function createFromClass():IItemRenderer
                {
-                       var renderer:IItemRenderer = 
super.createFromClass(parent);
+                       var renderer:IItemRenderer = super.createFromClass();
                        var strand:IStrand = renderer as IStrand;
                        var bead:IBead = strand.getBeadByType(IBeadController);
                        if (bead)
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SelectableItemRendererBeadBase.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SelectableItemRendererBeadBase.as
index fe68cc6..bc112ea 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SelectableItemRendererBeadBase.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SelectableItemRendererBeadBase.as
@@ -31,7 +31,7 @@ package org.apache.royale.html.beads
         *  @playerversion AIR 2.6
         *  @productversion Royale 0.8
         */
-       public class SelectableItemRendererBead implements IBead
+       public class SelectableItemRendererBeadBase implements IBead
        {
                /**
                 *  constructor.
@@ -41,11 +41,11 @@ package org.apache.royale.html.beads
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.8
                 */
-               public function SelectableItemRendererBead()
+               public function SelectableItemRendererBeadBase()
                {
                }
 
-        private var _strand:IStrand;
+        protected var _strand:IStrand;
 
         /**
                 *  @copy org.apache.royale.core.IBead#strand
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SolidBackgroundSelectableItemRendererBead.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SolidBackgroundSelectableItemRendererBead.as
index f9b3719..f35746e 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SolidBackgroundSelectableItemRendererBead.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SolidBackgroundSelectableItemRendererBead.as
@@ -18,6 +18,10 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.html.beads
 {
+    COMPILE::SWF
+    {
+        import flash.display.Sprite;
+    }
     import org.apache.royale.core.IBead;
     import org.apache.royale.core.IUIBase;
     import org.apache.royale.core.IStrand;
@@ -31,7 +35,7 @@ package org.apache.royale.html.beads
         *  @playerversion AIR 2.6
         *  @productversion Royale 0.8
         */
-       public class SolidBackgroundSelectableItemRendererBead extends 
SeletableItemRendererBeadBase
+       public class SolidBackgroundSelectableItemRendererBead extends 
SelectableItemRendererBeadBase
        {
 
                /**
@@ -55,10 +59,11 @@ package org.apache.royale.html.beads
             {
                 super.updateRenderer();
                 
-                graphics.clear();
-                graphics.beginFill(useColor, (down||selected||hovered)?1:0);
-                graphics.drawRect(0, 0, width, height);
-                graphics.endFill();
+                var host:Sprite = _strand as Sprite;
+                host.graphics.clear();
+                host.graphics.beginFill(useColor, 
(down||selected||hovered)?1:0);
+                host.graphics.drawRect(0, 0, host.width, host.height);
+                host.graphics.endFill();
             }
             COMPILE::JS
             {
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForStringVectorData.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForStringVectorData.as
index 48db9ca..3808ef3 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForStringVectorData.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TextItemRendererFactoryForStringVectorData.as
@@ -148,7 +148,7 @@ package org.apache.royale.html.beads
                        var n:int = dp.length; 
                        for (var i:int = 0; i < n; i++)
                        {
-                               var tf:ITextItemRenderer = 
itemRendererFactory.createItemRenderer(dataGroup) as ITextItemRenderer;
+                               var tf:ITextItemRenderer = 
itemRendererFactory.createItemRenderer() as ITextItemRenderer;
                 tf.index = i;
                 //TODO There is no itemsCreated event being dispatched once 
all the item renderers are added.
                 // Not sure why, but that would require dispatching events as 
they are added. This should probably be fixed.
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryForArrayData.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryForArrayData.as
index e42c8d0..f90e0b4 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryForArrayData.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataItemRendererFactoryForArrayData.as
@@ -27,7 +27,8 @@ package org.apache.royale.html.beads
        import org.apache.royale.core.ILayoutHost;
        import org.apache.royale.core.IListPresentationModel;
        import org.apache.royale.core.IParentIUIBase;
-       import org.apache.royale.core.ISelectableItemRenderer;
+       import org.apache.royale.core.IIndexedItemRenderer;
+    import org.apache.royale.core.ILabelFieldItemRenderer;
        import org.apache.royale.core.IStrand;
     import org.apache.royale.core.IStrandWithModelView;
        import org.apache.royale.core.IUIBase;
@@ -179,7 +180,7 @@ package org.apache.royale.html.beads
          */
         public function freeItemRendererForIndex(index:int):void
         {
-            var ir:ISelectableItemRenderer = rendererMap[index];
+            var ir:IIndexedItemRenderer = rendererMap[index];
             var view:IListView = (_strand as IStrandWithModelView).view as 
IListView;
             var dataGroup:IItemRendererOwnerView = view.dataGroup;
             dataGroup.removeItemRenderer(ir);
@@ -198,21 +199,22 @@ package org.apache.royale.html.beads
          *  @royaleignorecoercion org.apache.royale.core.IStrandWithModelView
          *  @royaleignorecoercion org.apache.royale.html.beads.IListView
          */
-        public function getItemRendererForIndex(index:int, 
elementIndex:int):ISelectableItemRenderer
+        public function getItemRendererForIndex(index:int, 
elementIndex:int):IIndexedItemRenderer
         {
-            var ir:ISelectableItemRenderer = rendererMap[index];
+            var ir:IIndexedItemRenderer = rendererMap[index];
             if (ir) return ir;
             
             var dp:Array = dataProviderModel.dataProvider as Array;
             
-                       ir = itemRendererFactory.createItemRenderer(dataGroup) 
as ISelectableItemRenderer;
+                       ir = itemRendererFactory.createItemRenderer() as 
IIndexedItemRenderer;
             var dataItemRenderer:DataItemRenderer = ir as DataItemRenderer;
 
             var view:IListView = (_strand as IStrandWithModelView).view as 
IListView;
             var dataGroup:IItemRendererOwnerView = view.dataGroup;
                        dataGroup.addItemRendererAt(ir, elementIndex);
                        ir.index = index;
-                       ir.labelField = labelField;
+            if (ir is ILabelFieldItemRenderer)
+                       (ir as ILabelFieldItemRenderer).labelField = labelField;
             if (dataItemRenderer)
             {
                 dataItemRenderer.dataField = dataField;
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualListView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualListView.as
index 24eab68..615326a 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualListView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualListView.as
@@ -24,6 +24,7 @@ package org.apache.royale.html.beads
        import org.apache.royale.core.IBeadLayout;
        import org.apache.royale.core.IBeadModel;
        import org.apache.royale.core.IBeadView;
+       import org.apache.royale.core.IIndexedItemRenderer;
        import org.apache.royale.core.IItemRenderer;
        import org.apache.royale.core.IItemRendererOwnerView;
        import org.apache.royale.core.IParent;
@@ -82,7 +83,7 @@ package org.apache.royale.html.beads
             if (contentView.numElements == 0)
                 return null;
             
-            var firstIndex:int = (contentView.getElementAt(firstElementIndex) 
as ISelectableItemRenderer).index;
+            var firstIndex:int = (contentView.getElementAt(firstElementIndex) 
as IIndexedItemRenderer).index;
             
             if (index < firstIndex) 
                 return null;
@@ -94,16 +95,31 @@ package org.apache.royale.html.beads
         
                /**
                 * @private
-                * @royaleignorecoercion 
org.apache.royale.core.ISelectableItemRenderer
+                * @royaleignorecoercion 
org.apache.royale.core.IIndexedItemRenderer
                 */
                protected function selectionChangeHandler(event:Event):void
                {
-                       var ir:ISelectableItemRenderer = 
dataGroup.getItemRendererForIndex(lastSelectedIndex) as ISelectableItemRenderer;
+            var selectionBead:ISelectableItemRenderer;
+                       var ir:IIndexedItemRenderer = 
dataGroup.getItemRendererForIndex(lastSelectedIndex) as IIndexedItemRenderer;
                        if(ir)
-                               ir.selected = false;
-                       ir = 
dataGroup.getItemRendererForIndex(listModel.selectedIndex) as 
ISelectableItemRenderer;
+            {
+                if (ir is IStrand)
+                {
+                    selectionBead = (ir as 
IStrand).getBeadByType(ISelectableItemRenderer) as ISelectableItemRenderer;
+                    if (selectionBead)
+                        selectionBead.selected = false;
+                }
+            }
+                       ir = 
dataGroup.getItemRendererForIndex(listModel.selectedIndex) as 
IIndexedItemRenderer;
                        if(ir)
-                               ir.selected = true;
+            {
+                if (ir is IStrand)
+                {
+                    selectionBead = (ir as 
IStrand).getBeadByType(ISelectableItemRenderer) as ISelectableItemRenderer;
+                    if (selectionBead)
+                        selectionBead.selected = true;
+                }
+            }
 
                        lastSelectedIndex = listModel.selectedIndex;
                }
@@ -112,17 +128,32 @@ package org.apache.royale.html.beads
 
                /**
                 * @private
-                * @royaleignorecoercion 
org.apache.royale.core.ISelectableItemRenderer
+                * @royaleignorecoercion 
org.apache.royale.core.IIndexedItemRenderer
                 * * @royaleignorecoercion org.apache.royale.core.IRollOverModel
                 */
                protected function rollOverIndexChangeHandler(event:Event):void
                {
-                       var ir:ISelectableItemRenderer = 
dataGroup.getItemRendererForIndex(lastRollOverIndex) as ISelectableItemRenderer;
+            var selectionBead:ISelectableItemRenderer;
+            var ir:IIndexedItemRenderer = 
dataGroup.getItemRendererForIndex(lastRollOverIndex) as IIndexedItemRenderer;
                        if(ir)
-                               ir.hovered = false;
-                       ir = dataGroup.getItemRendererForIndex((listModel as 
IRollOverModel).rollOverIndex) as ISelectableItemRenderer;
+            {
+                if (ir is IStrand)
+                {
+                    selectionBead = (ir as 
IStrand).getBeadByType(ISelectableItemRenderer) as ISelectableItemRenderer;
+                    if (selectionBead)
+                        selectionBead.hovered = false;
+                }
+            }
+                       ir = dataGroup.getItemRendererForIndex((listModel as 
IRollOverModel).rollOverIndex) as IIndexedItemRenderer;
                        if(ir)
-                               ir.hovered = true;
+            {
+                if (ir is IStrand)
+                {
+                    selectionBead = (ir as 
IStrand).getBeadByType(ISelectableItemRenderer) as ISelectableItemRenderer;
+                    if (selectionBead)
+                        selectionBead.hovered = true;
+                }
+            }
                        lastRollOverIndex = (listModel as 
IRollOverModel).rollOverIndex;
                }
 
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ItemRendererMouseController.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ItemRendererMouseController.as
index 7fb3faf..62cc5f5 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ItemRendererMouseController.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ItemRendererMouseController.as
@@ -19,7 +19,8 @@
 package org.apache.royale.html.beads.controllers
 {
        import org.apache.royale.core.IBeadController;
-       import org.apache.royale.core.ISelectableItemRenderer;
+       import org.apache.royale.core.IIndexedItemRenderer;
+    import org.apache.royale.core.ISelectableItemRenderer;
        import org.apache.royale.core.IStrand;
 COMPILE::SWF {
        import org.apache.royale.events.Event;
@@ -61,7 +62,7 @@ COMPILE::JS {
                {
                }
                
-               private var renderer:ISelectableItemRenderer;
+               private var renderer:IIndexedItemRenderer;
                private var _strand:IStrand;
                
                /**
@@ -71,13 +72,13 @@ COMPILE::JS {
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.9
-                *  @royaleignorecoercion 
org.apache.royale.core.ISelectableItemRenderer
+                *  @royaleignorecoercion 
org.apache.royale.core.IIndexedItemRenderer
                 *  @royaleignorecoercion org.apache.royale.core.UIBase
                 */
                public function set strand(value:IStrand):void
                {
                        _strand = value;
-                       renderer = value as ISelectableItemRenderer;
+                       renderer = value as IIndexedItemRenderer;
                        
                        COMPILE::SWF {
                                renderer.addEventListener(MouseEvent.ROLL_OVER, 
rollOverHandler);
@@ -103,7 +104,7 @@ COMPILE::JS {
                COMPILE::SWF
                protected function rollOverHandler(event:MouseEvent):void
                {
-                       var target:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
+                       var target:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
                        if (target)
                        {
                                sendEvent(target,new 
Event("itemRollOver",true));
@@ -111,12 +112,12 @@ COMPILE::JS {
                }
                
                /**
-                * @royaleemitcoercion 
org.apache.royale.core.ISelectableItemRenderer
+                * @royaleemitcoercion 
org.apache.royale.core.IIndexedItemRenderer
                 */
                COMPILE::JS
                protected function handleMouseOver(event:BrowserEvent):void
                {
-                       var target:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
+                       var target:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
                        if (target) {
                                sendEvent(target,new 
Event("itemRollOver",true));
                        }
@@ -128,7 +129,7 @@ COMPILE::JS {
                COMPILE::SWF
                protected function rollOutHandler(event:MouseEvent):void
                {
-                       var target:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
+                       var target:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
                        if (target)
                        {
                                sendEvent(target,new Event("itemRollOut",true));
@@ -136,12 +137,12 @@ COMPILE::JS {
                }
                
                /**
-                * @royaleemitcoercion 
org.apache.royale.core.ISelectableItemRenderer
+                * @royaleemitcoercion 
org.apache.royale.core.IIndexedItemRenderer
                 */
                COMPILE::JS
                protected function handleMouseOut(event:BrowserEvent):void
                {
-                       var target:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
+                       var target:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
                        if (target)
                        {
                                sendEvent(target,new Event("itemRollOut",true));
@@ -154,11 +155,15 @@ COMPILE::JS {
                COMPILE::SWF
                protected function mouseDownHandler(event:MouseEvent):void
                {
-                       var target:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
+                       var target:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
                        if (target)
                        {
-                               target.down = true;
-                               
+                if (target is IStrand)
+                {
+                    var selectionBead:ISelectableItemRenderer = (renderer as 
IStrand).getBeadByType(ISelectableItemRenderer) as ISelectableItemRenderer;
+                    if (selectionBead)
+                        selectionBead.down = true;
+                }                              
                                var newEvent:ItemClickedEvent = new 
ItemClickedEvent("itemMouseDown");
                                newEvent.data = target.data;
                                newEvent.index = target.index;
@@ -169,17 +174,23 @@ COMPILE::JS {
                
                /**
                 * @private
-                * @royaleemitcoercion 
org.apache.royale.core.ISelectableItemRenderer
+                * @royaleemitcoercion 
org.apache.royale.core.IIndexedItemRenderer
                 */
                COMPILE::JS
                protected function handleMouseDown(event:BrowserEvent):void
                {
-                       var target:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
+                       var target:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
                        if (target)
                        {
-                               target.down = true;
-                               target.hovered = false;
-
+                if (target is IStrand)
+                {
+                    var selectionBead:ISelectableItemRenderer = (renderer as 
IStrand).getBeadByType(ISelectableItemRenderer) as ISelectableItemRenderer;
+                    if (selectionBead)
+                    {
+                        selectionBead.down = true;
+                        selectionBead.hovered = false;
+                    }
+                }
                                var newEvent:ItemClickedEvent = new 
ItemClickedEvent("itemMouseDown");
                                newEvent.data = target.data;
                                newEvent.index = target.index;
@@ -194,7 +205,7 @@ COMPILE::JS {
                protected function mouseUpHandler(event:MouseEvent):void
                {
                        event.stopImmediatePropagation();
-                       var target:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
+                       var target:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
                        if (target)
                        {                               
                                var newEvent:ItemClickedEvent = new 
ItemClickedEvent("itemClicked");
@@ -208,12 +219,12 @@ COMPILE::JS {
                
                /**
                 * @private
-                * @royaleemitcoercion 
org.apache.royale.core.ISelectableItemRenderer
+                * @royaleemitcoercion 
org.apache.royale.core.IIndexedItemRenderer
                 */
                COMPILE::JS
                protected function handleMouseClick(event:BrowserEvent):void
                {
-                       var target:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
+                       var target:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
                        if (target)
                        {
                                var newEvent:ItemClickedEvent = new 
ItemClickedEvent("itemClicked");
@@ -226,12 +237,12 @@ COMPILE::JS {
 
                /**
                 * @private
-                * @royaleemitcoercion 
org.apache.royale.core.ISelectableItemRenderer
+                * @royaleemitcoercion 
org.apache.royale.core.IIndexedItemRenderer
                 */
                COMPILE::JS
                protected function handleMouseUp(event:BrowserEvent):void
                {
-                       var target:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
+                       var target:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
                        if (target)
                        {
                                var newEvent:ItemClickedEvent = new 
ItemClickedEvent("itemMouseUp");
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListMultiSelectionMouseController.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListMultiSelectionMouseController.as
index 7ffbc1d..fef9e79 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListMultiSelectionMouseController.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListMultiSelectionMouseController.as
@@ -19,19 +19,19 @@
 package org.apache.royale.html.beads.controllers
 {
        import org.apache.royale.core.IBeadController;
+       import org.apache.royale.core.IIndexedItemRenderer;
        import org.apache.royale.core.IItemRendererOwnerView;
+       import org.apache.royale.core.IMultiSelectionModel;
        import org.apache.royale.core.IRollOverModel;
        import org.apache.royale.core.ISelectableItemRenderer;
-       import org.apache.royale.core.IMultiSelectionModel;
        import org.apache.royale.core.IStrand;
        import org.apache.royale.events.Event;
        import org.apache.royale.events.IEventDispatcher;
        import org.apache.royale.events.ItemAddedEvent;
        import org.apache.royale.events.ItemRemovedEvent;
        import org.apache.royale.events.MouseEvent;
-       import org.apache.royale.html.beads.IListView;
-
        import org.apache.royale.events.MultiSelectionItemClickedEvent;
+       import org.apache.royale.html.beads.IListView;
        import org.apache.royale.utils.sendEvent;
 
        /**
@@ -196,27 +196,34 @@ package org.apache.royale.html.beads.controllers
                }
 
                /**
-                * @royaleemitcoercion 
org.apache.royale.core.ISelectableItemRenderer
+                * @royaleemitcoercion 
org.apache.royale.core.IIndexedItemRenderer
                 * @royaleignorecoercion org.apache.royale.core.IRollOverModel
                 */
                protected function rolloverHandler(event:Event):void
                {
-                       var renderer:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
+                       var renderer:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
                        if (renderer) {
                                IRollOverModel(listModel).rollOverIndex = 
renderer.index;
                        }
                }
 
                /**
-                * @royaleemitcoercion 
org.apache.royale.core.ISelectableItemRenderer
+                * @royaleemitcoercion 
org.apache.royale.core.IIndexedItemRenderer
                 * @royaleignorecoercion org.apache.royale.core.IRollOverModel
                 */
                protected function rolloutHandler(event:Event):void
                {
-                       var renderer:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
+                       var renderer:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
                        if (renderer) {
-                               renderer.hovered = false;
-                               renderer.down = false;
+                if (renderer is IStrand)
+                {
+                    var selectionBead:ISelectableItemRenderer = (renderer as 
IStrand).getBeadByType(ISelectableItemRenderer) as ISelectableItemRenderer;
+                    if (selectionBead)
+                    {
+                        selectionBead.hovered = false;
+                        selectionBead.down = false;                        
+                    }
+                }
                                IRollOverModel(listModel).rollOverIndex = -1;
                        }
                }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListSingleSelectionMouseController.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListSingleSelectionMouseController.as
index 7674e13..69fb16b 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListSingleSelectionMouseController.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListSingleSelectionMouseController.as
@@ -22,7 +22,8 @@ package org.apache.royale.html.beads.controllers
        import org.apache.royale.core.IBeadController;
        import org.apache.royale.core.IItemRendererOwnerView;
        import org.apache.royale.core.IRollOverModel;
-       import org.apache.royale.core.ISelectableItemRenderer;
+       import org.apache.royale.core.IIndexedItemRenderer;
+    import org.apache.royale.core.ISelectableItemRenderer;
        import org.apache.royale.core.ISelectionModel;
        import org.apache.royale.core.IStrand;
        import org.apache.royale.events.Event;
@@ -140,27 +141,34 @@ package org.apache.royale.html.beads.controllers
                }
                
                /**
-                * @royaleemitcoercion 
org.apache.royale.core.ISelectableItemRenderer
+                * @royaleemitcoercion 
org.apache.royale.core.IIndexedItemRenderer
                 * @royaleignorecoercion org.apache.royale.core.IRollOverModel
                 */
                protected function rolloverHandler(event:Event):void
                {
-                       var renderer:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
+                       var renderer:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
                        if (renderer) {
                                IRollOverModel(listModel).rollOverIndex = 
renderer.index;
                        }
                }
                
                /**
-                * @royaleemitcoercion 
org.apache.royale.core.ISelectableItemRenderer
+                * @royaleemitcoercion 
org.apache.royale.core.IIndexedItemRenderer
                 * @royaleignorecoercion org.apache.royale.core.IRollOverModel
                 */
                protected function rolloutHandler(event:Event):void
                {
-                       var renderer:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
+                       var renderer:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
                        if (renderer) {
-                               renderer.hovered = false;
-                               renderer.down = false;
+                if (renderer is IStrand)
+                {
+                    var selectionBead:ISelectableItemRenderer = (renderer as 
IStrand).getBeadByType(ISelectableItemRenderer) as ISelectableItemRenderer;
+                    if (selectionBead)
+                    {
+                        selectionBead.hovered = false;
+                        selectionBead.down = false;                        
+                    }
+                }
                                IRollOverModel(listModel).rollOverIndex = -1;
                        }
                }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MultiSelectionItemRendererMouseController.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MultiSelectionItemRendererMouseController.as
index 16491c3..a9f5588 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MultiSelectionItemRendererMouseController.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MultiSelectionItemRendererMouseController.as
@@ -19,7 +19,8 @@
 package org.apache.royale.html.beads.controllers
 {
        import org.apache.royale.core.IBeadController;
-       import org.apache.royale.core.ISelectableItemRenderer;
+    import org.apache.royale.core.ISelectableItemRenderer;
+       import org.apache.royale.core.IIndexedItemRenderer;
        import org.apache.royale.core.IStrand;
        COMPILE::SWF {
                import org.apache.royale.events.Event;
@@ -62,7 +63,7 @@ package org.apache.royale.html.beads.controllers
                {
                }
 
-               private var renderer:ISelectableItemRenderer;
+               private var renderer:IIndexedItemRenderer;
                private var _strand:IStrand;
 
                /**
@@ -72,13 +73,13 @@ package org.apache.royale.html.beads.controllers
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.9
-                *  @royaleignorecoercion 
org.apache.royale.core.ISelectableItemRenderer
+                *  @royaleignorecoercion 
org.apache.royale.core.IIndexedItemRenderer
                 *  @royaleignorecoercion org.apache.royale.core.UIBase
                 */
                public function set strand(value:IStrand):void
                {
                        _strand = value;
-                       renderer = value as ISelectableItemRenderer;
+                       renderer = value as IIndexedItemRenderer;
 
                        COMPILE::SWF {
                                renderer.addEventListener(MouseEvent.ROLL_OVER, 
rollOverHandler);
@@ -104,7 +105,7 @@ package org.apache.royale.html.beads.controllers
                COMPILE::SWF
                protected function rollOverHandler(event:MouseEvent):void
                {
-                       var target:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
+                       var target:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
                        if (target)
                        {
                                sendEvent(target,new 
Event("itemRollOver",true));
@@ -112,12 +113,12 @@ package org.apache.royale.html.beads.controllers
                }
 
                /**
-                * @royaleemitcoercion 
org.apache.royale.core.ISelectableItemRenderer
+                * @royaleemitcoercion 
org.apache.royale.core.IIndexedItemRenderer
                 */
                COMPILE::JS
                protected function handleMouseOver(event:BrowserEvent):void
                {
-                       var target:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
+                       var target:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
                        if (target) {
                                sendEvent(target,new 
Event("itemRollOver",true));
                        }
@@ -129,7 +130,7 @@ package org.apache.royale.html.beads.controllers
                COMPILE::SWF
                protected function rollOutHandler(event:MouseEvent):void
                {
-                       var target:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
+                       var target:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
                        if (target)
                        {
                                sendEvent(target,new Event("itemRollOut",true));
@@ -137,12 +138,12 @@ package org.apache.royale.html.beads.controllers
                }
 
                /**
-                * @royaleemitcoercion 
org.apache.royale.core.ISelectableItemRenderer
+                * @royaleemitcoercion 
org.apache.royale.core.IIndexedItemRenderer
                 */
                COMPILE::JS
                protected function handleMouseOut(event:BrowserEvent):void
                {
-                       var target:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
+                       var target:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
                        if (target)
                        {
                                sendEvent(target,new Event("itemRollOut",true));
@@ -155,11 +156,17 @@ package org.apache.royale.html.beads.controllers
                COMPILE::SWF
                protected function mouseDownHandler(event:MouseEvent):void
                {
-                       var target:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
+                       var target:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
                        if (target)
                        {
-                               target.down = true;
-
+                if (target is IStrand)
+                {
+                    var selectionBead:ISelectableItemRenderer = (renderer as 
IStrand).getBeadByType(ISelectableItemRenderer) as ISelectableItemRenderer;
+                    if (selectionBead)
+                    {
+                        selectionBead.down = true;
+                    }            
+                }
                                var newEvent:MultiSelectionItemClickedEvent = 
new MultiSelectionItemClickedEvent("itemMouseDown", true, true);
                                newEvent.shiftKey = event.shiftKey;
                                newEvent.ctrlKey = event.ctrlKey;
@@ -173,17 +180,23 @@ package org.apache.royale.html.beads.controllers
 
                /**
                 * @private
-                * @royaleemitcoercion 
org.apache.royale.core.ISelectableItemRenderer
+                * @royaleemitcoercion 
org.apache.royale.core.IIndexedItemRenderer
                 */
                COMPILE::JS
                protected function handleMouseDown(event:BrowserEvent):void
                {
-                       var target:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
+                       var target:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
                        if (target)
                        {
-                               target.down = true;
-                               target.hovered = false;
-
+                if (target is IStrand)
+                {
+                    var selectionBead:ISelectableItemRenderer = (renderer as 
IStrand).getBeadByType(ISelectableItemRenderer) as ISelectableItemRenderer;
+                    if (selectionBead)
+                    {
+                        selectionBead.down = true;
+                        selectionBead.hovered = false;                    
+                    }            
+                }
                                var newEvent:MultiSelectionItemClickedEvent = 
MultiSelectionItemClickedEvent.createMultiSelectionItemClickedEvent("itemMouseDown",
 event);
                                newEvent.data = target.data;
                                newEvent.index = target.index;
@@ -199,7 +212,7 @@ package org.apache.royale.html.beads.controllers
                protected function mouseUpHandler(event:MouseEvent):void
                {
                        event.stopImmediatePropagation();
-                       var target:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
+                       var target:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
                        if (target)
                        {                               
                                var newEvent:MultiSelectionItemClickedEvent = 
new MultiSelectionItemClickedEvent("itemClicked", true, true);
@@ -214,12 +227,12 @@ package org.apache.royale.html.beads.controllers
 
                /**
                 * @private
-                * @royaleemitcoercion 
org.apache.royale.core.ISelectableItemRenderer
+                * @royaleemitcoercion 
org.apache.royale.core.IIndexedItemRenderer
                 */
                COMPILE::JS
                protected function handleMouseClick(event:BrowserEvent):void
                {
-                       var target:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
+                       var target:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
                        if (target)
                        {
                                var newEvent:MultiSelectionItemClickedEvent = 
MultiSelectionItemClickedEvent.createMultiSelectionItemClickedEvent("itemClicked",
 event);
@@ -232,12 +245,12 @@ package org.apache.royale.html.beads.controllers
 
                /**
                 * @private
-                * @royaleemitcoercion 
org.apache.royale.core.ISelectableItemRenderer
+                * @royaleemitcoercion 
org.apache.royale.core.IIndexedItemRenderer
                 */
                COMPILE::JS
                protected function handleMouseUp(event:BrowserEvent):void
                {
-                       var target:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
+                       var target:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
                        if (target)
                        {
                                var newEvent:MultiSelectionItemClickedEvent = 
MultiSelectionItemClickedEvent.createMultiSelectionItemClickedEvent("itemMouseUp",
 event);
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VirtualListVerticalLayout.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VirtualListVerticalLayout.as
index c1c6784..1458040 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VirtualListVerticalLayout.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VirtualListVerticalLayout.as
@@ -30,7 +30,7 @@ package org.apache.royale.html.beads.layouts
        import org.apache.royale.core.IListPresentationModel;
        import org.apache.royale.core.IParentIUIBase;
        import org.apache.royale.core.IScrollingViewport;
-       import org.apache.royale.core.ISelectableItemRenderer;
+       import org.apache.royale.core.IIndexedItemRenderer;
        import org.apache.royale.core.IStrand;
        import org.apache.royale.core.IStrandWithPresentationModel;
        import org.apache.royale.core.IUIBase;
@@ -230,7 +230,7 @@ package org.apache.royale.html.beads.layouts
                 {
                     if (i >= dp.length) continue; // no more renderers needed
                     
-                    var ir:ISelectableItemRenderer;
+                    var ir:IIndexedItemRenderer;
                     if (i < firstIndex)
                     {
                         ir  = factory.getItemRendererForIndex(i, i - 
startIndex);
@@ -363,7 +363,7 @@ package org.apache.royale.html.beads.layouts
                 {
                     if (i >= dp.length) continue; // no more renderers needed
                     
-                    var ir:ISelectableItemRenderer;
+                    var ir:IIndexedItemRenderer;
                     if (i < firstIndex)
                     {
                        //trace("i < firstIndex: creating: i = " + i);
@@ -407,7 +407,7 @@ package org.apache.royale.html.beads.layouts
         }
 
         COMPILE::SWF
-        protected function sizeAndPositionRenderer(ir:ISelectableItemRenderer, 
xpos:Number, ypos:Number, hostWidth:Number, hostHeight:Number):void
+        protected function sizeAndPositionRenderer(ir:IIndexedItemRenderer, 
xpos:Number, ypos:Number, hostWidth:Number, hostHeight:Number):void
         {
             var ilc:ILayoutChild;
             var positions:Object = childPositions(ir);
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 860ce35..b629eea 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
@@ -19,7 +19,7 @@
 package org.apache.royale.html.supportClasses
 {
        import org.apache.royale.core.IChild;
-       import org.apache.royale.core.ISelectableItemRenderer;
+       import org.apache.royale.core.IItemRenderer;
        import org.apache.royale.core.IStrand;
        import org.apache.royale.core.ITitleBarModel;
        import org.apache.royale.events.Event;
@@ -27,12 +27,9 @@ package org.apache.royale.html.supportClasses
        import org.apache.royale.html.TitleBar;
        import org.apache.royale.html.beads.PanelView;
        
-       public class AccordionItemRenderer extends Panel implements 
ISelectableItemRenderer, ICollapsible
+       public class AccordionItemRenderer extends Panel implements 
IItemRenderer, ICollapsible
        {
                private var _index:int;
-               private var _selected:Boolean;
-               private var _hovered:Boolean;
-               private var _down:Boolean;
                private var value:Object;
                
                public function AccordionItemRenderer()
@@ -41,61 +38,6 @@ package org.apache.royale.html.supportClasses
                        percentWidth = 100;
                }
 
-               private var _selectable:Boolean = true;
-               /**
-         *  <code>true</code> if the item renderer is can be selected
-         *  false otherwise. Use to configure a renderer to be non 
-         *  selectable.
-         *  
-         *  Defaults to true
-         * 
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion Royale 0.9.3
-         */
-               public function get selectable():Boolean
-               {
-                       return _selectable;
-               }
-
-               public function set selectable(value:Boolean):void
-               {
-                       _selectable = value;    
-               }
-
-               private var _hoverable:Boolean = true;
-               /**
-         *  <code>true</code> if the item renderer is can be hovered
-         *  false otherwise. Use to configure a renderer to be non 
-         *  hoverable.
-         *  
-         *  Defaults to true
-         * 
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion Royale 0.9.3
-         */
-               public function get hoverable():Boolean
-               {
-                       return _hoverable;
-               }
-
-               public function set hoverable(value:Boolean):void
-               {
-                       _hoverable = value;     
-               }
-               
-               public function get selected():Boolean
-               {
-                       return _selected;
-               }
-
-               public function set selected(value:Boolean):void
-               {
-                       _selected = value;
-               }
 
                public function get index():int
                {
@@ -108,35 +50,6 @@ package org.apache.royale.html.supportClasses
                        id = "item" + index;
                }
 
-               public function get labelField():String
-               {
-                       return null;
-               }
-               
-               public function set labelField(value:String):void
-               {
-               }
-                               
-               public function get hovered():Boolean
-               {
-                       return _hovered;
-               }
-               
-               public function set hovered(value:Boolean):void
-               {
-                       _hovered = value;
-               }
-               
-               public function get down():Boolean
-               {
-                       return _down;
-               }
-               
-               public function set down(value:Boolean):void
-               {
-                       _down = value;
-               }
-               
                public function get data():Object
                {
                        return numElements > 0 ? getElementAt(0) : null;
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/AlternatingBackgroundColorStringItemRenderer.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/AlternatingBackgroundColorStringItemRenderer.as
index 3e07154..725beb3 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/AlternatingBackgroundColorStringItemRenderer.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/AlternatingBackgroundColorStringItemRenderer.as
@@ -18,6 +18,8 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.html.supportClasses
 {
+    import 
org.apache.royale.html.beads.SolidBackgroundSelectableItemRendererBead;
+
        /**
         *  The AlternatingBackgroundColorStringItemRenderer class displays 
data in string form using the data's toString()
         *  function and alternates between two background colors.  This is the 
most simple implementation for immutable lists
@@ -40,7 +42,11 @@ package org.apache.royale.html.supportClasses
                 */
                public function AlternatingBackgroundColorStringItemRenderer()
                {
-               }
+            backgroundBead = new SolidBackgroundSelectableItemRendererBead();
+            addBead(backgroundBead);
+        }
+        
+        private var backgroundBead:SolidBackgroundSelectableItemRendererBead;
 
                private var _color0:String;
                
@@ -72,24 +78,7 @@ package org.apache.royale.html.supportClasses
 
                        var index:int = parent.getElementIndex(this);
                        oddIndex = ((index % 2) == 1)
-                       COMPILE::JS
-                       {
-                               element.style.backgroundColor = oddIndex ? 
_color1 : _color0;
-                       }
-               }
-
-               /**
-                * @private
-                */
-               override public function updateRenderer():void
-               {
-                       super.updateRenderer();
-                       COMPILE::JS
-                       {
-                               if (element.style.backgroundColor == null || 
element.style.backgroundColor == "")
-                                       element.style.backgroundColor = 
oddIndex ? _color1 : _color0;
-                       }
+                       backgroundBead.backgroundColor = oddIndex ? _color1 : 
_color0;
                }
-
        }
 }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/ButtonBarButtonItemRenderer.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/ButtonBarButtonItemRenderer.as
index 487e5f6..e8563fb 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/ButtonBarButtonItemRenderer.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/ButtonBarButtonItemRenderer.as
@@ -157,8 +157,6 @@ package org.apache.royale.html.supportClasses
                {
                        textButton.width = this.width;
                        textButton.height = this.height;
-                       
-                       updateRenderer();
                }
        }
 }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/CascadingMenuItemRenderer.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/CascadingMenuItemRenderer.as
index 501e240..84fb313 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/CascadingMenuItemRenderer.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/CascadingMenuItemRenderer.as
@@ -169,8 +169,6 @@ package org.apache.royale.html.supportClasses
                                separator.height = 1;
                                separator.draw();
                        }
-                       
-                       updateRenderer();
                }
        }
 }
\ No newline at end of file
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/ColorItemRenderer.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/ColorItemRenderer.as
index cb9f9df..547ad8b 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/ColorItemRenderer.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/ColorItemRenderer.as
@@ -18,6 +18,7 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.html.supportClasses
 {
+       import 
org.apache.royale.html.beads.SolidBackgroundSelectableItemRendererBead;
        import org.apache.royale.utils.CSSUtils;
 
        /**
@@ -43,7 +44,12 @@ package org.apache.royale.html.supportClasses
                        super();
 
             typeNames = 'ColorItemRenderer';
+        
+            backgroundBead = new SolidBackgroundSelectableItemRendererBead();
+            addBead(backgroundBead);
                }
+        
+        private var backgroundBead:SolidBackgroundSelectableItemRendererBead;
 
                /**
                 *  Sets the data value and uses the String version of the data 
for display.
@@ -60,38 +66,19 @@ package org.apache.royale.html.supportClasses
                override public function set data(value:Object):void
                {
                        super.data = value;
-                       updateRenderer();
-               }
-
-               /**
-                * @private
-                */
-               override public function updateRenderer():void
-               {
-                       COMPILE::SWF
-                       {
-                               super.updateRenderer();
-
-                               graphics.clear();
-                               graphics.beginFill(useColor, 
(down||selected||hovered)?1:0);
-                               graphics.drawRect(0, 0, width, height);
-                               graphics.endFill();
-                       }
-                       COMPILE::JS
-                       {
-                               var color:uint;
-                               if (!isNaN(data))
-                               {
-                                       color = uint(data);
-                               } else if (dataField)
-                               {
-                                       color = uint(data[dataField]);
-                               } else
-                               {
-                                       color = 0x000000;
-                               }
-                               element.style.backgroundColor = 
CSSUtils.attributeFromColor(color);
-                       }
+            
+            var color:uint;
+            if (!isNaN(uint(data)))
+            {
+                color = uint(data);
+            } else if (dataField)
+            {
+                color = uint(data[dataField]);
+            } else
+            {
+                color = 0x000000;
+            }
+            backgroundBead.backgroundColor = color;
                }
        }
 }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/DataItemRenderer.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/DataItemRenderer.as
index 6cbd183..074512b 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/DataItemRenderer.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/DataItemRenderer.as
@@ -119,31 +119,6 @@ package org.apache.royale.html.supportClasses
         protected var controller:IBeadController;
 
                /**
-                * @private
-                */
-               override public function updateRenderer():void
-               {
-                       COMPILE::SWF
-                       {
-                               super.updateRenderer();
-
-                               graphics.clear();
-                               graphics.beginFill(useColor, 
(down||selected||hovered)?1:0);
-                               graphics.drawRect(0, 0, width, height);
-                               graphics.endFill();
-                       }
-                       COMPILE::JS
-                       {
-                               if (selected)
-                                       element.style.backgroundColor = 
'#9C9C9C';
-                               else if (hovered)
-                                       element.style.backgroundColor = 
'#ECECEC';
-                               else
-                                       element.style.backgroundColor = 
'transparent';
-                       }
-               }
-
-               /**
                 * @royaleignorecoercion 
org.apache.royale.core.WrappedHTMLElement
                 *
                 */
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/GraphicsItemRenderer.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/GraphicsItemRenderer.as
index 7eb3b80..9b2e0e1 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/GraphicsItemRenderer.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/GraphicsItemRenderer.as
@@ -20,9 +20,10 @@ package org.apache.royale.html.supportClasses
 {
        import org.apache.royale.core.ISelectableItemRenderer;
        import org.apache.royale.core.ValuesManager;
-       import org.apache.royale.svg.CompoundGraphic;
        import org.apache.royale.events.Event;
-       import org.apache.royale.utils.MXMLDataInterpreter;
+       import org.apache.royale.svg.CompoundGraphic;
+       import org.apache.royale.utils.loadBeadFromValuesManager;
+    import org.apache.royale.utils.MXMLDataInterpreter;
        
        /**
         *  The GraphicsItemRenderer provides a base class for itemRenderers 
that use graphics rather than
@@ -33,7 +34,7 @@ package org.apache.royale.html.supportClasses
         *  @playerversion AIR 2.6
         *  @productversion Royale 0.0
         */
-       public class GraphicsItemRenderer extends CompoundGraphic implements 
ISelectableItemRenderer
+       public class GraphicsItemRenderer extends CompoundGraphic
        {
                /**
                 *  Constructor.
@@ -61,6 +62,8 @@ package org.apache.royale.html.supportClasses
                        
                        // each MXML file can also have styles in fx:Style block
                        ValuesManager.valuesImpl.init(this);
+            
+            loadBeadFromValuesManager(ISelectableItemRenderer, 
"iSelectableItemRenderer", this);
                        
                        MXMLDataInterpreter.generateMXMLProperties(this, 
mxmlProperties);
                        MXMLDataInterpreter.generateMXMLInstances(this, this, 
MXMLDescriptor);
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/MenuBarItemRenderer.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/MenuBarItemRenderer.as
index fd8ed49..6623b50 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/MenuBarItemRenderer.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/MenuBarItemRenderer.as
@@ -81,8 +81,6 @@ package org.apache.royale.html.supportClasses
                        
                        var h:Number = height;
                        var w:Number = width;
-                       
-                       updateRenderer();
                }
        }
 }
\ No newline at end of file
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/MenuItemRenderer.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/MenuItemRenderer.as
index c57b991..455fbf8 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/MenuItemRenderer.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/MenuItemRenderer.as
@@ -105,8 +105,6 @@ package org.apache.royale.html.supportClasses
                        
                        label.x = 0;
                        label.y = cy - label.height/2;
-
-                       updateRenderer();
                }
        }
 }
\ No newline at end of file
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/StringItemRenderer.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/StringItemRenderer.as
index 4c1a3a0..69f8969 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/StringItemRenderer.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/StringItemRenderer.as
@@ -98,7 +98,6 @@ package org.apache.royale.html.supportClasses
                        textField.y = cy - textField.height/2;
                        textField.width = width;
 
-                       updateRenderer();
                }
 
                /**
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/TreeGridControlItemRenderer.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/TreeGridControlItemRenderer.as
index 8dbcd3e..b88dacc 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/TreeGridControlItemRenderer.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/TreeGridControlItemRenderer.as
@@ -52,7 +52,7 @@ package org.apache.royale.html.supportClasses
                {
                        _originalItemRenderer = value;
                        
-                       child = value.createItemRenderer(this) as UIBase;
+                       child = value.createItemRenderer() as UIBase;
                        (child as IItemRenderer).data = this.data;
                        this.addElement(child);
                }
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/UIItemRendererBase.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/UIItemRendererBase.as
index efba8df..53f20d7 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/UIItemRendererBase.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/UIItemRendererBase.as
@@ -23,7 +23,8 @@ package org.apache.royale.html.supportClasses
        import org.apache.royale.core.ValuesManager;
        import org.apache.royale.events.Event;
        import org.apache.royale.utils.MXMLDataInterpreter;
-       
+    import org.apache.royale.utils.loadBeadFromValuesManager;
+        
     [DefaultProperty("mxmlContent")]
 
     /**
@@ -36,7 +37,7 @@ package org.apache.royale.html.supportClasses
         *  @playerversion AIR 2.6
         *  @productversion Royale 0.0
         */
-       public class UIItemRendererBase extends UIBase implements 
ISelectableItemRenderer
+       public class UIItemRendererBase extends UIBase
        {
                /**
                 *  constructor.
@@ -68,6 +69,8 @@ package org.apache.royale.html.supportClasses
             // each MXML file can also have styles in fx:Style block
             ValuesManager.valuesImpl.init(this);
             
+            loadBeadFromValuesManager(ISelectableItemRenderer, 
"iSelectableItemRenderer", this);
+            
             dispatchEvent(new Event("initBindings"));
             dispatchEvent(new Event("initComplete"));
             
@@ -121,49 +124,7 @@ package org.apache.royale.html.supportClasses
         {
             mxmlProperties = data;
         }
-        
-        private var _backgroundColor:uint = 0xFFFFFF;
-        public function get backgroundColor():uint
-        {
-            return _backgroundColor;
-        }
-        public function set backgroundColor(value:uint):void
-        {
-            _backgroundColor = value;
-        }
-        
-        private var _highlightColor:uint = 0xCEDBEF;
-        public function get highlightColor():uint
-        {
-            return _highlightColor;
-        }
-        public function set highlightColor(value:uint):void
-        {
-            _highlightColor = value;
-        }
-        
-        private var _selectedColor:uint = 0xA8C6EE;
-        public function get selectedColor():uint
-        {
-            return _selectedColor;
-        }
-        public function set selectedColor(value:uint):void
-        {
-            _selectedColor = value;
-        }
-        
-        private var _downColor:uint = 0x808080;
-        public function get downColor():uint
-        {
-            return _downColor;
-        }
-        public function set downColor(value:uint):void
-        {
-            _downColor = value;
-        }
-        
-               protected var useColor:uint = backgroundColor;
-               
+                       
                private var _data:Object;
                
         [Bindable("__NoChangeEvent__")]
@@ -240,82 +201,7 @@ package org.apache.royale.html.supportClasses
                {
                        _index = value;
                }
-               
-               private var _hovered:Boolean;
-               
-               /**
-                *  Whether or not the itemRenderer is in a hovered state.
-                *
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion Royale 0.0
-                */
-               public function get hovered():Boolean
-               {
-                       return _hovered;
-               }
-               public function set hovered(value:Boolean):void
-               {
-                       _hovered = value;
-                       updateRenderer();
-               }
-               
-               private var _selected:Boolean;
-               
-               /**
-                *  Whether or not the itemRenderer is in a selected state.
-                *
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion Royale 0.0
-                */
-               public function get selected():Boolean
-               {
-                       return _selected;
-               }
-               public function set selected(value:Boolean):void
-               {
-                       _selected = value;
-                       updateRenderer();
-               }
-               
-               private var _down:Boolean;
-               
-               /**
-                *  Whether or not the itemRenderer is in a down (or 
pre-selected) state.
-                *
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion Royale 0.0
-                */
-               public function get down():Boolean
-               {
-                       return _down;
-               }
-               public function set down(value:Boolean):void
-               {
-                       _down = value;
-                       updateRenderer();
-               }
-               
-               /**
-                * @private
-                */
-               public function updateRenderer():void
-               {
-                       if (down)
-                               useColor = downColor;
-                       else if (hovered)
-                               useColor = highlightColor;
-                       else if (selected)
-                               useColor = selectedColor;
-                       else
-                               useColor = backgroundColor;
-               }
-               
+                               
                /**
                 * @private
                 */

Reply via email to