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

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

commit 48d4425de6030022a6852fa34ffd34b2ebf5d65f
Author: Alex Harui <[email protected]>
AuthorDate: Thu Feb 20 13:40:38 2020 -0800

    refactor Jewel to use new SelectableItemRendererClassFactory pattern
---
 .../Core/src/main/resources/basic-manifest.xml     |  2 +
 .../projects/Core/src/main/royale/CoreClasses.as   |  1 +
 ...erridableSelectableItemRendererClassFactory.as} |  8 ++-
 .../core/SelectableItemRendererClassFactory.as     |  3 +-
 .../projects/Jewel/src/main/resources/defaults.css | 14 ++--
 .../Jewel/src/main/resources/jewel-manifest.xml    |  1 +
 .../controllers/ItemRendererMouseController.as     | 10 +--
 ...stHoverableRuntimeSelectableItemRendererBead.as | 26 ++++---
 ...electorListRuntimeSelectableItemRendererBead.as | 79 ++++------------------
 ...lectorListRuntimeSelectableItemRendererBead.as} | 40 ++++++-----
 .../CollapsibleNavigationSectionRenderer.as        |  2 -
 .../royale/jewel/itemRenderers/ListItemRenderer.as |  9 ---
 .../itemRenderers/NavigationLinkItemRenderer.as    |  2 -
 .../itemRenderers/TabBarButtonItemRenderer.as      |  2 -
 .../jewel/itemRenderers/TableItemRenderer.as       | 31 +--------
 .../Jewel/src/main/sass/components/_datagrid.sass  |  2 +
 .../Jewel/src/main/sass/components/_list.sass      |  3 +-
 .../src/main/sass/components/_navigation.sass      |  3 +-
 .../Jewel/src/main/sass/components/_tabbar.sass    |  3 +-
 .../Jewel/src/main/sass/components/_table.sass     |  3 +-
 20 files changed, 86 insertions(+), 158 deletions(-)

diff --git a/frameworks/projects/Core/src/main/resources/basic-manifest.xml 
b/frameworks/projects/Core/src/main/resources/basic-manifest.xml
index 5b75de2..02bf70b 100644
--- a/frameworks/projects/Core/src/main/resources/basic-manifest.xml
+++ b/frameworks/projects/Core/src/main/resources/basic-manifest.xml
@@ -55,4 +55,6 @@
     
     <component id="CompoundAsyncTask" 
class="org.apache.royale.utils.async.CompoundAsyncTask"/>
     <component id="SequentialAsyncTask" 
class="org.apache.royale.utils.async.SequentialAsyncTask"/>
+    
+    <component id="OverridableSelectableItemRendererClassFactory" 
class="org.apache.royale.core.OverridableSelectableItemRendererClassFactory"/>
 </componentPackage>
diff --git a/frameworks/projects/Core/src/main/royale/CoreClasses.as 
b/frameworks/projects/Core/src/main/royale/CoreClasses.as
index d7858ee..e901fc3 100644
--- a/frameworks/projects/Core/src/main/royale/CoreClasses.as
+++ b/frameworks/projects/Core/src/main/royale/CoreClasses.as
@@ -77,6 +77,7 @@ internal class CoreClasses
        import org.apache.royale.core.IBinaryImageLoader; IBinaryImageLoader;
     import org.apache.royale.core.ItemRendererClassFactory; 
ItemRendererClassFactory;
     import org.apache.royale.core.SelectableItemRendererClassFactory; 
SelectableItemRendererClassFactory;
+    import 
org.apache.royale.core.OverridableSelectableItemRendererClassFactory; 
OverridableSelectableItemRendererClassFactory;
     import org.apache.royale.core.IChangePropagator; IChangePropagator;
     import org.apache.royale.core.IAlertModel; IAlertModel;
     import org.apache.royale.core.IBead; IBead;
diff --git 
a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/SelectableItemRendererClassFactory.as
 
b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/OverridableSelectableItemRendererClassFactory.as
similarity index 90%
copy from 
frameworks/projects/Core/src/main/royale/org/apache/royale/core/SelectableItemRendererClassFactory.as
copy to 
frameworks/projects/Core/src/main/royale/org/apache/royale/core/OverridableSelectableItemRendererClassFactory.as
index 3488448..e1f05c3 100644
--- 
a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/SelectableItemRendererClassFactory.as
+++ 
b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/OverridableSelectableItemRendererClassFactory.as
@@ -22,6 +22,7 @@ package org.apache.royale.core
     import org.apache.royale.core.ClassFactory;
     import org.apache.royale.core.IFactory;
     import org.apache.royale.core.IItemRendererProvider;
+    import org.apache.royale.core.ISelectableItemRenderer;
     
     import org.apache.royale.utils.MXMLDataInterpreter;
 
@@ -38,7 +39,7 @@ package org.apache.royale.core
      *  @playerversion AIR 2.6
      *  @productversion Royale 0.0
      */
-       public class SelectableItemRendererClassFactory extends 
ItemRendererClassFactory
+       public class OverridableSelectableItemRendererClassFactory extends 
ItemRendererClassFactory
        {
         /**
          *  Constructor.
@@ -48,7 +49,7 @@ package org.apache.royale.core
          *  @playerversion AIR 2.6
          *  @productversion Royale 0.0
          */
-               public function SelectableItemRendererClassFactory()
+               public function OverridableSelectableItemRendererClassFactory()
                {
                        super();
                }
@@ -81,7 +82,8 @@ package org.apache.royale.core
         override public function createItemRenderer():IItemRenderer
         {
             var ir:IItemRenderer = super.createItemRenderer();
-            ir.addBead(new selectableBeadClass());
+                       if (!ir.getBeadByType(ISelectableItemRenderer))
+                   ir.addBead(new selectableBeadClass());
             return ir;
         }
        }
diff --git 
a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/SelectableItemRendererClassFactory.as
 
b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/SelectableItemRendererClassFactory.as
index 3488448..18402a4 100644
--- 
a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/SelectableItemRendererClassFactory.as
+++ 
b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/SelectableItemRendererClassFactory.as
@@ -22,6 +22,7 @@ package org.apache.royale.core
     import org.apache.royale.core.ClassFactory;
     import org.apache.royale.core.IFactory;
     import org.apache.royale.core.IItemRendererProvider;
+    import org.apache.royale.core.ISelectableItemRenderer;
     
     import org.apache.royale.utils.MXMLDataInterpreter;
 
@@ -81,7 +82,7 @@ package org.apache.royale.core
         override public function createItemRenderer():IItemRenderer
         {
             var ir:IItemRenderer = super.createItemRenderer();
-            ir.addBead(new selectableBeadClass());
+               ir.addBead(new selectableBeadClass());
             return ir;
         }
        }
diff --git a/frameworks/projects/Jewel/src/main/resources/defaults.css 
b/frameworks/projects/Jewel/src/main/resources/defaults.css
index 60a73e6..0e9b6d0 100644
--- a/frameworks/projects/Jewel/src/main/resources/defaults.css
+++ b/frameworks/projects/Jewel/src/main/resources/defaults.css
@@ -544,7 +544,9 @@ j|DataGridListArea {
 }
 
 j|DataGridColumnList {
+  IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.SelectableItemRendererClassFactory");
   IItemRenderer: 
ClassReference("org.apache.royale.jewel.itemRenderers.DataGridItemRenderer");
+  ISelectableItemRenderer: 
ClassReference("org.apache.royale.jewel.beads.itemRenderers.ClassSelectorListRuntimeSelectableItemRendererBead");
 }
 
 .jewel.datechooser .jewel.table {
@@ -3204,9 +3206,10 @@ j|List {
   IBeadView: ClassReference("org.apache.royale.jewel.beads.views.ListView");
   IBeadController: 
ClassReference("org.apache.royale.jewel.beads.controllers.ListSingleSelectionMouseController");
   IBeadLayout: 
ClassReference("org.apache.royale.jewel.beads.layouts.VerticalLayout");
-  IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.ItemRendererClassFactory");
+  IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.SelectableItemRendererClassFactory");
   IItemRenderer: 
ClassReference("org.apache.royale.jewel.itemRenderers.ListItemRenderer");
   IItemRendererInitializer: 
ClassReference("org.apache.royale.jewel.beads.itemRenderers.JewelListItemRendererInitializer");
+  ISelectableItemRenderer: 
ClassReference("org.apache.royale.jewel.beads.itemRenderers.ClassSelectorListRuntimeSelectableItemRendererBead");
   IViewport: 
ClassReference("org.apache.royale.jewel.supportClasses.scrollbar.ScrollingViewport");
   IViewportModel: 
ClassReference("org.apache.royale.html.beads.models.ViewportModel");
   IBeadModel: 
ClassReference("org.apache.royale.jewel.beads.models.ArrayListSelectionModel");
@@ -3232,9 +3235,10 @@ j|Navigation {
   IBeadView: ClassReference("org.apache.royale.jewel.beads.views.ListView");
   IBeadController: 
ClassReference("org.apache.royale.jewel.beads.controllers.ListSingleSelectionMouseController");
   IBeadLayout: 
ClassReference("org.apache.royale.jewel.beads.layouts.VerticalLayout");
-  IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.ItemRendererClassFactory");
+  IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.SelectableItemRendererClassFactory");
   IItemRenderer: 
ClassReference("org.apache.royale.jewel.itemRenderers.NavigationLinkItemRenderer");
   IItemRendererInitializer: 
ClassReference("org.apache.royale.jewel.beads.itemRenderers.JewelListItemRendererInitializer");
+  ISelectableItemRenderer: 
ClassReference("org.apache.royale.jewel.beads.itemRenderers.ClassSelectorListHoverableRuntimeSelectableItemRendererBead");
   IViewport: 
ClassReference("org.apache.royale.jewel.supportClasses.scrollbar.ScrollingViewport");
   IViewportModel: 
ClassReference("org.apache.royale.html.beads.models.ViewportModel");
   IBeadModel: 
ClassReference("org.apache.royale.jewel.beads.models.ArrayListSelectionModel");
@@ -3670,9 +3674,10 @@ j|TabBar {
   IBeadView: ClassReference("org.apache.royale.jewel.beads.views.TabBarView");
   IBeadController: 
ClassReference("org.apache.royale.jewel.beads.controllers.ListSingleSelectionMouseController");
   IBeadLayout: 
ClassReference("org.apache.royale.jewel.beads.layouts.NullLayout");
-  IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.ItemRendererClassFactory");
+  IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.SelectableItemRendererClassFactory");
   IItemRenderer: 
ClassReference("org.apache.royale.jewel.itemRenderers.TabBarButtonItemRenderer");
   IItemRendererInitializer: 
ClassReference("org.apache.royale.jewel.beads.itemRenderers.JewelListItemRendererInitializer");
+  ISelectableItemRenderer: 
ClassReference("org.apache.royale.jewel.beads.itemRenderers.ClassSelectorListRuntimeSelectableItemRendererBead");
   IViewport: ClassReference("org.apache.royale.jewel.supportClasses.Viewport");
   IViewportModel: 
ClassReference("org.apache.royale.html.beads.models.ViewportModel");
   IBeadModel: 
ClassReference("org.apache.royale.jewel.beads.models.ArrayListSelectionModel");
@@ -3797,9 +3802,10 @@ j|Table {
   IBeadLayout: 
ClassReference("org.apache.royale.jewel.beads.layouts.TableLayout");
   IBeadView: ClassReference("org.apache.royale.jewel.beads.views.TableView");
   IBeadModel: 
ClassReference("org.apache.royale.jewel.beads.models.TableModel");
-  IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.ItemRendererClassFactory");
+  IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.SelectableItemRendererClassFactory");
   IItemRenderer: 
ClassReference("org.apache.royale.jewel.itemRenderers.TableItemRenderer");
   IBeadController: 
ClassReference("org.apache.royale.jewel.beads.controllers.TableCellSelectionMouseController");
+  ISelectableItemRenderer: 
ClassReference("org.apache.royale.jewel.beads.itemRenderers.ClassSelectorListRuntimeSelectableItemRendererBead");
   IDataProviderItemRendererMapper: 
ClassReference("org.apache.royale.jewel.beads.itemRenderers.TableItemRendererFactoryForCollectionView");
   IViewport: 
ClassReference("org.apache.royale.jewel.supportClasses.scrollbar.ScrollingViewport");
   IViewportModel: 
ClassReference("org.apache.royale.html.beads.models.ViewportModel");
diff --git a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml 
b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
index a28baef..feb7bf3 100644
--- a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
+++ b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
@@ -218,6 +218,7 @@
     <component id="VirtualDataItemRendererFactoryForCollectionView" 
class="org.apache.royale.jewel.beads.itemRenderers.VirtualDataItemRendererFactoryForCollectionView"/>
     <component id="DropDownListItemRendererFactoryForCollectionView" 
class="org.apache.royale.jewel.beads.itemRenderers.DropDownListItemRendererFactoryForCollectionView"/>
     <component id="TableItemRendererFactoryForCollectionView" 
class="org.apache.royale.jewel.beads.itemRenderers.TableItemRendererFactoryForCollectionView"/>
+    <component id="NoClassSelectorListRuntimeSelectableItemRendererBead" 
class="org.apache.royale.jewel.beads.itemRenderers.NoClassSelectorListRuntimeSelectableItemRendererBead"/>
 
     <component id="AddListItemRendererForArrayListData" 
class="org.apache.royale.jewel.beads.itemRenderers.AddListItemRendererForArrayListData"
 />
     <component id="RemoveListItemRendererForArrayListData" 
class="org.apache.royale.jewel.beads.itemRenderers.RemoveListItemRendererForArrayListData"
 />
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 cf58399..0929caf 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
@@ -31,7 +31,7 @@ package org.apache.royale.jewel.beads.controllers
        import org.apache.royale.core.WrappedHTMLElement;
        import org.apache.royale.events.BrowserEvent;
        }
-    import org.apache.royale.core.IRuntimeSelectableItemRenderer;
+    import org.apache.royale.core.ISelectableItemRenderer;
        import org.apache.royale.core.IBeadController;
        import org.apache.royale.core.IIndexedItemRenderer;
        import org.apache.royale.core.IStrand;
@@ -157,7 +157,7 @@ package org.apache.royale.jewel.beads.controllers
                        var target:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
                        if (target)
                        {
-                var selectionBead:IRuntimeSelectableItemRenderer = 
target.getBeadByType(IRuntimeSelectableItemRenderer) as 
IRuntimeSelectableItemRenderer;
+                var selectionBead:ISelectableItemRenderer = 
target.getBeadByType(ISelectableItemRenderer) as ISelectableItemRenderer;
                 selectionBead.down = true;
                                target.addEventListener(MouseEvent.MOUSE_UP, 
mouseUpHandler);
                        }
@@ -173,7 +173,7 @@ package org.apache.royale.jewel.beads.controllers
                        var target:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
             if (target)
             {
-                var selectionBead:IRuntimeSelectableItemRenderer = 
target.getBeadByType(IRuntimeSelectableItemRenderer) as 
IRuntimeSelectableItemRenderer;
+                var selectionBead:ISelectableItemRenderer = 
target.getBeadByType(ISelectableItemRenderer) as ISelectableItemRenderer;
                 selectionBead.down = true;
                 selectionBead.hovered = false;
             }
@@ -209,8 +209,8 @@ package org.apache.royale.jewel.beads.controllers
             var target:IIndexedItemRenderer = event.currentTarget as 
IIndexedItemRenderer;
             if (target)
             {
-                       var selectionBead:IRuntimeSelectableItemRenderer = 
target.getBeadByType(IRuntimeSelectableItemRenderer) as 
IRuntimeSelectableItemRenderer;
-                       if (selectionBead && selectionBead.selectable)
+                       var selectionBead:ISelectableItemRenderer = 
target.getBeadByType(ISelectableItemRenderer) as ISelectableItemRenderer;
+                       if (selectionBead && selectionBead.down)
                        {
                                var newEvent:ItemClickedEvent = new 
ItemClickedEvent("itemClicked");
                                newEvent.data = target.data;
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ClassSelectorListHoverableRuntimeSelectableItemRendererBead.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ClassSelectorListHoverableRuntimeSelectableItemRendererBead.as
index e8130e5..39a97b5 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ClassSelectorListHoverableRuntimeSelectableItemRendererBead.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ClassSelectorListHoverableRuntimeSelectableItemRendererBead.as
@@ -18,11 +18,9 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.jewel.beads.itemRenderers
 {
-    COMPILE::SWF
-    {
-        import flash.display.Sprite;
-    }
-    import org.apache.royale.utils.ClassSelectorList;
+    import org.apache.royale.core.IStrand;
+    import org.apache.royale.html.beads.SelectableItemRendererBeadBase;
+    import org.apache.royale.utils.IClassSelectorListSupport;
 
        /**
         *  UnselectableElement bead prevents from text selection of html 
element
@@ -33,7 +31,7 @@ package org.apache.royale.jewel.beads.itemRenderers
         *  @playerversion AIR 2.6
         *  @productversion Royale 0.9.7
         */
-       public class 
ClassSelectorListHoverableRuntimeSelectableItemRendererBead extends 
ClassSelectorListRuntimeSelectableItemRendererBead
+       public class 
ClassSelectorListHoverableRuntimeSelectableItemRendererBead extends 
SelectableItemRendererBeadBase
        {
                /**
                 *  constructor.
@@ -43,19 +41,25 @@ package org.apache.royale.jewel.beads.itemRenderers
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.9.7
                 */
-               public function 
ClassSelectorListHoverableRuntimeSelectableItemRendererBead(classSelectorList:ClassSelectorList)
+               public function 
ClassSelectorListHoverableRuntimeSelectableItemRendererBead()
                {
-            super(classSelectorList);
                }
         
+               private var ir:IClassSelectorListSupport;
+               
+               override public function set strand(value:IStrand):void
+               {
+                       super.strand = value;
+                       ir = value as IClassSelectorListSupport;
+                       ir.addClass("selectable");
+               }
+               
         /**
          * @private
          */
         override public function updateRenderer():void
         {
-            // there's no selection only hover state
-            if(hoverable)
-                classSelectorList.toggle("hovered", hovered);
+            ir.toggleClass("hovered", hovered);
         }
        }
 }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ClassSelectorListRuntimeSelectableItemRendererBead.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ClassSelectorListRuntimeSelectableItemRendererBead.as
index caae611..caa9ab6 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ClassSelectorListRuntimeSelectableItemRendererBead.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ClassSelectorListRuntimeSelectableItemRendererBead.as
@@ -18,13 +18,9 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.jewel.beads.itemRenderers
 {
-    COMPILE::SWF
-    {
-        import flash.display.Sprite;
-    }
-    import org.apache.royale.core.IRuntimeSelectableItemRenderer;
+    import org.apache.royale.core.IStrand;
     import org.apache.royale.html.beads.SelectableItemRendererBeadBase;
-    import org.apache.royale.utils.ClassSelectorList;
+    import org.apache.royale.utils.IClassSelectorListSupport;
 
        /**
         *  UnselectableElement bead prevents from text selection of html 
element
@@ -35,7 +31,7 @@ package org.apache.royale.jewel.beads.itemRenderers
         *  @playerversion AIR 2.6
         *  @productversion Royale 0.8
         */
-       public class ClassSelectorListRuntimeSelectableItemRendererBead extends 
SelectableItemRendererBeadBase implements IRuntimeSelectableItemRenderer
+       public class ClassSelectorListRuntimeSelectableItemRendererBead extends 
SelectableItemRendererBeadBase
        {
                /**
                 *  constructor.
@@ -45,72 +41,27 @@ package org.apache.royale.jewel.beads.itemRenderers
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.8
                 */
-               public function 
ClassSelectorListRuntimeSelectableItemRendererBead(classSelectorList:ClassSelectorList)
+               public function 
ClassSelectorListRuntimeSelectableItemRendererBead()
                {
-            this.classSelectorList = classSelectorList;
                }
 
-        protected var classSelectorList:ClassSelectorList;
-        
-        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;
-            classSelectorList.toggle("selectable", _selectable);       
-            
-        }
-        
-        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 ir:IClassSelectorListSupport;
+               
+               override public function set strand(value:IStrand):void
+               {
+                       super.strand = value;
+                       ir = value as IClassSelectorListSupport;
+                       ir.addClass("selectable");
+               }
+               
         /**
          * @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);
-            }
+            ir.toggleClass("hovered", hovered);
+            ir.toggleClass("selected", selected);
         }
        }
 }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ClassSelectorListHoverableRuntimeSelectableItemRendererBead.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/NoClassSelectorListRuntimeSelectableItemRendererBead.as
similarity index 60%
copy from 
frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ClassSelectorListHoverableRuntimeSelectableItemRendererBead.as
copy to 
frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/NoClassSelectorListRuntimeSelectableItemRendererBead.as
index e8130e5..0906510 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ClassSelectorListHoverableRuntimeSelectableItemRendererBead.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/NoClassSelectorListRuntimeSelectableItemRendererBead.as
@@ -18,22 +18,20 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.jewel.beads.itemRenderers
 {
-    COMPILE::SWF
-    {
-        import flash.display.Sprite;
-    }
-    import org.apache.royale.utils.ClassSelectorList;
+    import org.apache.royale.core.IStrand;
+    import org.apache.royale.html.beads.SelectableItemRendererBeadBase;
+    import org.apache.royale.utils.IClassSelectorListSupport;
 
        /**
-        *  UnselectableElement bead prevents from text selection of html 
element
+        *  NoClassSelectorListRuntimeSelectableItemRendererBead bead disables 
selection visuals
         *
         *  @viewbead
         *  @langversion 3.0
         *  @playerversion Flash 10.2
         *  @playerversion AIR 2.6
-        *  @productversion Royale 0.9.7
+        *  @productversion Royale 0.8
         */
-       public class 
ClassSelectorListHoverableRuntimeSelectableItemRendererBead extends 
ClassSelectorListRuntimeSelectableItemRendererBead
+       public class NoClassSelectorListRuntimeSelectableItemRendererBead 
extends SelectableItemRendererBeadBase
        {
                /**
                 *  constructor.
@@ -41,21 +39,21 @@ package org.apache.royale.jewel.beads.itemRenderers
                 *  @langversion 3.0
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
-                *  @productversion Royale 0.9.7
+                *  @productversion Royale 0.8
                 */
-               public function 
ClassSelectorListHoverableRuntimeSelectableItemRendererBead(classSelectorList:ClassSelectorList)
+               public function 
NoClassSelectorListRuntimeSelectableItemRendererBead()
                {
-            super(classSelectorList);
                }
-        
-        /**
-         * @private
-         */
-        override public function updateRenderer():void
-        {
-            // there's no selection only hover state
-            if(hoverable)
-                classSelectorList.toggle("hovered", hovered);
-        }
+               
+               override public function set down(value:Boolean):void
+               {
+                       // don't allow down state
+               }
+               
+               override public function set hovered(value:Boolean):void
+               {
+                       // don't allow down hovered
+               }
+               
        }
 }
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 71d169e..1067e17 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,7 +28,6 @@ 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.itemRenderers.ClassSelectorListHoverableRuntimeSelectableItemRendererBead;
        import org.apache.royale.jewel.supportClasses.INavigationRenderer;
        import org.apache.royale.utils.ClassSelectorList;
        import org.apache.royale.utils.MXMLDataInterpreter;
@@ -68,7 +67,6 @@ package org.apache.royale.jewel.itemRenderers
                        }
                        open = false;
                        addEventListener('click', onSectionNav);
-            addBead(new 
ClassSelectorListHoverableRuntimeSelectableItemRendererBead(navLinkClassSelector));
                }
                
                private function onSectionNav(event:Event):void{
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 80d5517..b996253 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
@@ -23,12 +23,10 @@ package org.apache.royale.jewel.itemRenderers
        import org.apache.royale.core.WrappedHTMLElement;
        import org.apache.royale.html.util.addElementToWrapper;
     }
-       import org.apache.royale.core.IRuntimeSelectableItemRenderer;
     import org.apache.royale.core.StyledMXMLItemRenderer;
        import org.apache.royale.events.Event;
        import org.apache.royale.html.util.getLabelFromData;
        import org.apache.royale.jewel.beads.controls.TextAlign;
-    import 
org.apache.royale.jewel.beads.itemRenderers.ClassSelectorListRuntimeSelectableItemRendererBead;
        import org.apache.royale.jewel.beads.itemRenderers.IAlignItemRenderer;
        import org.apache.royale.jewel.beads.itemRenderers.ITextItemRenderer;
        
@@ -146,12 +144,5 @@ package org.apache.royale.jewel.itemRenderers
             return element;
         }
         
-        override public function addedToParent():void
-        {
-            super.addedToParent();
-            if (!getBeadByType(IRuntimeSelectableItemRenderer))
-                addBead(new 
ClassSelectorListRuntimeSelectableItemRendererBead(classSelectorList));
-        }
-
        }
 }
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 574e77e..10abd55 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,7 +25,6 @@ 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.itemRenderers.ClassSelectorListHoverableRuntimeSelectableItemRendererBead;
 
        /**
         *  The NavigationLinkItemRenderer defines the basic Item Renderer for 
a Jewel 
@@ -58,7 +57,6 @@ package org.apache.royale.jewel.itemRenderers
                        {
                                addClass("mxmlContent");
                        }
-            addBead(new 
ClassSelectorListHoverableRuntimeSelectableItemRendererBead(classSelectorList));
                }
 
                // private var _href:String = "#";
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 4072de5..bba479b 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,7 +27,6 @@ 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.itemRenderers.ClassSelectorListRuntimeSelectableItemRendererBead;
     
        /**
         *  The TabBarButtonItemRenderer defines the basic Item Renderer for a 
Jewel 
@@ -55,7 +54,6 @@ package org.apache.royale.jewel.itemRenderers
 
                        typeNames = "jewel tabbarbutton";
                        addClass("selectable");
-            addBead(new 
ClassSelectorListRuntimeSelectableItemRendererBead(classSelectorList));
                }
 
                // private var _href:String = "#";
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/TableItemRenderer.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/TableItemRenderer.as
index 8fb429d..375df7e 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/TableItemRenderer.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/TableItemRenderer.as
@@ -23,9 +23,7 @@ package org.apache.royale.jewel.itemRenderers
        import org.apache.royale.core.WrappedHTMLElement;
        import org.apache.royale.html.util.addElementToWrapper;
     }
-    import org.apache.royale.core.IRuntimeSelectableItemRenderer;
     import org.apache.royale.jewel.beads.controls.TextAlign;
-    import 
org.apache.royale.jewel.beads.itemRenderers.ClassSelectorListRuntimeSelectableItemRendererBead;
 
        /**
         *  The TableItemRenderer class displays data in string form using the 
data's toString()
@@ -58,36 +56,9 @@ package org.apache.royale.jewel.itemRenderers
                        }
 
                        textAlign = new TextAlign();
-                       addBead(textAlign);
-            
-            // a more PAYG implementation might be to have a base class or 
interface for
-            // TableItemRenderer so that TableCellCloseIconItemRenderer 
doesn't load
-            // a selection bead at all and doesn't need hoverable or 
selectable APIs
-            // to disable default functionality.
-            selectionBead = new 
ClassSelectorListRuntimeSelectableItemRendererBead(classSelectorList);
-            addBead(selectionBead);
+                       addBead(textAlign);            
                }
                
-        private var selectionBead:IRuntimeSelectableItemRenderer;
-        
-        public function get hoverable():Boolean
-        {
-            return selectionBead.hoverable;
-        }
-        public function set hoverable(value:Boolean):void
-        {
-            selectionBead.hoverable = value;
-        }
-        
-        public function get selectable():Boolean
-        {
-            return selectionBead.selectable;
-        }
-        public function set selectable(value:Boolean):void
-        {
-            selectionBead.selectable = value;
-        }
-        
         /**
          * @royaleignorecoercion org.apache.royale.core.WrappedHTMLElement
          */
diff --git a/frameworks/projects/Jewel/src/main/sass/components/_datagrid.sass 
b/frameworks/projects/Jewel/src/main/sass/components/_datagrid.sass
index ab30611..a365a5b 100644
--- a/frameworks/projects/Jewel/src/main/sass/components/_datagrid.sass
+++ b/frameworks/projects/Jewel/src/main/sass/components/_datagrid.sass
@@ -64,7 +64,9 @@ j|DataGridListArea
     IViewportModel: 
ClassReference("org.apache.royale.html.beads.models.ViewportModel")
 
 j|DataGridColumnList
+    IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.SelectableItemRendererClassFactory")
     IItemRenderer: 
ClassReference("org.apache.royale.jewel.itemRenderers.DataGridItemRenderer")
+    ISelectableItemRenderer: 
ClassReference("org.apache.royale.jewel.beads.itemRenderers.ClassSelectorListRuntimeSelectableItemRendererBead")
 
 //Nothing to change from j|ButtonBar
 j|DataGridButtonBar
diff --git a/frameworks/projects/Jewel/src/main/sass/components/_list.sass 
b/frameworks/projects/Jewel/src/main/sass/components/_list.sass
index f5852d4..b071ef0 100644
--- a/frameworks/projects/Jewel/src/main/sass/components/_list.sass
+++ b/frameworks/projects/Jewel/src/main/sass/components/_list.sass
@@ -39,9 +39,10 @@ j|List
     IBeadView:  ClassReference("org.apache.royale.jewel.beads.views.ListView")
     IBeadController: 
ClassReference("org.apache.royale.jewel.beads.controllers.ListSingleSelectionMouseController")
     IBeadLayout: 
ClassReference("org.apache.royale.jewel.beads.layouts.VerticalLayout")
-    IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.ItemRendererClassFactory")
+    IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.SelectableItemRendererClassFactory")
     IItemRenderer: 
ClassReference("org.apache.royale.jewel.itemRenderers.ListItemRenderer")
     IItemRendererInitializer: 
ClassReference("org.apache.royale.jewel.beads.itemRenderers.JewelListItemRendererInitializer")
+    ISelectableItemRenderer: 
ClassReference("org.apache.royale.jewel.beads.itemRenderers.ClassSelectorListRuntimeSelectableItemRendererBead")
     IViewport: 
ClassReference("org.apache.royale.jewel.supportClasses.scrollbar.ScrollingViewport")
     IViewportModel: 
ClassReference("org.apache.royale.html.beads.models.ViewportModel")
     IBeadModel: 
ClassReference("org.apache.royale.jewel.beads.models.ArrayListSelectionModel")
diff --git 
a/frameworks/projects/Jewel/src/main/sass/components/_navigation.sass 
b/frameworks/projects/Jewel/src/main/sass/components/_navigation.sass
index 2775a1e..cb12712 100644
--- a/frameworks/projects/Jewel/src/main/sass/components/_navigation.sass
+++ b/frameworks/projects/Jewel/src/main/sass/components/_navigation.sass
@@ -29,9 +29,10 @@ j|Navigation
     IBeadView: ClassReference("org.apache.royale.jewel.beads.views.ListView")
     IBeadController: 
ClassReference("org.apache.royale.jewel.beads.controllers.ListSingleSelectionMouseController")
     IBeadLayout: 
ClassReference("org.apache.royale.jewel.beads.layouts.VerticalLayout")
-    IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.ItemRendererClassFactory")
+    IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.SelectableItemRendererClassFactory")
     IItemRenderer: 
ClassReference("org.apache.royale.jewel.itemRenderers.NavigationLinkItemRenderer")
     IItemRendererInitializer: 
ClassReference("org.apache.royale.jewel.beads.itemRenderers.JewelListItemRendererInitializer")
+    ISelectableItemRenderer: 
ClassReference("org.apache.royale.jewel.beads.itemRenderers.ClassSelectorListHoverableRuntimeSelectableItemRendererBead")
     IViewport: 
ClassReference("org.apache.royale.jewel.supportClasses.scrollbar.ScrollingViewport")
     IViewportModel: 
ClassReference("org.apache.royale.html.beads.models.ViewportModel")
     IBeadModel: 
ClassReference("org.apache.royale.jewel.beads.models.ArrayListSelectionModel")
diff --git a/frameworks/projects/Jewel/src/main/sass/components/_tabbar.sass 
b/frameworks/projects/Jewel/src/main/sass/components/_tabbar.sass
index 2ab4d03..e8cb096 100644
--- a/frameworks/projects/Jewel/src/main/sass/components/_tabbar.sass
+++ b/frameworks/projects/Jewel/src/main/sass/components/_tabbar.sass
@@ -51,9 +51,10 @@ j|TabBar
     IBeadView: ClassReference("org.apache.royale.jewel.beads.views.TabBarView")
     IBeadController: 
ClassReference("org.apache.royale.jewel.beads.controllers.ListSingleSelectionMouseController")
     IBeadLayout: 
ClassReference("org.apache.royale.jewel.beads.layouts.NullLayout")
-    IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.ItemRendererClassFactory")
+    IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.SelectableItemRendererClassFactory")
     IItemRenderer: 
ClassReference("org.apache.royale.jewel.itemRenderers.TabBarButtonItemRenderer")
     IItemRendererInitializer: 
ClassReference("org.apache.royale.jewel.beads.itemRenderers.JewelListItemRendererInitializer")
+    ISelectableItemRenderer: 
ClassReference("org.apache.royale.jewel.beads.itemRenderers.ClassSelectorListRuntimeSelectableItemRendererBead")
     IViewport: 
ClassReference("org.apache.royale.jewel.supportClasses.Viewport")
     IViewportModel: 
ClassReference("org.apache.royale.html.beads.models.ViewportModel")
     IBeadModel: 
ClassReference("org.apache.royale.jewel.beads.models.ArrayListSelectionModel")
diff --git a/frameworks/projects/Jewel/src/main/sass/components/_table.sass 
b/frameworks/projects/Jewel/src/main/sass/components/_table.sass
index ed12602..da81ac4 100644
--- a/frameworks/projects/Jewel/src/main/sass/components/_table.sass
+++ b/frameworks/projects/Jewel/src/main/sass/components/_table.sass
@@ -105,9 +105,10 @@ j|Table
     IBeadLayout: 
ClassReference("org.apache.royale.jewel.beads.layouts.TableLayout")
     IBeadView: ClassReference("org.apache.royale.jewel.beads.views.TableView")
     IBeadModel: 
ClassReference("org.apache.royale.jewel.beads.models.TableModel")
-    IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.ItemRendererClassFactory")
+    IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.SelectableItemRendererClassFactory")
     IItemRenderer: 
ClassReference("org.apache.royale.jewel.itemRenderers.TableItemRenderer")
     IBeadController: 
ClassReference("org.apache.royale.jewel.beads.controllers.TableCellSelectionMouseController")
+    ISelectableItemRenderer: 
ClassReference("org.apache.royale.jewel.beads.itemRenderers.ClassSelectorListRuntimeSelectableItemRendererBead")
     IDataProviderItemRendererMapper: 
ClassReference("org.apache.royale.jewel.beads.itemRenderers.TableItemRendererFactoryForCollectionView")
     IViewport: 
ClassReference("org.apache.royale.jewel.supportClasses.scrollbar.ScrollingViewport")
     IViewportModel: 
ClassReference("org.apache.royale.html.beads.models.ViewportModel")

Reply via email to