Repository: flex-asjs
Updated Branches:
  refs/heads/develop 0a2709e6c -> 0d5a4c8e0


Separated event levels in List-based components so each level handles events 
meaningful to it and dispatches higher-level events as necessary.


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/0d5a4c8e
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/0d5a4c8e
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/0d5a4c8e

Branch: refs/heads/develop
Commit: 0d5a4c8e0fb82e7326b464db80384a92497456d0
Parents: 0a2709e
Author: Peter Ent <[email protected]>
Authored: Mon Jan 11 13:29:12 2016 -0500
Committer: Peter Ent <[email protected]>
Committed: Mon Jan 11 13:29:12 2016 -0500

----------------------------------------------------------------------
 .../Core/as/src/org/apache/flex/events/Event.as |   5 +
 .../org/apache/flex/events/ItemAddedEvent.as    |  88 ++++++++++++++
 .../org/apache/flex/events/ItemClickedEvent.as  | 115 +++++++++++++++++++
 .../org/apache/flex/events/ItemRemovedEvent.as  |  88 ++++++++++++++
 .../controllers/ItemRendererMouseController.as  |  33 +++---
 .../ListSingleSelectionMouseController.as       |  47 ++++++--
 .../ButtonBarButtonItemRenderer.as              |  14 ++-
 .../flex/html/supportClasses/DataGroup.as       |  62 +++-------
 8 files changed, 378 insertions(+), 74 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/0d5a4c8e/frameworks/projects/Core/as/src/org/apache/flex/events/Event.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/as/src/org/apache/flex/events/Event.as 
b/frameworks/projects/Core/as/src/org/apache/flex/events/Event.as
index 765db3d..008909b 100644
--- a/frameworks/projects/Core/as/src/org/apache/flex/events/Event.as
+++ b/frameworks/projects/Core/as/src/org/apache/flex/events/Event.as
@@ -124,5 +124,10 @@ package org.apache.flex.events
                {
                        // do nothing
                }
+               
+               public function cloneEvent():org.apache.flex.events.Event
+               {
+                       return this;
+               }
     }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/0d5a4c8e/frameworks/projects/HTML/as/src/org/apache/flex/events/ItemAddedEvent.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/as/src/org/apache/flex/events/ItemAddedEvent.as 
b/frameworks/projects/HTML/as/src/org/apache/flex/events/ItemAddedEvent.as
new file mode 100644
index 0000000..24707c0
--- /dev/null
+++ b/frameworks/projects/HTML/as/src/org/apache/flex/events/ItemAddedEvent.as
@@ -0,0 +1,88 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+
+//  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.flex.events
+{
+
+       import org.apache.flex.events.CustomEvent;
+       
+       /**
+        * The ItemAddedEvent is dispatched by IItemRendererParent objects 
whenenver an
+        * itemRenderer is added.
+        *
+        * @langversion 3.0
+        * @playerversion Flash 10.2
+        * @playerversion AIR 2.6
+        * @productversion FlexJS 0.0
+        */
+       public class ItemAddedEvent extends CustomEvent
+       {
+
+               //--------------------------------------
+               //   Constructor
+               //--------------------------------------
+
+               /**
+                * Constructor.
+                *
+                * @param type The name of the event.
+                * @param bubbles Whether the event bubbles.
+                * @param cancelable Whether the event can be canceled.
+                *
+                * @langversion 3.0
+                * @playerversion Flash 10.2
+                * @playerversion AIR 2.6
+                * @productversion FlexJS 0.0
+                */
+               public function ItemAddedEvent(type:String, 
bubbles:Boolean=false, cancelable:Boolean=false)
+               {
+            COMPILE::AS3
+            {
+                super(type, bubbles, cancelable);                    
+            }
+            COMPILE::JS
+            {
+                super(type);
+            }
+                       
+                       item = null;
+               }
+               
+               /**
+                * The item being added.
+                *
+                * @export
+                * @langversion 3.0
+                * @playerversion Flash 10.2
+                * @playerversion AIR 2.6
+                * @productversion FlexJS 0.0
+                */
+               public var item:Object;
+               
+               /**
+                * @private
+                */
+               override public function 
cloneEvent():org.apache.flex.events.Event
+               {
+                       var newEvent:ItemAddedEvent = new ItemAddedEvent(type);
+                       newEvent.item = item;
+                       return newEvent;
+               }
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/0d5a4c8e/frameworks/projects/HTML/as/src/org/apache/flex/events/ItemClickedEvent.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/as/src/org/apache/flex/events/ItemClickedEvent.as 
b/frameworks/projects/HTML/as/src/org/apache/flex/events/ItemClickedEvent.as
new file mode 100644
index 0000000..ac943b0
--- /dev/null
+++ b/frameworks/projects/HTML/as/src/org/apache/flex/events/ItemClickedEvent.as
@@ -0,0 +1,115 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+
+//  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.flex.events
+{
+
+       import org.apache.flex.events.CustomEvent;
+       
+       /**
+        * The ItemClickedEvent is a custom event issued by an itemRenderer to
+        * convey information about itself when it has determined that the
+        * event(s) happening to it constitute a 'click' on itself.
+        *
+        * @langversion 3.0
+        * @playerversion Flash 10.2
+        * @playerversion AIR 2.6
+        * @productversion FlexJS 0.0
+        */
+       public class ItemClickedEvent extends CustomEvent
+       {
+
+               //--------------------------------------
+               //   Constructor
+               //--------------------------------------
+
+               /**
+                * Constructor.
+                *
+                * @param type The name of the event.
+                * @param bubbles Whether the event bubbles.
+                * @param cancelable Whether the event can be canceled.
+                *
+                * @langversion 3.0
+                * @playerversion Flash 10.2
+                * @playerversion AIR 2.6
+                * @productversion FlexJS 0.0
+                */
+               public function ItemClickedEvent(type:String, 
bubbles:Boolean=false, cancelable:Boolean=false)
+               {
+            COMPILE::AS3
+            {
+                super(type, bubbles, cancelable);                    
+            }
+            COMPILE::JS
+            {
+                super(type);
+            }
+                       
+                       index = -1;
+                       data = null;
+                       multipleSelection = false;
+               }
+               
+               /**
+                * The index of the item beginning with zero.
+                *
+                * @export
+                * @langversion 3.0
+                * @playerversion Flash 10.2
+                * @playerversion AIR 2.6
+                * @productversion FlexJS 0.0
+                */
+               public var index:Number;
+               
+               /**
+                * The data of the item.
+                *
+                * @export
+                * @langversion 3.0
+                * @playerversion Flash 10.2
+                * @playerversion AIR 2.6
+                * @productversion FlexJS 0.0
+                */
+               public var data:Object;
+               
+               /**
+                * Whether or not this click is part of a multi-selection 
sequence.
+                *
+                * @export
+                * @langversion 3.0
+                * @playerversion Flash 10.2
+                * @playerversion AIR 2.6
+                * @productversion FlexJS 0.0
+                */
+               public var multipleSelection:Boolean;
+               
+               /**
+                * @private
+                */
+               override public function 
cloneEvent():org.apache.flex.events.Event
+               {
+                       var newEvent:ItemClickedEvent = new 
ItemClickedEvent(type);
+                       newEvent.index = index;
+                       newEvent.data = data;
+                       newEvent.multipleSelection = multipleSelection;
+                       return newEvent;
+               }
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/0d5a4c8e/frameworks/projects/HTML/as/src/org/apache/flex/events/ItemRemovedEvent.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/as/src/org/apache/flex/events/ItemRemovedEvent.as 
b/frameworks/projects/HTML/as/src/org/apache/flex/events/ItemRemovedEvent.as
new file mode 100644
index 0000000..d638084
--- /dev/null
+++ b/frameworks/projects/HTML/as/src/org/apache/flex/events/ItemRemovedEvent.as
@@ -0,0 +1,88 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+
+//  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.flex.events
+{
+
+       import org.apache.flex.events.CustomEvent;
+       
+       /**
+        * The ItemRemovedEvent is dispatched by IItemRendererParent objects 
whenenver an
+        * itemRenderer is removed.
+        *
+        * @langversion 3.0
+        * @playerversion Flash 10.2
+        * @playerversion AIR 2.6
+        * @productversion FlexJS 0.0
+        */
+       public class ItemRemovedEvent extends CustomEvent
+       {
+
+               //--------------------------------------
+               //   Constructor
+               //--------------------------------------
+
+               /**
+                * Constructor.
+                *
+                * @param type The name of the event.
+                * @param bubbles Whether the event bubbles.
+                * @param cancelable Whether the event can be canceled.
+                *
+                * @langversion 3.0
+                * @playerversion Flash 10.2
+                * @playerversion AIR 2.6
+                * @productversion FlexJS 0.0
+                */
+               public function ItemRemovedEvent(type:String, 
bubbles:Boolean=false, cancelable:Boolean=false)
+               {
+            COMPILE::AS3
+            {
+                super(type, bubbles, cancelable);                    
+            }
+            COMPILE::JS
+            {
+                super(type);
+            }
+                       
+                       item = null;
+               }
+               
+               /**
+                * The item being removed.
+                *
+                * @export
+                * @langversion 3.0
+                * @playerversion Flash 10.2
+                * @playerversion AIR 2.6
+                * @productversion FlexJS 0.0
+                */
+               public var item:Object;
+               
+               /**
+                * @private
+                */
+               override public function 
cloneEvent():org.apache.flex.events.Event
+               {
+                       var newEvent:ItemRemovedEvent = new 
ItemRemovedEvent(type);
+                       newEvent.item = item;
+                       return newEvent;
+               }
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/0d5a4c8e/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/ItemRendererMouseController.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/ItemRendererMouseController.as
 
b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/ItemRendererMouseController.as
index ca06c77..0c637bf 100644
--- 
a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/ItemRendererMouseController.as
+++ 
b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/ItemRendererMouseController.as
@@ -33,9 +33,10 @@ COMPILE::JS {
        import goog.events.EventType;
     import goog.events;
 }
+       import org.apache.flex.events.ItemClickedEvent;
 
        /**
-        *  The ItemRendererMouseController class bead handles mouse events in 
itemRenderers. This
+        *  The ItemRendererMouseController class can mouse events in 
itemRenderers. This
         *  includes roll-overs, mouse down, and mouse up. These 
platform-specific events are then
         *  re-dispatched as FlexJS events.
         *  
@@ -100,8 +101,7 @@ COMPILE::JS {
                        var target:ISelectableItemRenderer = event.target as 
ISelectableItemRenderer;
                        if (target)
                        {
-                target.hovered = true;
-                               target.dispatchEvent(new 
Event("itemRendererRollOver",true));
+                               target.dispatchEvent(new 
Event("itemRollOver",true));
                        }
                }
                
@@ -110,8 +110,7 @@ COMPILE::JS {
                {
                        var target:ISelectableItemRenderer = event.target as 
ISelectableItemRenderer;
                        if (target) {
-                               target.hovered = true;
-                               target.dispatchEvent(new 
Event("itemRendererRollOver",true));
+                               target.dispatchEvent(new 
Event("itemRollOver",true));
                        }
                }
                
@@ -124,9 +123,7 @@ COMPILE::JS {
                        var target:ISelectableItemRenderer = event.target as 
ISelectableItemRenderer;
                        if (target)
                        {
-                target.hovered = false;
-                target.down = false;
-                               target.dispatchEvent(new 
Event("itemRendererRollOut",true));
+                               target.dispatchEvent(new 
Event("itemRollOut",true));
                        }
                }
                
@@ -136,9 +133,7 @@ COMPILE::JS {
                        var target:ISelectableItemRenderer = event.target as 
ISelectableItemRenderer;
                        if (target)
                        {
-                               target.hovered = false;
-                               target.down = false;
-                               target.dispatchEvent(new 
Event("itemRendererRollOut",true));
+                               target.dispatchEvent(new 
Event("itemRollOut",true));
                        }
                }
 
@@ -179,9 +174,13 @@ COMPILE::JS {
                        var target:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
                        if (target)
                        {
+                               var newEvent:ItemClickedEvent = new 
ItemClickedEvent("itemClicked");
+                               newEvent.data = target.data;
+                               newEvent.multipleSelection = event.shiftKey;
+                               newEvent.index = target.index;
+                               
                 target.removeEventListener(MouseEvent.MOUSE_UP, 
mouseUpHandler);                
-                               target.selected = true;
-                               target.dispatchEvent(new Event("selected"));
+                               target.dispatchEvent(newEvent);
                        }                       
                }
                
@@ -194,8 +193,12 @@ COMPILE::JS {
                        var target:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
                        if (target)
                        {
-                               target.selected = true;
-                               target.dispatchEvent(new Event("selected"));
+                               var newEvent:ItemClickedEvent = new 
ItemClickedEvent("itemClicked");
+                               newEvent.data = target.data;
+                               newEvent.multipleSelection = event.shiftKey;
+                               newEvent.index = target.index;
+
+                               target.dispatchEvent(newEvent);
                        }
                }
        

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/0d5a4c8e/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/ListSingleSelectionMouseController.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/ListSingleSelectionMouseController.as
 
b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/ListSingleSelectionMouseController.as
index 9760591..e8a1f1f 100644
--- 
a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/ListSingleSelectionMouseController.as
+++ 
b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/controllers/ListSingleSelectionMouseController.as
@@ -26,8 +26,12 @@ package org.apache.flex.html.beads.controllers
        import org.apache.flex.core.IStrand;
        import org.apache.flex.events.Event;
        import org.apache.flex.events.IEventDispatcher;
+       import org.apache.flex.events.ItemAddedEvent;
+       import org.apache.flex.events.ItemRemovedEvent;
        import org.apache.flex.events.MouseEvent;
        import org.apache.flex.html.beads.IListView;
+       
+       import org.apache.flex.events.ItemClickedEvent;
 
     /**
      *  The ListSingleSelectionMouseController class is a controller for
@@ -103,25 +107,48 @@ package org.apache.flex.html.beads.controllers
                        _strand = value;
                        listModel = value.getBeadByType(ISelectionModel) as 
ISelectionModel;
                        listView = value.getBeadByType(IListView) as IListView;
-                       dataGroup = listView.dataGroup;
-            dataGroup.addEventListener("selected", selectedHandler, true);
-            IEventDispatcher(_strand).addEventListener(MouseEvent.ROLL_OVER, 
rolloverHandler);
+                       IEventDispatcher(_strand).addEventListener("itemAdded", 
handleItemAdded);
+                       
IEventDispatcher(_strand).addEventListener("itemRemoved", handleItemRemoved);
+               }
+               
+               private function handleItemAdded(event:ItemAddedEvent):void
+               {
+                       
IEventDispatcher(event.item).addEventListener("itemClicked", selectedHandler);
+                       
IEventDispatcher(event.item).addEventListener("itemRollOver", rolloverHandler);
+                       
IEventDispatcher(event.item).addEventListener("itemRollOut", rolloutHandler);
                }
                
-        private function selectedHandler(event:Event):void
+               private function handleItemRemoved(event:ItemAddedEvent):void
+               {
+                       
IEventDispatcher(event.item).removeEventListener("itemClicked", 
selectedHandler);
+                       
IEventDispatcher(event.item).removeEventListener("itemRollOver", 
rolloverHandler);
+                       
IEventDispatcher(event.item).removeEventListener("itemRollOut", rolloutHandler);
+               }
+               
+        private function selectedHandler(event:ItemClickedEvent):void
         {
-            listModel.selectedIndex = 
ISelectableItemRenderer(event.target).index;
+            listModel.selectedIndex = event.index;
             listView.host.dispatchEvent(new Event("change"));
         }
                
-        private function rolloverHandler(event:Event):void
-        {
-                       var renderer:ISelectableItemRenderer = event.target as 
ISelectableItemRenderer;
+               private function rolloverHandler(event:Event):void
+               {
+                       var renderer:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
                        if (renderer) {
-                               
//trace("ListSingleSelectionMouseController.ROLL_OVER");
+                               renderer.hovered = true;
                                IRollOverModel(listModel).rollOverIndex = 
renderer.index;
                        }
-        }
+               }
+               
+               private function rolloutHandler(event:Event):void
+               {
+                       var renderer:ISelectableItemRenderer = 
event.currentTarget as ISelectableItemRenderer;
+                       if (renderer) {
+                               renderer.hovered = false;
+                               renderer.down = false;
+                               IRollOverModel(listModel).rollOverIndex = -1;
+                       }
+               }
        
        }
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/0d5a4c8e/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/ButtonBarButtonItemRenderer.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/ButtonBarButtonItemRenderer.as
 
b/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/ButtonBarButtonItemRenderer.as
index 64a9e43..a461fac 100644
--- 
a/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/ButtonBarButtonItemRenderer.as
+++ 
b/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/ButtonBarButtonItemRenderer.as
@@ -22,8 +22,10 @@ package org.apache.flex.html.supportClasses
        import org.apache.flex.core.IItemRendererParent;
        import org.apache.flex.core.UIBase;
        import org.apache.flex.events.Event;
+       import org.apache.flex.events.MouseEvent;
        import org.apache.flex.html.TextButton;
        import org.apache.flex.html.beads.ITextItemRenderer;
+       import org.apache.flex.events.ItemClickedEvent;
 
        /**
         *  The ButtonBarButtonItemRenderer class handles the display of each 
item for the 
@@ -63,10 +65,13 @@ package org.apache.flex.html.supportClasses
                /**
                 * @private
                 */
-               private function handleClickEvent(event:Event):void
+               private function handleClickEvent(event:MouseEvent):void
                {
-                       var parent:Object = itemRendererParent;
-                       (parent as UIBase).dispatchEvent(new Event("selected", 
this));
+                       var newEvent:ItemClickedEvent = new 
ItemClickedEvent("itemClicked");
+                       newEvent.multipleSelection = event.shiftKey;
+                       newEvent.index = index;
+                       newEvent.data = data;
+                       dispatchEvent(newEvent);
                }
                
                /**
@@ -102,6 +107,9 @@ package org.apache.flex.html.supportClasses
                        var added:Boolean = false;
                        if (textButton == null) {
                                textButton = new TextButton();
+                               
+                               // listen for clicks on the button and 
translate them into
+                               // an itemClicked event.
                                
textButton.addEventListener('click',handleClickEvent);
                                added = true;
                        }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/0d5a4c8e/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/DataGroup.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/DataGroup.as
 
b/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/DataGroup.as
index c156a6f..15b6587 100644
--- 
a/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/DataGroup.as
+++ 
b/frameworks/projects/HTML/as/src/org/apache/flex/html/supportClasses/DataGroup.as
@@ -22,10 +22,14 @@ package org.apache.flex.html.supportClasses
     import org.apache.flex.core.IItemRenderer;
     import org.apache.flex.core.IItemRendererParent;
        import org.apache.flex.core.IRollOverModel;
+       import org.apache.flex.core.ISelectionModel;
        import org.apache.flex.core.IStrand;
     import org.apache.flex.core.UIBase;
        import org.apache.flex.events.IEventDispatcher;
        import org.apache.flex.events.Event;
+       import org.apache.flex.events.ItemAddedEvent;
+       import org.apache.flex.events.ItemClickedEvent;
+       import org.apache.flex.events.ItemRemovedEvent;
 
     /**
      *  The DataGroup class is the IItemRendererParent used internally
@@ -58,59 +62,25 @@ package org.apache.flex.html.supportClasses
                {
                        super.addElement(c, dispatchEvent);
                        
-                       var dispatcher:IEventDispatcher = c as IEventDispatcher;
-                       dispatcher.addEventListener("itemRendererRollOver", 
handleRollOver);
-                       dispatcher.addEventListener("itemRendererRollOut", 
handleRollOut);
+                       var newEvent:ItemAddedEvent = new 
ItemAddedEvent("itemAdded");
+                       newEvent.item = c;
+                       
+                       var strand:IEventDispatcher = parent as 
IEventDispatcher;
+                       strand.dispatchEvent(newEvent);
                }
                
                /**
                 * @private
                 */
                override public function removeElement(c:Object, 
dispatchEvent:Boolean = true):void
-               {
-                       var dispatcher:IEventDispatcher = c as IEventDispatcher;
-                       dispatcher.removeEventListener("itemRendererRollOver", 
handleRollOver);
-                       dispatcher.removeEventListener("itemRendererRollOut", 
handleRollOut);
-                       
+               {       
                        super.removeElement(c, dispatchEvent);
-               }
-               
-               /**
-                * @private
-                */
-               private function handleRollOver(event:Event):void
-               {
-                       var strand:IStrand = parent as IStrand;
-                       var rollModel:IRollOverModel = 
strand.getBeadByType(IRollOverModel) as IRollOverModel;
-                       if (rollModel) {
-                               var n:int = numElements;
-                               for (var i:int=0; i < n; i++) {
-                                       var renderer:Object = getElementAt(i);
-                                       if (renderer == event.currentTarget) {
-                                               rollModel.rollOverIndex = i;
-                                               break;
-                                       }
-                               }
-                       }
-               }
-               
-               /**
-                * @private
-                */
-               private function handleRollOut(event:Event):void
-               {
-                       var strand:IStrand = parent as IStrand;
-                       var rollModel:IRollOverModel = 
strand.getBeadByType(IRollOverModel) as IRollOverModel;
-                       if (rollModel) {
-                               var n:int = numElements;
-                               for (var i:int=0; i < n; i++) {
-                                       var renderer:Object = getElementAt(i);
-                                       if (renderer == event.currentTarget) {
-                                               rollModel.rollOverIndex = -1;
-                                               break;
-                                       }
-                               }
-                       }
+                       
+                       var newEvent:ItemRemovedEvent = new 
ItemRemovedEvent("itemRemoved");
+                       newEvent.item = c;
+                       
+                       var strand:IEventDispatcher = parent as 
IEventDispatcher;
+                       strand.dispatchEvent(newEvent);
                }
 
         /**

Reply via email to