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 bdaf4c822c92decb41554cb53e952c17957e3bdb
Author: Alex Harui <[email protected]>
AuthorDate: Thu Feb 6 17:37:01 2020 -0800

    clean compile
---
 .../html/supportClasses/ContainerContentArea.as    |  11 +-
 .../html/supportClasses/UIItemRendererBase.as      |   5 +-
 .../royale/charts/supportClasses/ChartDataGroup.as |   5 -
 .../projects/Core/src/main/royale/CoreClasses.as   |   1 +
 .../html/beads/SelectableItemRendererBeadBase.as   |   0
 ...stHoverableRuntimeSelectableItemRendererBead.as |  67 ++++++++++++
 ...electorListRuntimeSelectableItemRendererBead.as | 121 +++++++++++++++++++++
 .../controllers/ItemRendererMouseController.as     |  68 ++++++------
 .../ListSingleSelectionMouseController.as          |  14 +--
 .../TableCellSelectionMouseController.as           |  14 +--
 .../AddListItemRendererForArrayListData.as         |  16 +--
 .../itemRenderers/AddTableRowForArrayListData.as   |   2 +-
 .../DataItemRendererFactoryForArrayData.as         |  10 +-
 .../DataItemRendererFactoryForCollectionView.as    |  30 ++---
 ...DownListItemRendererFactoryForCollectionView.as |  10 +-
 .../jewel/beads/itemRenderers/ITextItemRenderer.as |   5 +-
 .../RemoveListItemRendererForArrayListData.as      |   8 +-
 .../TableItemRendererFactoryForCollectionView.as   |  22 ++--
 .../UpdateListItemRendererForArrayListData.as      |   6 +-
 .../UpdateTableRowForArrayListData.as              |   8 +-
 .../apache/royale/jewel/beads/views/TabBarView.as  |  10 +-
 .../jewel/itemRenderers/ButtonBarItemRenderer.as   |   9 +-
 .../CollapsibleNavigationSectionRenderer.as        |  15 +--
 .../royale/jewel/itemRenderers/DateItemRenderer.as |   6 +-
 .../itemRenderers/IconButtonBarItemRenderer.as     | 109 +------------------
 .../royale/jewel/itemRenderers/ListItemRenderer.as |  45 +-------
 .../itemRenderers/NavigationLinkItemRenderer.as    |  15 +--
 .../jewel/itemRenderers/StringItemRenderer.as      |   1 -
 .../itemRenderers/TabBarButtonItemRenderer.as      |  41 +------
 .../itemRenderers/ToggleButtonBarItemRenderer.as   |   7 +-
 .../jewel/supportClasses/table/TBodyContentArea.as |   4 +-
 31 files changed, 348 insertions(+), 337 deletions(-)

diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/ContainerContentArea.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/ContainerContentArea.as
index 7dcb4f2..199917c 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/ContainerContentArea.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/ContainerContentArea.as
@@ -20,7 +20,8 @@ package org.apache.royale.html.supportClasses
 {
        import org.apache.royale.core.IBead;
        import org.apache.royale.core.IStrand;
-       import org.apache.royale.core.UIBase;
+       import org.apache.royale.core.IUIBase;
+    import org.apache.royale.core.UIBase;
     import org.apache.royale.events.Event;
        import org.apache.royale.events.IEventDispatcher;
        import org.apache.royale.core.IChild;
@@ -51,11 +52,15 @@ package org.apache.royale.html.supportClasses
             addEventListener("layoutNeeded", forwardEventHandler);
                }
                
-               protected var host:IStrand;
+        private var _host:IUIBase;
+               public function get host():IUIBase
+        {
+            return _host;
+        }
                
                public function set strand(value:IStrand):void
                {
-                       host = value;
+                       _host = value as IUIBase;
                }
 
         private function forwardEventHandler(event:Event):void
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 816ed5a..f01473f 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
@@ -18,8 +18,9 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.html.supportClasses
 {
-       import org.apache.royale.core.ISelectableItemRenderer;
+    import org.apache.royale.core.IIndexedItemRenderer;
     import org.apache.royale.core.IItemRendererOwnerView;
+    import org.apache.royale.core.ISelectableItemRenderer;
     import org.apache.royale.core.IBead;
        import org.apache.royale.core.UIBase;
        import org.apache.royale.core.ValuesManager;
@@ -39,7 +40,7 @@ package org.apache.royale.html.supportClasses
         *  @playerversion AIR 2.6
         *  @productversion Royale 0.0
         */
-       public class UIItemRendererBase extends UIBase
+       public class UIItemRendererBase extends UIBase implements 
IIndexedItemRenderer
        {
                /**
                 *  constructor.
diff --git 
a/frameworks/projects/Charts/src/main/royale/org/apache/royale/charts/supportClasses/ChartDataGroup.as
 
b/frameworks/projects/Charts/src/main/royale/org/apache/royale/charts/supportClasses/ChartDataGroup.as
index 947b404..1d9317f 100644
--- 
a/frameworks/projects/Charts/src/main/royale/org/apache/royale/charts/supportClasses/ChartDataGroup.as
+++ 
b/frameworks/projects/Charts/src/main/royale/org/apache/royale/charts/supportClasses/ChartDataGroup.as
@@ -203,11 +203,6 @@ package org.apache.royale.charts.supportClasses
             }
         }
         
-        public function get host():IUIBase
-        {
-            return this;
-        }
-        
         /*
                 * IChartDataGroup
                 */
diff --git a/frameworks/projects/Core/src/main/royale/CoreClasses.as 
b/frameworks/projects/Core/src/main/royale/CoreClasses.as
index c88d0e9..617b78d 100644
--- a/frameworks/projects/Core/src/main/royale/CoreClasses.as
+++ b/frameworks/projects/Core/src/main/royale/CoreClasses.as
@@ -48,6 +48,7 @@ internal class CoreClasses
 
        import org.apache.royale.html.beads.IBackgroundBead; IBackgroundBead;
        import org.apache.royale.html.beads.IBorderBead; IBorderBead;
+    import org.apache.royale.html.beads.SelectableItemRendererBeadBase; 
SelectableItemRendererBeadBase;
 
     import org.apache.royale.core.BeadViewBase; BeadViewBase;
     import org.apache.royale.core.ImageViewBase; ImageViewBase;
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SelectableItemRendererBeadBase.as
 
b/frameworks/projects/Core/src/main/royale/org/apache/royale/html/beads/SelectableItemRendererBeadBase.as
similarity index 100%
rename from 
frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SelectableItemRendererBeadBase.as
rename to 
frameworks/projects/Core/src/main/royale/org/apache/royale/html/beads/SelectableItemRendererBeadBase.as
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/ClassSelectorListHoverableRuntimeSelectableItemRendererBead.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/ClassSelectorListHoverableRuntimeSelectableItemRendererBead.as
new file mode 100644
index 0000000..b46c871
--- /dev/null
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/ClassSelectorListHoverableRuntimeSelectableItemRendererBead.as
@@ -0,0 +1,67 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.royale.jewel.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;
+    import org.apache.royale.utils.ClassSelectorList;
+
+       /**
+        *  UnselectableElement bead prevents from text selection of html 
element
+        *
+        *  @viewbead
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion Royale 0.8
+        */
+       public class 
ClassSelectorListHoverableRuntimeSelectableItemRendererBead extends 
ClassSelectorListRuntimeSelectableItemRendererBead
+       {
+
+               /**
+                *  constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.8
+                */
+               public function 
ClassSelectorListHoverableRuntimeSelectableItemRendererBead(classSelectorList:ClassSelectorList)
+               {
+            super(classSelectorList);
+               }
+        
+        /**
+         * @private
+         */
+        override public function updateRenderer():void
+        {
+            // there's no selection only hover state
+            if(hoverable)
+                classSelectorList.toggle("hovered", hovered);
+        }
+        
+
+       }
+}
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/ClassSelectorListRuntimeSelectableItemRendererBead.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/ClassSelectorListRuntimeSelectableItemRendererBead.as
new file mode 100644
index 0000000..2248e87
--- /dev/null
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/ClassSelectorListRuntimeSelectableItemRendererBead.as
@@ -0,0 +1,121 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.royale.jewel.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;
+    import org.apache.royale.html.beads.SelectableItemRendererBeadBase;
+    import org.apache.royale.utils.ClassSelectorList;
+
+       /**
+        *  UnselectableElement bead prevents from text selection of html 
element
+        *
+        *  @viewbead
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion Royale 0.8
+        */
+       public class ClassSelectorListRuntimeSelectableItemRendererBead extends 
SelectableItemRendererBeadBase
+       {
+
+               /**
+                *  constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.8
+                */
+               public function 
ClassSelectorListRuntimeSelectableItemRendererBead(classSelectorList:ClassSelectorList)
+               {
+            this.classSelectorList = classSelectorList;
+               }
+
+        protected var classSelectorList:ClassSelectorList;
+        
+        private var _selectable:Boolean;
+        
+        /**
+         *  <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;
+            classSelectorList.toggle("selectable", _selectable);       
+            
+        }
+        
+        private var _hoverable:Boolean;
+        
+        /**
+         *  <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;
+        }
+        
+        /**
+         * @private
+         */
+        override public function updateRenderer():void
+        {
+            // there's no selection only hover state
+            if(hoverable)
+                classSelectorList.toggle("hovered", hovered);
+            if(selectable) {
+                classSelectorList.toggle("selected", selected);
+            }
+        }
+        
+
+       }
+}
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ItemRendererMouseController.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ItemRendererMouseController.as
index 5f1acee..cf58399 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ItemRendererMouseController.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ItemRendererMouseController.as
@@ -27,13 +27,13 @@ package org.apache.royale.jewel.beads.controllers
        import goog.events.Event;
        import goog.events.EventType;
 
-       import org.apache.royale.core.IRuntimeSelectableItemRenderer;
        import org.apache.royale.core.UIBase;
        import org.apache.royale.core.WrappedHTMLElement;
        import org.apache.royale.events.BrowserEvent;
        }
+    import org.apache.royale.core.IRuntimeSelectableItemRenderer;
        import org.apache.royale.core.IBeadController;
-       import org.apache.royale.core.ISelectableItemRenderer;
+       import org.apache.royale.core.IIndexedItemRenderer;
        import org.apache.royale.core.IStrand;
        import org.apache.royale.events.ItemClickedEvent;
 
@@ -62,7 +62,7 @@ package org.apache.royale.jewel.beads.controllers
                {
                }
                
-        private var renderer:ISelectableItemRenderer;
+        private var renderer:IIndexedItemRenderer;
                private var _strand:IStrand;
                
                /**
@@ -72,13 +72,13 @@ package org.apache.royale.jewel.beads.controllers
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.9.4
-                *  @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 +103,7 @@ package org.apache.royale.jewel.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)
                        {
                                target.dispatchEvent(new 
Event("itemRollOver",true));
@@ -111,12 +111,12 @@ package org.apache.royale.jewel.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) {
                                target.dispatchEvent(new 
Event("itemRollOver",true));
                        }
@@ -128,7 +128,7 @@ package org.apache.royale.jewel.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)
                        {
                                target.dispatchEvent(new 
Event("itemRollOut",true));
@@ -136,12 +136,12 @@ package org.apache.royale.jewel.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)
                        {
                                target.dispatchEvent(new 
Event("itemRollOut",true));
@@ -154,27 +154,29 @@ package org.apache.royale.jewel.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;
+                var selectionBead:IRuntimeSelectableItemRenderer = 
target.getBeadByType(IRuntimeSelectableItemRenderer) as 
IRuntimeSelectableItemRenderer;
+                selectionBead.down = true;
                                target.addEventListener(MouseEvent.MOUSE_UP, 
mouseUpHandler);
                        }
                }
                
                /**
                 * @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;
-                       if (target)
-                       {
-                               target.down = true;
-                               target.hovered = false;
-                       }
+                       var target:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
+            if (target)
+            {
+                var selectionBead:IRuntimeSelectableItemRenderer = 
target.getBeadByType(IRuntimeSelectableItemRenderer) as 
IRuntimeSelectableItemRenderer;
+                selectionBead.down = true;
+                selectionBead.hovered = false;
+            }
                }
                
                /**
@@ -184,7 +186,7 @@ package org.apache.royale.jewel.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:ItemClickedEvent = new 
ItemClickedEvent("itemClicked");
@@ -198,21 +200,25 @@ package org.apache.royale.jewel.beads.controllers
                
                /**
                 * @private
-                * @royaleemitcoercion 
org.apache.royale.core.ISelectableItemRenderer
+                * @royaleemitcoercion 
org.apache.royale.core.IIndexedItemRenderer
                 */
                COMPILE::JS
                protected function handleMouseUp(event:BrowserEvent):void
                {
                        event.stopImmediatePropagation();
-                       var target:IRuntimeSelectableItemRenderer = 
event.currentTarget as IRuntimeSelectableItemRenderer;
-                       if (target && target.selectable)
-                       {
-                               var newEvent:ItemClickedEvent = new 
ItemClickedEvent("itemClicked");
-                               newEvent.data = target.data;
-                               newEvent.index = target.index;
-
-                               target.dispatchEvent(newEvent);
-                       }
+            var target:IIndexedItemRenderer = event.currentTarget as 
IIndexedItemRenderer;
+            if (target)
+            {
+                       var selectionBead:IRuntimeSelectableItemRenderer = 
target.getBeadByType(IRuntimeSelectableItemRenderer) as 
IRuntimeSelectableItemRenderer;
+                       if (selectionBead && selectionBead.selectable)
+                       {
+                               var newEvent:ItemClickedEvent = new 
ItemClickedEvent("itemClicked");
+                               newEvent.data = target.data;
+                               newEvent.index = target.index;
+    
+                               target.dispatchEvent(newEvent);
+                       }
+            }
                }
        
        }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ListSingleSelectionMouseController.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ListSingleSelectionMouseController.as
index 9bd932a..1b83770 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ListSingleSelectionMouseController.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/ListSingleSelectionMouseController.as
@@ -21,7 +21,7 @@ package org.apache.royale.jewel.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.ISelectionModel;
        import org.apache.royale.core.IStrand;
        import org.apache.royale.events.Event;
@@ -156,27 +156,27 @@ package org.apache.royale.jewel.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;
+                               // renderer.hovered = false; who sets this?
+                               // renderer.down = false; who sets this?
                                IRollOverModel(listModel).rollOverIndex = -1;
                        }
                }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/TableCellSelectionMouseController.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/TableCellSelectionMouseController.as
index e509de7..9f488b2 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/TableCellSelectionMouseController.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/TableCellSelectionMouseController.as
@@ -21,7 +21,7 @@ package org.apache.royale.jewel.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.ISelectionModel;
        import org.apache.royale.core.IStrand;
        import org.apache.royale.core.IBeadView;
@@ -148,27 +148,27 @@ package org.apache.royale.jewel.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(model).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;
+                               //renderer.hovered = false; who sets this to 
true?
+                               //renderer.down = false; who sets this to true?
                                IRollOverModel(model).rollOverIndex = -1;
                        }
                }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddListItemRendererForArrayListData.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddListItemRendererForArrayListData.as
index 780226f..d345458 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddListItemRendererForArrayListData.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddListItemRendererForArrayListData.as
@@ -22,7 +22,8 @@ package org.apache.royale.jewel.beads.itemRenderers
        import org.apache.royale.core.IDataProviderModel;
        import org.apache.royale.core.IItemRendererClassFactory;
        import org.apache.royale.core.IItemRendererOwnerView;
-       import org.apache.royale.core.ISelectableItemRenderer;
+       import org.apache.royale.core.IIndexedItemRenderer;
+    import org.apache.royale.core.ILabelFieldItemRenderer;
        import org.apache.royale.core.ISelectionModel;
        import org.apache.royale.core.IStrand;
        import org.apache.royale.core.IStrandWithModelView;
@@ -132,14 +133,14 @@ package org.apache.royale.jewel.beads.itemRenderers
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.9.4
-                *  @royaleignorecoercion 
org.apache.royale.core.ISelectableItemRenderer
+                *  @royaleignorecoercion 
org.apache.royale.core.IIndexedItemRenderer
                 *  @royaleignorecoercion 
org.apache.royale.events.IEventDispatcher
          *  @royaleignorecoercion org.apache.royale.core.ISelectionModel
                 */
                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() as IIndexedItemRenderer;
 
             fillRenderer(event.index, event.item, ir, presentationModel);
 
@@ -147,7 +148,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                        var n:int = itemRendererOwnerView.numItemRenderers;
                        for (var i:int = event.index; i < n; i++)
                        {
-                               ir = itemRendererOwnerView.getItemRendererAt(i) 
as ISelectableItemRenderer;
+                               ir = itemRendererOwnerView.getItemRendererAt(i) 
as IIndexedItemRenderer;
                                ir.index = i;
                        }
 
@@ -222,15 +223,16 @@ package org.apache.royale.jewel.beads.itemRenderers
 
         /**
          * @private
+                *  @royaleignorecoercion 
org.apache.royale.core.ILabelFieldItemRenderer
          */
         protected function fillRenderer(index:int,
                                         item:Object,
-                                        itemRenderer:ISelectableItemRenderer,
+                                        itemRenderer:IIndexedItemRenderer,
                                         
presentationModel:IListPresentationModel):void
         {
             itemRendererOwnerView.addItemRendererAt(itemRenderer, index);
 
-            itemRenderer.labelField = labelField;
+            (itemRenderer as ILabelFieldItemRenderer).labelField = labelField;
 
             if (presentationModel) {
                 // var style:SimpleCSSStyles = new SimpleCSSStyles();
@@ -250,7 +252,7 @@ package org.apache.royale.jewel.beads.itemRenderers
         /**
          * @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/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddTableRowForArrayListData.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddTableRowForArrayListData.as
index a6f53d0..ee341e5 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddTableRowForArrayListData.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/AddTableRowForArrayListData.as
@@ -140,7 +140,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                                        ir = column.itemRenderer.newInstance() 
as TableItemRenderer;
                                } else
                                {
-                                       ir = 
itemRendererFactory.createItemRenderer(itemRendererOwnerView) as 
TableItemRenderer;
+                                       ir = 
itemRendererFactory.createItemRenderer() as TableItemRenderer;
                                }
 
                                labelField =  column.dataField;
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DataItemRendererFactoryForArrayData.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DataItemRendererFactoryForArrayData.as
index 4cd0791..ed1015e 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DataItemRendererFactoryForArrayData.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DataItemRendererFactoryForArrayData.as
@@ -23,7 +23,8 @@ package org.apache.royale.jewel.beads.itemRenderers
        import org.apache.royale.core.IDataProviderModel;
        import org.apache.royale.core.IItemRendererClassFactory;
        import org.apache.royale.core.IItemRendererOwnerView;
-       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.UIBase;
        import org.apache.royale.events.Event;
@@ -153,10 +154,11 @@ package org.apache.royale.jewel.beads.itemRenderers
                 *  @royaleignorecoercion Array
                 *  @royaleignorecoercion org.apache.royale.core.IListView
                 *  @royaleignorecoercion org.apache.royale.core.UIBase
-                *  @royaleignorecoercion 
org.apache.royale.core.ISelectableItemRenderer
+                *  @royaleignorecoercion 
org.apache.royale.core.IIndexedItemRenderer
                 *  @royaleignorecoercion 
org.apache.royale.html.supportClasses.DataItemRenderer
                 *  @royaleignorecoercion 
org.apache.royale.jewel.supportClasses.list.IListPresentationModel
                 *  @royaleignorecoercion 
org.apache.royale.events.IEventDispatcher
+                *  @royaleignorecoercion 
org.apache.royale.core.ILabelFieldItemRenderer
          */
                protected function dataProviderChangeHandler(event:Event):void
                {
@@ -174,12 +176,12 @@ package org.apache.royale.jewel.beads.itemRenderers
                        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() as IIndexedItemRenderer;
                 var dataItemRenderer:DataItemRenderer = ir as DataItemRenderer;
 
                                
                                ir.index = i;
-                               ir.labelField = labelField;
+                (ir as ILabelFieldItemRenderer).labelField = labelField;
                 if (dataItemRenderer)
                 {
                     dataItemRenderer.dataField = dataField;
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DataItemRendererFactoryForCollectionView.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DataItemRendererFactoryForCollectionView.as
index 8adfc85..7a5a525 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DataItemRendererFactoryForCollectionView.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DataItemRendererFactoryForCollectionView.as
@@ -25,7 +25,8 @@ package org.apache.royale.jewel.beads.itemRenderers
        import org.apache.royale.core.IDataProviderModel;
        import org.apache.royale.core.IItemRendererClassFactory;
        import org.apache.royale.core.IItemRendererOwnerView;
-       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.UIBase;
        import org.apache.royale.events.Event;
@@ -149,7 +150,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                 * @private
                 * @royaleignorecoercion 
org.apache.royale.collections.ICollectionView
                 * @royaleignorecoercion 
org.apache.royale.jewel.supportClasses.list.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
@@ -175,7 +176,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                        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() as IIndexedItemRenderer;
                                var item:Object = dp.getItemAt(i);
                                fillRenderer(i, item, ir, presentationModel);
                        }
@@ -187,7 +188,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                 * @private
                 * @royaleignorecoercion 
org.apache.royale.collections.ICollectionView
                 * @royaleignorecoercion 
org.apache.royale.jewel.supportClasses.list.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
@@ -199,7 +200,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                //              return;
                
                //      var presentationModel:IListPresentationModel = 
_strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
-               //      var ir:ISelectableItemRenderer = 
itemRendererFactory.createItemRenderer(dataGroup) as ISelectableItemRenderer;
+               //      var ir:IIndexedItemRenderer = 
itemRendererFactory.createItemRenderer() as IIndexedItemRenderer;
                //      labelField = dataProviderModel.labelField;
                
                //      fillRenderer(event.index, event.item, ir, 
presentationModel);
@@ -208,7 +209,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                //      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;
                
                //              // could let the IR know its index has been 
changed (eg, it might change its
@@ -226,7 +227,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                 * @private
                 * @royaleignorecoercion 
org.apache.royale.collections.ICollectionView
                 * @royaleignorecoercion 
org.apache.royale.jewel.supportClasses.list.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
@@ -237,14 +238,14 @@ package org.apache.royale.jewel.beads.itemRenderers
                //      if (!dp)
                //              return;
                
-               //      var ir:ISelectableItemRenderer = 
dataGroup.getElementAt(event.index) as ISelectableItemRenderer;
+               //      var ir:IIndexedItemRenderer = 
dataGroup.getElementAt(event.index) as IIndexedItemRenderer;
                //      dataGroup.removeItemRenderer(ir);
                
                //      // adjust the itemRenderers' index to adjust for the 
shift
                //      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;
                
                //              // could let the IR know its index has been 
changed (eg, it might change its
@@ -260,7 +261,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                /**
                 * @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
                // {
@@ -272,20 +273,21 @@ package org.apache.royale.jewel.beads.itemRenderers
 
                //      // update the given renderer with (possibly) new 
information so it can change its
                //      // appearence or whatever.
-               //      var ir:ISelectableItemRenderer = 
dataGroup.getElementAt(event.index) as ISelectableItemRenderer;
+               //      var ir:IIndexedItemRenderer = 
dataGroup.getElementAt(event.index) as IIndexedItemRenderer;
                //      setData(ir, event.item, event.index);
                // }
                
                /**
                 * @private
                 * @royaleignorecoercion org.apache.royale.core.UIBase
+                * @royaleignorecoercion 
org.apache.royale.core.ILabelFieldItemRenderer
                 */
                protected function fillRenderer(index:int,
                                                                                
item:Object,
-                                                                               
itemRenderer:ISelectableItemRenderer,
+                                                                               
itemRenderer:IIndexedItemRenderer,
                                                                                
presentationModel:IListPresentationModel):void
                {
-                       itemRenderer.labelField = labelField;
+            (itemRenderer as ILabelFieldItemRenderer).labelField = labelField;
                        
                        if (presentationModel) {
                                UIBase(itemRenderer).height = 
presentationModel.rowHeight;
@@ -303,7 +305,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                /**
                 * @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/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DropDownListItemRendererFactoryForCollectionView.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DropDownListItemRendererFactoryForCollectionView.as
index d2b9b77..8854cf3 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DropDownListItemRendererFactoryForCollectionView.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DropDownListItemRendererFactoryForCollectionView.as
@@ -19,7 +19,7 @@
 package org.apache.royale.jewel.beads.itemRenderers
 {
        import org.apache.royale.collections.ICollectionView;
-       import org.apache.royale.core.ISelectableItemRenderer;
+       import org.apache.royale.core.IIndexedItemRenderer;
        import org.apache.royale.events.Event;
        import org.apache.royale.events.IEventDispatcher;
        import org.apache.royale.jewel.beads.models.IDropDownListModel;
@@ -40,7 +40,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                 * @private
                 * @royaleignorecoercion 
org.apache.royale.collections.ICollectionView
                 * @royaleignorecoercion 
org.apache.royale.jewel.supportClasses.list.IListPresentationModel
-                * @royaleignorecoercion 
org.apache.royale.core.ISelectableItemRenderer
+                * @royaleignorecoercion 
org.apache.royale.core.IIndexedItemRenderer
                 * @royaleignorecoercion 
org.apache.royale.events.IEventDispatcher
                 */
                override protected function 
dataProviderChangeHandler(event:Event):void
@@ -56,7 +56,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                        var presentationModel:IListPresentationModel = 
_strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
                        labelField = dataProviderModel.labelField;
                        
-                       var ir:ISelectableItemRenderer;
+                       var ir:IIndexedItemRenderer;
                        var item:Object;
                        
                        var model:IDropDownListModel = 
_strand.getBeadByType(IDropDownListModel) as IDropDownListModel;
@@ -64,7 +64,7 @@ package org.apache.royale.jewel.beads.itemRenderers
 
                        if(offset == 1)
                        {
-                               ir = 
itemRendererFactory.createItemRenderer(dataGroup) as ISelectableItemRenderer;
+                               ir = itemRendererFactory.createItemRenderer() 
as IIndexedItemRenderer;
                                item = DropDownListItemRenderer.OPTION_DISABLED;
                                fillRenderer(0, item, ir, presentationModel);
                        }
@@ -72,7 +72,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                        var n:int = dp.length;
                        for (var i:int = 0; i < n; i++)
                        {
-                               ir = 
itemRendererFactory.createItemRenderer(dataGroup) as ISelectableItemRenderer;
+                               ir = itemRendererFactory.createItemRenderer() 
as IIndexedItemRenderer;
                                item = dp.getItemAt(i);
                                fillRenderer(i + offset, item, ir, 
presentationModel);
                        }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ITextItemRenderer.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ITextItemRenderer.as
index d54db68..1278d50 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ITextItemRenderer.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ITextItemRenderer.as
@@ -18,7 +18,8 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.jewel.beads.itemRenderers
 {
-       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
@@ -29,7 +30,7 @@ package org.apache.royale.jewel.beads.itemRenderers
      *  @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/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveListItemRendererForArrayListData.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveListItemRendererForArrayListData.as
index 9002090..c13b141 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveListItemRendererForArrayListData.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/RemoveListItemRendererForArrayListData.as
@@ -21,7 +21,7 @@ package org.apache.royale.jewel.beads.itemRenderers
        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;
@@ -124,20 +124,20 @@ package org.apache.royale.jewel.beads.itemRenderers
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.9.4
-                *  @royaleignorecoercion 
org.apache.royale.core.ISelectableItemRenderer
+                *  @royaleignorecoercion 
org.apache.royale.core.IIndexedItemRenderer
                 *  @royaleignorecoercion 
org.apache.royale.events.IEventDispatcher
                 *  @royaleignorecoercion org.apache.royale.core.ISelectionModel
                 */
                protected function handleItemRemoved(event:CollectionEvent):void
                {
-                       var ir:ISelectableItemRenderer = 
itemRendererOwnerView.getItemRendererAt(event.index) as ISelectableItemRenderer;
+                       var ir:IIndexedItemRenderer = 
itemRendererOwnerView.getItemRendererAt(event.index) as IIndexedItemRenderer;
                        itemRendererOwnerView.removeItemRenderer(ir);
 
                        // adjust the itemRenderers' index to adjust for the 
shift
                        var n:int = itemRendererOwnerView.numItemRenderers;
                        for (var i:int = event.index; i < n; i++)
                        {
-                               ir = itemRendererOwnerView.getItemRendererAt(i) 
as ISelectableItemRenderer;
+                               ir = itemRendererOwnerView.getItemRendererAt(i) 
as IIndexedItemRenderer;
                                ir.index = i;
                        }
 
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/TableItemRendererFactoryForCollectionView.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/TableItemRendererFactoryForCollectionView.as
index d3b2c35..0415639 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/TableItemRendererFactoryForCollectionView.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/TableItemRendererFactoryForCollectionView.as
@@ -25,7 +25,8 @@ package org.apache.royale.jewel.beads.itemRenderers
     import org.apache.royale.core.IDataProviderItemRendererMapper;
     import org.apache.royale.core.IItemRendererClassFactory;
     import org.apache.royale.core.IParent;
-    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.UIBase;
     import org.apache.royale.events.Event;
@@ -141,7 +142,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                 * @private
                 * @royaleignorecoercion 
org.apache.royale.collections.ICollectionView
                 * @royaleignorecoercion 
org.apache.royale.jewel.supportClasses.list.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
@@ -196,7 +197,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                                                ir = 
column.itemRenderer.newInstance() as TableItemRenderer;
                     } else
                     {
-                        ir = itemRendererFactory.createItemRenderer(tbody) as 
TableItemRenderer;
+                        ir = itemRendererFactory.createItemRenderer() as 
TableItemRenderer;
                     }
 
                                        labelField =  column.dataField;
@@ -205,7 +206,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                     (ir as DataItemRenderer).dataField = labelField;
                                        (ir as DataItemRenderer).rowIndex = i;
                                        (ir as DataItemRenderer).columnIndex = 
j;
-                    fillRenderer(index++, item, (ir as 
ISelectableItemRenderer), presentationModel);
+                    fillRenderer(index++, item, (ir as IIndexedItemRenderer), 
presentationModel);
                                
                     if(column.align != "")
                     {
@@ -232,14 +233,15 @@ package org.apache.royale.jewel.beads.itemRenderers
         /**
                 * @private
                 * @royaleignorecoercion org.apache.royale.core.UIBase
+                * @royaleignorecoercion 
org.apache.royale.core.ILabelFieldItemRenderer
                 */
                protected function fillRenderer(index:int,
                                                                                
item:Object,
-                                                                               
itemRenderer:ISelectableItemRenderer,
+                                                                               
itemRenderer:IIndexedItemRenderer,
                                                                                
presentationModel:IListPresentationModel):void
                {
                        tbody.addItemRendererAt(itemRenderer, index);
-                       itemRenderer.labelField = labelField;
+                       (itemRenderer as ILabelFieldItemRenderer).labelField = 
labelField;
                        
                        if (presentationModel) {
                                UIBase(itemRenderer).height = 
presentationModel.rowHeight;
@@ -251,7 +253,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                /**
                 * @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;
@@ -303,7 +305,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                 * @private
                 * @royaleignorecoercion 
org.apache.royale.collections.ICollectionView
                 * @royaleignorecoercion 
org.apache.royale.jewel.supportClasses.list.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
@@ -314,7 +316,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                 * @private
                 * @royaleignorecoercion 
org.apache.royale.collections.ICollectionView
                 * @royaleignorecoercion 
org.apache.royale.jewel.supportClasses.list.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
@@ -324,7 +326,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                /**
                 * @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
                // {
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/UpdateListItemRendererForArrayListData.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/UpdateListItemRendererForArrayListData.as
index 0ec5157..20864b4 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/UpdateListItemRendererForArrayListData.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/UpdateListItemRendererForArrayListData.as
@@ -21,7 +21,7 @@ package org.apache.royale.jewel.beads.itemRenderers
        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;
@@ -134,7 +134,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                 */
                protected function handleItemUpdated(event:CollectionEvent):void
                {
-            var ir:ISelectableItemRenderer = 
itemRendererOwnerView.getItemRendererAt(event.index) as ISelectableItemRenderer;
+            var ir:IIndexedItemRenderer = 
itemRendererOwnerView.getItemRendererAt(event.index) as IIndexedItemRenderer;
 
             setData(ir, event.item, event.index);
 
@@ -190,7 +190,7 @@ package org.apache.royale.jewel.beads.itemRenderers
         /**
          * @private
          */
-        protected function setData(itemRenderer:ISelectableItemRenderer, 
data:Object, index:int):void
+        protected function setData(itemRenderer:IIndexedItemRenderer, 
data:Object, index:int):void
         {
             itemRenderer.index = index;
                        var forceDataChangeEvent:Boolean = (itemRenderer.data 
== data);
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/UpdateTableRowForArrayListData.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/UpdateTableRowForArrayListData.as
index 9235a6a..8c7537c 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/UpdateTableRowForArrayListData.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/UpdateTableRowForArrayListData.as
@@ -20,7 +20,7 @@ package org.apache.royale.jewel.beads.itemRenderers
 {
        import org.apache.royale.core.IBead;
        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.UIBase;
@@ -130,7 +130,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                 */
                protected function handleItemUpdated(event:CollectionEvent):void
                {
-                       var ir:ISelectableItemRenderer;
+                       var ir:IIndexedItemRenderer;
                        var processedRow:TableRow = (itemRendererOwnerView as 
UIBase).getElementAt(event.index) as TableRow;
                        var cell:TableCell;
                        var n:int = processedRow.numElements;
@@ -138,7 +138,7 @@ package org.apache.royale.jewel.beads.itemRenderers
                        for (var i:int = 0; i < n; i++)
                        {
                                cell = processedRow.getElementAt(i) as 
TableCell;
-                               ir = cell.getElementAt(0) as 
ISelectableItemRenderer;
+                               ir = cell.getElementAt(0) as 
IIndexedItemRenderer;
                                setData(ir, event.item, event.index);
                        }
                        
@@ -169,7 +169,7 @@ package org.apache.royale.jewel.beads.itemRenderers
         /**
          * @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/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/TabBarView.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/TabBarView.as
index 1d9f1ba..702e343 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/TabBarView.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/TabBarView.as
@@ -18,6 +18,8 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.jewel.beads.views
 {
+    import org.apache.royale.core.ISelectableItemRenderer;
+
        COMPILE::JS
        {
        import org.apache.royale.events.Event;
@@ -62,9 +64,10 @@ package org.apache.royale.jewel.beads.views
                {
                        var prev_ir:TabBarButtonItemRenderer = 
dataGroup.getItemRendererAt(lastSelectedIndex) as TabBarButtonItemRenderer;
                        var ir:TabBarButtonItemRenderer = 
dataGroup.getItemRendererAt(listModel.selectedIndex) as 
TabBarButtonItemRenderer;
+            var selectionBead:ISelectableItemRenderer;
 
                        if(prev_ir) {
-                               prev_ir.selected = false;
+                selectionBead = prev_ir.getBeadByType(ISelectableItemRenderer) 
as ISelectableItemRenderer;
                                var lastRect:ClientRect = 
prev_ir.getBoundingBox;
                                var currentRect:ClientRect = ir.getBoundingBox;
                                var widthDiff:Number = lastRect.width / 
currentRect.width;
@@ -72,11 +75,12 @@ package org.apache.royale.jewel.beads.views
                                        widthDiff = 1;
                                var positionDiff:Number = lastRect.left - 
currentRect.left;
                                
-                               ir.selected = true;
+                selectionBead.selected = false;
                                ir.animateIndicator(positionDiff, widthDiff, 
300, 'ease-in-out');                               
                        } else
                        {
-                               ir.selected = true;
+                selectionBead = ir.getBeadByType(ISelectableItemRenderer) as 
ISelectableItemRenderer;
+                selectionBead.selected = true;
                        }
                        
                        lastSelectedIndex = listModel.selectedIndex;
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ButtonBarItemRenderer.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ButtonBarItemRenderer.as
index e6d2717..73b0f19 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ButtonBarItemRenderer.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ButtonBarItemRenderer.as
@@ -22,7 +22,8 @@ package org.apache.royale.jewel.itemRenderers
        {
        import org.apache.royale.core.WrappedHTMLElement;
        }
-       import org.apache.royale.core.SimpleCSSStylesWithFlex;
+       import org.apache.royale.core.IItemRendererOwnerView;
+    import org.apache.royale.core.SimpleCSSStylesWithFlex;
        import org.apache.royale.events.ItemClickedEvent;
        import org.apache.royale.events.MouseEvent;
        import org.apache.royale.html.beads.ITextItemRenderer;
@@ -87,7 +88,7 @@ package org.apache.royale.jewel.itemRenderers
                /*
                 * IItemRenderer, ISelectableItemRenderer
                 */
-               private var _itemRendererOwnerView:Object;
+               private var _itemRendererOwnerView:IItemRendererOwnerView;
                /**
                 * The parent container for the itemRenderer instance.
                 *
@@ -96,11 +97,11 @@ package org.apache.royale.jewel.itemRenderers
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.9.7
                 */
-               public function get itemRendererOwnerView():Object
+               public function get 
itemRendererOwnerView():IItemRendererOwnerView
                {
                        return _itemRendererOwnerView;
                }
-               public function set itemRendererOwnerView(value:Object):void
+               public function set 
itemRendererOwnerView(value:IItemRendererOwnerView):void
                {
                        _itemRendererOwnerView = value;
 
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/CollapsibleNavigationSectionRenderer.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/CollapsibleNavigationSectionRenderer.as
index eae54f0..072a24f 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/CollapsibleNavigationSectionRenderer.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/CollapsibleNavigationSectionRenderer.as
@@ -28,6 +28,7 @@ package org.apache.royale.jewel.itemRenderers
        import org.apache.royale.events.Event;
        import org.apache.royale.html.elements.A;
        import org.apache.royale.jewel.Navigation;
+    import 
org.apache.royale.jewel.beads.ClassSelectorListHoverableRuntimeSelectableItemRendererBead;
        import org.apache.royale.jewel.supportClasses.INavigationRenderer;
        import org.apache.royale.utils.ClassSelectorList;
        import org.apache.royale.utils.MXMLDataInterpreter;
@@ -67,6 +68,7 @@ package org.apache.royale.jewel.itemRenderers
                        }
                        open = false;
                        addEventListener('click', onSectionNav);
+            
addBead(ClassSelectorListHoverableRuntimeSelectableItemRendererBead(navLinkClassSelector));
                }
                
                private function onSectionNav(event:Event):void{
@@ -326,19 +328,6 @@ package org.apache.royale.jewel.itemRenderers
                        
             return nav;
         }
-
-               /**
-                * @private
-                * 
-                * Styles are handled in CSS and usually This renderer does not 
use "selected" state
-                * at least if the drawer is closed after selection.
-                */
-               override public function updateRenderer():void
-               {
-                       // there's no selection only hover state
-                       if(hoverable)
-                               navLinkClassSelector.toggle("hovered", hovered);
-               }
                
                private var _childNavClassName:String =  
"navigation-section-group";
                //can override in subclass if needed - used to target the lower 
level items via css
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/DateItemRenderer.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/DateItemRenderer.as
index d6e32ec..c486b2f 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/DateItemRenderer.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/DateItemRenderer.as
@@ -18,6 +18,7 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.jewel.itemRenderers
 {
+    import org.apache.royale.core.IStrandWithModel;
        import org.apache.royale.jewel.beads.models.DateChooserModel;
 
        /**
@@ -59,8 +60,9 @@ package org.apache.royale.jewel.itemRenderers
                {
                        super.data = value;
 
+            var model:DateChooserModel = (itemRendererOwnerView.host as 
IStrandWithModel).model as DateChooserModel;
                        //itemRendererOwnerView.parent is DateChooser
-                       var viewState:int = (itemRendererOwnerView.parent.model 
as DateChooserModel).viewState;
+                       var viewState:int = model.viewState;
 
                        if (value[labelField] is Date) {
                                if(viewState == 0)
@@ -70,7 +72,7 @@ package org.apache.royale.jewel.itemRenderers
                                {
                                        text = String( (value[labelField] as 
Date).getFullYear());
                                } else {
-                                       var monthNames:Array = 
(itemRendererOwnerView.parent.model as DateChooserModel).monthNames;
+                                       var monthNames:Array = model.monthNames;
                                        text = 
String(monthNames[(value[labelField] as Date).getMonth()]);
                                }
 
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/IconButtonBarItemRenderer.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/IconButtonBarItemRenderer.as
index f4ca0d7..847d172 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/IconButtonBarItemRenderer.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/IconButtonBarItemRenderer.as
@@ -19,6 +19,7 @@
 package org.apache.royale.jewel.itemRenderers
 {
        import org.apache.royale.core.IIcon;
+    import org.apache.royale.core.IItemRendererOwnerView;
        import org.apache.royale.core.SimpleCSSStylesWithFlex;
        import org.apache.royale.core.ValuesManager;
        import org.apache.royale.events.ItemClickedEvent;
@@ -95,7 +96,7 @@ package org.apache.royale.jewel.itemRenderers
                /*
                 * IItemRenderer, ISelectableItemRenderer
                 */
-               private var _itemRendererOwnerView:Object;
+               private var _itemRendererOwnerView:IItemRendererOwnerView;
                /**
                 * The parent container for the itemRenderer instance.
                 *
@@ -104,11 +105,11 @@ package org.apache.royale.jewel.itemRenderers
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.9.7
                 */
-               public function get itemRendererOwnerView():Object
+               public function get 
itemRendererOwnerView():IItemRendererOwnerView
                {
                        return _itemRendererOwnerView;
                }
-               public function set itemRendererOwnerView(value:Object):void
+               public function set 
itemRendererOwnerView(value:IItemRendererOwnerView):void
                {
                        _itemRendererOwnerView = value;
 
@@ -193,107 +194,5 @@ package org.apache.royale.jewel.itemRenderers
                        }
                }
 
-               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;     
-               }
-               
-               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.9.7
-                */
-               public function get hovered():Boolean
-               {
-                       return _hovered;
-               }
-               public function set hovered(value:Boolean):void
-               {
-                       _hovered = value;
-               }
-
-               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.9.7
-                */
-               public function get selected():Boolean
-               {
-                       return _selected;
-               }
-               public function set selected(value:Boolean):void
-               {
-                       _selected = value;
-               }
-
-               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.9.7
-                */
-               public function get down():Boolean
-               {
-                       return _down;
-               }
-               public function set down(value:Boolean):void
-               {
-                       _down = value;
-               }
        }
 }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ListItemRenderer.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ListItemRenderer.as
index 3ec4eac..74a6c9c 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ListItemRenderer.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ListItemRenderer.as
@@ -29,6 +29,7 @@ package org.apache.royale.jewel.itemRenderers
        import org.apache.royale.jewel.beads.controls.TextAlign;
        import org.apache.royale.jewel.beads.itemRenderers.IAlignItemRenderer;
        import org.apache.royale.jewel.beads.itemRenderers.ITextItemRenderer;
+    import 
org.apache.royale.jewel.beads.ClassSelectorListRuntimeSelectableItemRendererBead;
        
        /**
         *  The ListItemRenderer defines the basic Item Renderer for a Jewel 
List Component.
@@ -59,6 +60,7 @@ package org.apache.royale.jewel.itemRenderers
                        {
                                addClass("mxmlContent");
                        }
+            
addBead(ClassSelectorListRuntimeSelectableItemRendererBead(classSelectorList));
                }
 
                private var _text:String = "";
@@ -144,48 +146,5 @@ package org.apache.royale.jewel.itemRenderers
             return element;
         }
 
-               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.4
-         */
-               override public function get selectable():Boolean
-               {
-                       return _selectable;
-               }
-               override public function set selectable(value:Boolean):void
-               {
-                       _selectable = value;
-                       toggleClass("selectable", _selectable); 
-               }
-
-        /**
-                * @private
-                */
-               override public function updateRenderer():void
-               {
-                       // if (down)
-                       //      useColor = downColor;
-                       // else if (hovered)
-                       //      useColor = highlightColor;
-                       // else 
-            //if (selected)
-            //         useColor = selectedColor;
-                       //else
-                       //      useColor = backgroundColor;
-
-                       if(hoverable)
-               toggleClass("hovered", hovered);
-                       if(selectable)
-               toggleClass("selected", selected);
-               }
        }
 }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/NavigationLinkItemRenderer.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/NavigationLinkItemRenderer.as
index cdf5574..8e369fb 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/NavigationLinkItemRenderer.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/NavigationLinkItemRenderer.as
@@ -25,6 +25,7 @@ package org.apache.royale.jewel.itemRenderers
     }
        import org.apache.royale.core.StyledMXMLItemRenderer;
        import org.apache.royale.jewel.supportClasses.INavigationRenderer;
+    import 
org.apache.royale.jewel.beads.ClassSelectorListHoverableRuntimeSelectableItemRendererBead;
 
        /**
         *  The NavigationLinkItemRenderer defines the basic Item Renderer for 
a Jewel 
@@ -57,6 +58,7 @@ package org.apache.royale.jewel.itemRenderers
                        {
                                addClass("mxmlContent");
                        }
+            
addBead(ClassSelectorListHoverableRuntimeSelectableItemRendererBead(classSelectorList));
                }
 
                // private var _href:String = "#";
@@ -173,18 +175,5 @@ package org.apache.royale.jewel.itemRenderers
 
             return element;
         }
-
-               /**
-                * @private
-                * 
-                * Styles are handled in CSS and usualy This renderer does not 
uses "selected" state
-                * at least if the drawer is closed after selection.
-                */
-               override public function updateRenderer():void
-               {
-                       // there's no selection only hover state
-                       if(hoverable)
-               toggleClass("hovered", hovered);
-               }
        }
 }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/StringItemRenderer.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/StringItemRenderer.as
index 553317b..f6a0d3d 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/StringItemRenderer.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/StringItemRenderer.as
@@ -104,7 +104,6 @@ package org.apache.royale.jewel.itemRenderers
                        textField.y = cy - textField.height/2;
                        textField.width = width;
 
-                       updateRenderer();
                }
 
                /**
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/TabBarButtonItemRenderer.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/TabBarButtonItemRenderer.as
index 7b4a8e9..4bce633 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/TabBarButtonItemRenderer.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/TabBarButtonItemRenderer.as
@@ -27,6 +27,7 @@ package org.apache.royale.jewel.itemRenderers
        import org.apache.royale.events.Event;
        import org.apache.royale.html.util.getLabelFromData;
        import org.apache.royale.jewel.supportClasses.INavigationRenderer;
+    import 
org.apache.royale.jewel.beads.ClassSelectorListRuntimeSelectableItemRendererBead;
     
        /**
         *  The TabBarButtonItemRenderer defines the basic Item Renderer for a 
Jewel 
@@ -54,6 +55,7 @@ package org.apache.royale.jewel.itemRenderers
 
                        typeNames = "jewel tabbarbutton";
                        addClass("selectable");
+            
addBead(ClassSelectorListRuntimeSelectableItemRendererBead(classSelectorList));
                }
 
                // private var _href:String = "#";
@@ -228,44 +230,5 @@ package org.apache.royale.jewel.itemRenderers
             _positioner.royale_wrapper = this;
                        _positioner.appendChild(element);
                }
-
-               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.4
-         */
-               override public function get selectable():Boolean
-               {
-                       return _selectable;
-               }
-               override public function set selectable(value:Boolean):void
-               {
-                       _selectable = value;
-                       toggleClass("selectable", _selectable); 
-               }
-
-               /**
-                * @private
-                * 
-                * Styles are handled in CSS and usualy This renderer does not 
uses "selected" state
-                * at least if the drawer is closed after selection.
-                */
-               override public function updateRenderer():void
-               {
-                       // there's no selection only hover state
-                       if(hoverable)
-               toggleClass("hovered", hovered);
-                       if(selectable) {
-               toggleClass("selected", selected);
-                       }
-               }
        }
 }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ToggleButtonBarItemRenderer.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ToggleButtonBarItemRenderer.as
index 0e15793..b520486 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ToggleButtonBarItemRenderer.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ToggleButtonBarItemRenderer.as
@@ -23,6 +23,7 @@ package org.apache.royale.jewel.itemRenderers
        import org.apache.royale.core.WrappedHTMLElement;
        }
        import org.apache.royale.core.IIcon;
+    import org.apache.royale.core.IItemRendererOwnerView;
        import org.apache.royale.core.SimpleCSSStylesWithFlex;
        import org.apache.royale.core.ValuesManager;
        import org.apache.royale.events.ItemClickedEvent;
@@ -99,7 +100,7 @@ package org.apache.royale.jewel.itemRenderers
                /*
                 * IItemRenderer, ISelectableItemRenderer
                 */
-               private var _itemRendererOwnerView:Object;
+               private var _itemRendererOwnerView:IItemRendererOwnerView;
                /**
                 * The parent container for the itemRenderer instance.
                 *
@@ -108,11 +109,11 @@ package org.apache.royale.jewel.itemRenderers
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.9.7
                 */
-               public function get itemRendererOwnerView():Object
+               public function get 
itemRendererOwnerView():IItemRendererOwnerView
                {
                        return _itemRendererOwnerView;
                }
-               public function set itemRendererOwnerView(value:Object):void
+               public function set 
itemRendererOwnerView(value:IItemRendererOwnerView):void
                {
                        _itemRendererOwnerView = value;
 
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/table/TBodyContentArea.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/table/TBodyContentArea.as
index 3332f4c..001d25a 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/table/TBodyContentArea.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/table/TBodyContentArea.as
@@ -91,7 +91,7 @@ package org.apache.royale.jewel.supportClasses.table
                {
                        // this method is not used for now, so it needs to be 
tested to see if it's correctly implemented
                        var r:DataItemRenderer = renderer as DataItemRenderer;
-                       r.itemRendererOwnerView = host; // easy access from 
renderer to table
+                       r.itemRendererOwnerView = this; // easy access from 
renderer to table
                        var tableCell:TableCell = new TableCell();
                        tableCell.addElement(r);
 
@@ -124,7 +124,7 @@ package org.apache.royale.jewel.supportClasses.table
                public function addItemRendererAt(renderer:IItemRenderer, 
index:int):void
                {
                        var r:DataItemRenderer = renderer as DataItemRenderer;
-                       r.itemRendererOwnerView = host; // easy access from 
renderer to table
+                       r.itemRendererOwnerView = this; // easy access from 
renderer to table
                        var tableCell:TableCell = new TableCell();
                        tableCell.addElement(r);
 

Reply via email to