You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ha...@apache.org on 2020/01/01 20:07:34 UTC

[royale-asjs] branch feature/bead-base updated: got rid of more dispatchEvents

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

harbs pushed a commit to branch feature/bead-base
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/feature/bead-base by this push:
     new 0a8260f  got rid of more dispatchEvents
0a8260f is described below

commit 0a8260f0f99c6aa65ed75655726603f6e06fd8a0
Author: Harbs <ha...@in-tools.com>
AuthorDate: Wed Jan 1 22:07:18 2020 +0200

    got rid of more dispatchEvents
---
 .../royale/org/apache/royale/core/GroupBase.as     |   7 +-
 .../org/apache/royale/html/beads/AlertView.as      |   7 +-
 .../CollectionChangeUpdateForArrayListData.as      |   3 +-
 .../apache/royale/html/beads/DataContainerView.as  |  11 +-
 .../beads/DataGridColumnForceChangePropagator.as   |   3 +-
 .../royale/html/beads/DataGridPercentageView.as    |  41 +++---
 .../org/apache/royale/html/beads/DataGridView.as   |  15 ++-
 .../beads/DataItemRendererFactoryForArrayData.as   |   6 +-
 .../beads/DataItemRendererFactoryForArrayList.as   |   6 +-
 .../AccordionItemRendererMouseController.as        |   7 +-
 .../controllers/ButtonAutoRepeatController.as      |   5 +-
 .../html/beads/controllers/ComboBoxController.as   |   3 +-
 .../beads/controllers/DateFieldMouseController.as  |   3 +-
 .../beads/controllers/DropDownListController.as    |   3 +-
 .../beads/controllers/HScrollBarMouseController.as |   7 +-
 .../beads/controllers/HSliderMouseController.as    |  13 +-
 .../controllers/ItemRendererMouseController.as     |  45 ++++---
 .../ListMultiSelectionMouseController.as           |   3 +-
 .../ListSingleSelectionMouseController.as          | 145 +++++++++++----------
 .../beads/controllers/MenuBarMouseController.as    |   3 +-
 .../controllers/MenuSelectionMouseController.as    |  37 +++---
 .../MultiSelectionItemRendererMouseController.as   |  19 +--
 .../controllers/ScrollBarMouseControllerBase.as    |   5 +-
 .../beads/controllers/SpinnerMouseController.as    |   5 +-
 .../beads/controllers/VScrollBarMouseController.as |   7 +-
 .../beads/controllers/VSliderMouseController.as    |  13 +-
 26 files changed, 219 insertions(+), 203 deletions(-)

diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/GroupBase.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/GroupBase.as
index fc0595d..5c91d86 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/GroupBase.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/GroupBase.as
@@ -29,16 +29,11 @@ package org.apache.royale.core
 	import org.apache.royale.events.ValueChangeEvent;
     import org.apache.royale.events.ValueEvent;
 	import org.apache.royale.utils.loadBeadFromValuesManager;
+    import org.apache.royale.utils.sendEvent;
 
     COMPILE::JS
     {
         import org.apache.royale.html.util.addElementToWrapper;
-        import org.apache.royale.utils.sendEvent;
-        import org.apache.royale.utils.sendEvent;
-        import org.apache.royale.utils.sendEvent;
-        import org.apache.royale.utils.sendEvent;
-        import org.apache.royale.utils.sendEvent;
-        import org.apache.royale.utils.sendEvent;
     }
 
     /**
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/AlertView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/AlertView.as
index 397e641..baf9ad8 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/AlertView.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/AlertView.as
@@ -40,6 +40,8 @@ package org.apache.royale.html.beads
 	import org.apache.royale.html.Label;
 	import org.apache.royale.html.TextButton;
 	import org.apache.royale.html.TitleBar;
+	import org.apache.royale.utils.sendStrandEvent;
+	import org.apache.royale.utils.sendEvent;
 
 	COMPILE::SWF
 	{
@@ -53,7 +55,6 @@ package org.apache.royale.html.beads
 	COMPILE::JS
 	{
 		import org.apache.royale.utils.html.getStyle;
-		import org.apache.royale.utils.sendStrandEvent;
 	}
 	
 	/**
@@ -277,7 +278,7 @@ package org.apache.royale.html.beads
 				titleBar.x = 0;
 				titleBar.y = 0;
 				titleBar.width = maxWidth;
-				titleBar.dispatchEvent(new Event("layoutNeeded"));
+				sendEvent(titleBar,"layoutNeeded");
 			}
 
 			// content placement here
@@ -288,7 +289,7 @@ package org.apache.royale.html.beads
 			controlBar.x = 0;
 			controlBar.y = titleBarHeight + label.y + label.height + metrics.bottom;
 			controlBar.width = maxWidth;
-			controlBar.dispatchEvent(new Event("layoutNeeded"));
+			sendEvent(controlBar,"layoutNeeded");
 			
 			UIBase(_strand).width = maxWidth;
 			UIBase(_strand).height = titleBarHeight + label.height + controlBar.height + metrics.top + metrics.bottom;
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CollectionChangeUpdateForArrayListData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CollectionChangeUpdateForArrayListData.as
index fadd32a..2f1aab0 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CollectionChangeUpdateForArrayListData.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CollectionChangeUpdateForArrayListData.as
@@ -25,6 +25,7 @@ package org.apache.royale.html.beads
 	import org.apache.royale.events.CollectionEvent;
 	import org.apache.royale.events.Event;
 	import org.apache.royale.events.IEventDispatcher;
+	import org.apache.royale.utils.sendBeadEvent;
 
 
     /**
@@ -126,7 +127,7 @@ package org.apache.royale.html.beads
 		{
 			ignoreDPChange = true;
 			//simulate a dataProvider change (full renderer refresh)
-			_dataProviderModel.dispatchEvent(new Event('dataProviderChanged'));
+			sendBeadEvent(_dataProviderModel,"dataProviderChanged");
 			ignoreDPChange = false;
 		}
 
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataContainerView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataContainerView.as
index e4fa1fa..1bb792c 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataContainerView.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataContainerView.as
@@ -44,6 +44,7 @@ package org.apache.royale.html.beads
 	import org.apache.royale.events.Event;
 	import org.apache.royale.html.supportClasses.DataItemRenderer;
 	import org.apache.royale.utils.loadBeadFromValuesManager;
+	import org.apache.royale.utils.sendStrandEvent;
 
 	/**
 	 *  The DataContainerView provides the visual elements for the DataContainer.
@@ -112,7 +113,7 @@ package org.apache.royale.html.beads
 		protected function itemsCreatedHandler(event:Event):void
 		{
 			// trace("DataContainerView: itemsCreatedHandler");
-			host.dispatchEvent(new Event("layoutNeeded"));
+            sendStrandEvent(_strand,"layoutNeeded");
 		}
 		
 		/**
@@ -121,7 +122,7 @@ package org.apache.royale.html.beads
 		protected function dataProviderChangeHandler(event:Event):void
 		{
 			// trace("DataContainerView: dataProviderChangeHandler");
-            host.dispatchEvent(new Event("layoutNeeded"));                
+            sendStrandEvent(_strand,"layoutNeeded");
 		}
         
         /**
@@ -189,8 +190,7 @@ package org.apache.royale.html.beads
         {
             var newEvent:ItemAddedEvent = new ItemAddedEvent("itemAdded");
             newEvent.item = renderer;
-            
-            host.dispatchEvent(newEvent);
+            sendStrandEvent(_strand,newEvent);
         }
         
         /**
@@ -209,8 +209,7 @@ package org.apache.royale.html.beads
             
             var newEvent:ItemRemovedEvent = new ItemRemovedEvent("itemRemoved");
             newEvent.item = renderer;
-            
-            host.dispatchEvent(newEvent);
+            sendStrandEvent(_strand,newEvent);
         }
         
         /**
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridColumnForceChangePropagator.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridColumnForceChangePropagator.as
index 28403ef..5b1c55c 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridColumnForceChangePropagator.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridColumnForceChangePropagator.as
@@ -31,6 +31,7 @@ package org.apache.royale.html.beads
 	import org.apache.royale.html.supportClasses.DataGridColumn;
 	import org.apache.royale.html.beads.IDataGridView;
 	import org.apache.royale.core.IStrand;
+	import org.apache.royale.utils.sendBeadEvent;
 	/**
 	 *  The DataGridColumnForceChangePropagator picks up the dataProviderChanged event
 	 *  and lets the data grid columns know about it, whether or not the data provider object was changed.
@@ -71,7 +72,7 @@ package org.apache.royale.html.beads
 					listModel.dataProvider = sharedModel.dataProvider;
 				} else
 				{
-					(listModel as IEventDispatcher).dispatchEvent(new Event('dataProviderChanged'));
+					sendBeadEvent(listModel,'dataProviderChanged');
 				}
 			}
 		}
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridPercentageView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridPercentageView.as
index 0bf5ce7..a4a8cf5 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridPercentageView.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridPercentageView.as
@@ -24,6 +24,7 @@ package org.apache.royale.html.beads
 	import org.apache.royale.html.DataGridButtonBar;
 	import org.apache.royale.html.beads.models.ButtonBarModel;
 	import org.apache.royale.html.supportClasses.IDataGridColumn;
+	import org.apache.royale.utils.sendEvent;
 
 	/**
 	 *  The DataGridPercentageView class is the visual bead for the org.apache.royale.html.DataGrid.
@@ -52,38 +53,38 @@ package org.apache.royale.html.beads
 			super();
 		}
 
-        /**
-         * @private
-         */
-        override protected function handleInitComplete(event:Event):void
+		/**
+		 * @private
+		 */
+		override protected function handleInitComplete(event:Event):void
 		{
 			super.handleInitComplete(event);
 
-            if (columnLists)
+			if (columnLists)
 			{
-                var host:UIBase = _strand as UIBase;
-                var sharedModel:IDataGridModel = host.model as IDataGridModel;
+				var host:UIBase = _strand as UIBase;
+				var sharedModel:IDataGridModel = host.model as IDataGridModel;
 				var columnListCount:int = sharedModel.columns.length;
-                var buttonWidths:Array = [];
+				var buttonWidths:Array = [];
 
 				for (var i:int = 0; i < columnListCount; i++)
 				{
-                    var dgc:IDataGridColumn = sharedModel.columns[i] as IDataGridColumn;
-                    var colWidth:Number = dgc.columnWidth;
-                    buttonWidths.push(colWidth);
+					var dgc:IDataGridColumn = sharedModel.columns[i] as IDataGridColumn;
+					var colWidth:Number = dgc.columnWidth;
+					buttonWidths.push(colWidth);
 
-                    var list:UIBase = columnLists[i] as UIBase;
-                    if (!isNaN(dgc.columnWidth))
-                    {
+					var list:UIBase = columnLists[i] as UIBase;
+					if (!isNaN(dgc.columnWidth))
+					{
 						list.width = NaN;
-                        list.percentWidth = Number(colWidth);
-                    }
+						list.percentWidth = Number(colWidth);
+					}
 				}
 
-                var dgButtonBar:DataGridButtonBar = header as DataGridButtonBar;
-                dgButtonBar.buttonWidths = buttonWidths;
-                dgButtonBar.widthType = ButtonBarModel.PERCENT_WIDTHS;
-				dgButtonBar.dispatchEvent(new Event("layoutNeeded"));
+				var dgButtonBar:DataGridButtonBar = header as DataGridButtonBar;
+				dgButtonBar.buttonWidths = buttonWidths;
+				dgButtonBar.widthType = ButtonBarModel.PERCENT_WIDTHS;
+				sendEvent(dgButtonBar,"layoutNeeded");
 			}
 		}
 	}
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridView.as
index 597559c..9ee56e7 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridView.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataGridView.as
@@ -38,6 +38,8 @@ package org.apache.royale.html.beads
 	import org.apache.royale.html.supportClasses.IDataGridColumnList;
 	import org.apache.royale.html.supportClasses.IDataGridColumn;
 	import org.apache.royale.html.supportClasses.Viewport;
+	import org.apache.royale.utils.sendStrandEvent;
+	import org.apache.royale.utils.sendEvent;
 
 		/**
 		 *  The DataGridView class is the visual bead for the org.apache.royale.html.DataGrid.
@@ -150,8 +152,7 @@ package org.apache.royale.html.beads
 
 				host.addEventListener("widthChanged", handleSizeChanges);
 				host.addEventListener("heightChanged", handleSizeChanges);
-
-				host.dispatchEvent(new Event("dataGridViewCreated"));
+				sendStrandEvent(_strand,"dataGridViewCreated");
 			}
 
 			/**
@@ -159,8 +160,8 @@ package org.apache.royale.html.beads
 			 */
 			private function handleSizeChanges(event:Event):void
 			{
-				_header.dispatchEvent(new Event("layoutChanged"));
-				_listArea.dispatchEvent(new Event("layoutChanged"));
+				sendEvent(_header,"layoutChanged");
+				sendEvent(_listArea,"layoutChanged");
 			}
 
 			/**
@@ -174,7 +175,7 @@ package org.apache.royale.html.beads
                     var list:IDataGridColumnList = _lists[i] as IDataGridColumnList;
                     list.dataProvider = sharedModel.dataProvider;
                 }
-				host.dispatchEvent(new Event("layoutNeeded"));
+				sendStrandEvent(_strand,"layoutNeeded");
 			}
 
 			/**
@@ -212,7 +213,7 @@ package org.apache.royale.html.beads
 					}
 				}
 
-				host.dispatchEvent(new Event('change'));
+				sendStrandEvent(_strand,'change');
 			}
 
 			/**
@@ -270,7 +271,7 @@ package org.apache.royale.html.beads
 					_lists.push(list);
 				}
 
-				host.dispatchEvent(new Event("layoutNeeded"));
+				sendStrandEvent(_strand,"layoutNeeded");
 			}
 		}
 }
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayData.as
index 90ce86c..d6441d1 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayData.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayData.as
@@ -43,6 +43,8 @@ package org.apache.royale.html.beads
 	import org.apache.royale.core.IParentIUIBase;
     import org.apache.royale.html.supportClasses.DataItemRenderer;
 	import org.apache.royale.utils.loadBeadFromValuesManager;
+	import org.apache.royale.utils.sendEvent;
+	import org.apache.royale.utils.sendStrandEvent;
 
     [Event(name="itemRendererCreated",type="org.apache.royale.events.ItemRendererEvent")]
 	
@@ -205,10 +207,10 @@ package org.apache.royale.html.beads
 				
 				var newEvent:ItemRendererEvent = new ItemRendererEvent(ItemRendererEvent.CREATED);
 				newEvent.itemRenderer = ir;
-				dispatchEvent(newEvent);
+				sendEvent(this,newEvent);
 			}
 			
-			IEventDispatcher(_strand).dispatchEvent(new Event("itemsCreated"));
+			sendStrandEvent(_strand,"itemsCreated");
 		}
 	}
 }
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayList.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayList.as
index 02e6cd0..088669d 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayList.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataItemRendererFactoryForArrayList.as
@@ -38,6 +38,8 @@ package org.apache.royale.html.beads
 	import org.apache.royale.utils.loadBeadFromValuesManager;
 
     import org.apache.royale.html.beads.IListView;
+    import org.apache.royale.utils.sendEvent;
+    import org.apache.royale.utils.sendStrandEvent;
 	
 	[Event(name="itemRendererCreated",type="org.apache.royale.events.ItemRendererEvent")]
 	
@@ -189,10 +191,10 @@ package org.apache.royale.html.beads
 
 				var newEvent:ItemRendererEvent = new ItemRendererEvent(ItemRendererEvent.CREATED);
 				newEvent.itemRenderer = ir;
-				dispatchEvent(newEvent);
+				sendEvent(this,newEvent);
 			}
 
-			IEventDispatcher(_strand).dispatchEvent(new Event("itemsCreated"));
+			sendStrandEvent(_strand,"itemsCreated");
 		}
 	}
 }
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/AccordionItemRendererMouseController.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/AccordionItemRendererMouseController.as
index eea497f..3226be6 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/AccordionItemRendererMouseController.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/AccordionItemRendererMouseController.as
@@ -24,6 +24,7 @@ package org.apache.royale.html.beads.controllers
 	import org.apache.royale.events.ItemClickedEvent;
 	import org.apache.royale.events.MouseEvent;
 	import org.apache.royale.html.supportClasses.AccordionItemRenderer;
+	import org.apache.royale.utils.sendEvent;
 	
 	public class AccordionItemRendererMouseController implements IBeadController
 	{
@@ -54,8 +55,7 @@ package org.apache.royale.html.beads.controllers
 		protected function titleRollHandler(event:MouseEvent):void
 		{
 			var type:String = event.type == MouseEvent.ROLL_OVER ? "itemRollOver" : "itemRollOut";
-			var newEvent:Event = new Event(type);
-			accordionItemRenderer.dispatchEvent(newEvent);
+			sendEvent(accordionItemRenderer,type);
 		}
 		
 		protected function titleBarClickHandler(event:MouseEvent):void
@@ -63,8 +63,7 @@ package org.apache.royale.html.beads.controllers
 			var newEvent:ItemClickedEvent = new ItemClickedEvent("itemClicked");
 			newEvent.data = accordionItemRenderer.data;
 			newEvent.index = accordionItemRenderer.index;
-			
-			accordionItemRenderer.dispatchEvent(newEvent);
+			sendEvent(accordionItemRenderer,newEvent);
 		}
 	}
 }
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ButtonAutoRepeatController.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ButtonAutoRepeatController.as
index 5141b42..46ecc76 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ButtonAutoRepeatController.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ButtonAutoRepeatController.as
@@ -29,6 +29,7 @@ package org.apache.royale.html.beads.controllers
 	import org.apache.royale.events.Event;
     import org.apache.royale.events.MouseEvent;
 	import org.apache.royale.events.IEventDispatcher;
+	import org.apache.royale.utils.sendStrandEvent;
 
     /**
      *  The ButtonAutoRepeatController class adds autorepeat
@@ -136,12 +137,12 @@ package org.apache.royale.html.beads.controllers
             clearTimeout(timeout);
             timeout = 0;
         	repeater = setInterval(sendRepeats, interval);
-        	IEventDispatcher(_strand).dispatchEvent(new Event("buttonRepeat"));
+            sendStrandEvent(_strand,"buttonRepeat");
         }
         
         private function sendRepeats():void
         {
-       	    IEventDispatcher(_strand).dispatchEvent(new Event("buttonRepeat"));
+            sendStrandEvent(_strand,"buttonRepeat");
         }
 	}
 }
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ComboBoxController.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ComboBoxController.as
index 6327902..3130e16 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ComboBoxController.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ComboBoxController.as
@@ -28,6 +28,7 @@ package org.apache.royale.html.beads.controllers
 	import org.apache.royale.html.TextInput;
 	import org.apache.royale.html.List;
 	import org.apache.royale.html.beads.IComboBoxView;
+	import org.apache.royale.utils.sendStrandEvent;
 	
 	public class ComboBoxController implements IBeadController
 	{
@@ -71,7 +72,7 @@ package org.apache.royale.html.beads.controllers
 		{
 			viewBead.popUpVisible = false;
 			
-			IEventDispatcher(_strand).dispatchEvent(new Event("change"));
+			sendStrandEvent(_strand,"change");
 		}
 	}
 }
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
index 37043a8..f3ed8b2 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
@@ -29,6 +29,7 @@ package org.apache.royale.html.beads.controllers
 	import org.apache.royale.html.beads.DateFieldView;
     import org.apache.royale.utils.Timer;
     import org.apache.royale.utils.UIUtils;
+    import org.apache.royale.utils.sendStrandEvent;
 	
 	/**
 	 * The DateFieldMouseController class is responsible for monitoring
@@ -127,7 +128,7 @@ package org.apache.royale.html.beads.controllers
 			model.selectedDate = IDateChooserModel(viewBead.popUp.getBeadByType(IDateChooserModel)).selectedDate;
 
 			viewBead.popUpVisible = false;
-			IEventDispatcher(_strand).dispatchEvent(new Event("change"));
+			sendStrandEvent(_strand,"change");
             
             removeDismissHandler();
 		}
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DropDownListController.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DropDownListController.as
index a3dbefb..2ccab69 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DropDownListController.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DropDownListController.as
@@ -31,6 +31,7 @@ package org.apache.royale.html.beads.controllers
 	import org.apache.royale.events.IEventDispatcher;
 	import org.apache.royale.events.MouseEvent;
 	import org.apache.royale.html.beads.IDropDownListView;
+	import org.apache.royale.utils.sendStrandEvent;
 
     /**
      *  The DropDownListController class is the controller for
@@ -110,7 +111,7 @@ package org.apache.royale.html.beads.controllers
             var selectionModel:ISelectionModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel;
             var popUpModel:ISelectionModel = UIBase(viewBead.popUp).model as ISelectionModel;
             selectionModel.selectedIndex = popUpModel.selectedIndex;
-			IEventDispatcher(_strand).dispatchEvent(new Event("change"));
+			sendStrandEvent(_strand,"change");
         }
 	
 	}
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/HScrollBarMouseController.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/HScrollBarMouseController.as
index f76a8a4..4a0e36e 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/HScrollBarMouseController.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/HScrollBarMouseController.as
@@ -23,6 +23,7 @@ package org.apache.royale.html.beads.controllers
 	import org.apache.royale.events.Event;
     import org.apache.royale.events.MouseEvent;
 	import org.apache.royale.events.IEventDispatcher;
+	import org.apache.royale.utils.sendStrandEvent;
 	
     /**
      *  The HScrollBarMouseController class is the controller for
@@ -58,12 +59,12 @@ package org.apache.royale.html.beads.controllers
 				if (event.localX < sbView.thumb.x)
 				{
 					sbModel.value = snap(Math.max(sbModel.minimum, sbModel.value - sbModel.pageStepSize));						
-					IEventDispatcher(strand).dispatchEvent(new Event("scroll"));
+					sendStrandEvent(strand,"scroll");
 				}
 				else
 				{
 					sbModel.value = snap(Math.min(sbModel.maximum - sbModel.pageSize, sbModel.value + sbModel.pageStepSize));
-					IEventDispatcher(strand).dispatchEvent(new Event("scroll"));
+					sendStrandEvent(strand,"scroll");
 				}
 			}
 		}
@@ -89,7 +90,7 @@ package org.apache.royale.html.beads.controllers
 			thumb.x = Math.max(track.x, Math.min(lastThumbX + (event.screenX - thumbDownX), track.x + track.width - thumb.width));
 			var newValue:Number = snap((thumb.x - track.x) / (track.width - thumb.width) * (sbModel.maximum - sbModel.minimum - sbModel.pageSize));
 			sbModel.value = newValue;
-			IEventDispatcher(strand).dispatchEvent(new Event("scroll"));
+			sendStrandEvent(strand,"scroll");
 		}
 		
 		private function thumbMouseUpHandler(event:MouseEvent):void
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/HSliderMouseController.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/HSliderMouseController.as
index 7bb52b3..7633f45 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/HSliderMouseController.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/HSliderMouseController.as
@@ -30,6 +30,7 @@ package org.apache.royale.html.beads.controllers
 	import org.apache.royale.events.ValueChangeEvent;
 	import org.apache.royale.geom.Point;
 	import org.apache.royale.html.beads.ISliderView;
+	import org.apache.royale.utils.sendStrandEvent;
 
     COMPILE::JS
     {
@@ -141,7 +142,7 @@ package org.apache.royale.html.beads.controllers
 			UIBase(_strand).topMostEventDispatcher.removeEventListener(MouseEvent.MOUSE_UP, thumbUpHandler);
 			
 			var vce:ValueChangeEvent = ValueChangeEvent.createUpdateEvent(_strand, "value", oldValue, rangeModel.value);
-			IEventDispatcher(_strand).dispatchEvent(vce);
+			sendStrandEvent(_strand,vce);
 		}
 		
         COMPILE::SWF
@@ -167,7 +168,7 @@ package org.apache.royale.html.beads.controllers
 			var vce:ValueChangeEvent = ValueChangeEvent.createUpdateEvent(_strand, "value", rangeModel.value, n);
 			rangeModel.value = n;
 			
-			IEventDispatcher(_strand).dispatchEvent(vce);
+			sendStrandEvent(_strand,vce);
 		}
 		
 		/**
@@ -187,7 +188,7 @@ package org.apache.royale.html.beads.controllers
 			var vce:ValueChangeEvent = ValueChangeEvent.createUpdateEvent(_strand, "value", rangeModel.value, n);
 			rangeModel.value = n;
 			
-			IEventDispatcher(_strand).dispatchEvent(vce);
+			sendStrandEvent(_strand,vce);
 		}
         
         /**
@@ -206,7 +207,7 @@ package org.apache.royale.html.beads.controllers
 			var vce:ValueChangeEvent = ValueChangeEvent.createUpdateEvent(_strand, "value", rangeModel.value, n);
             rangeModel.value = n;
             
-            host.dispatchEvent(vce);
+            sendStrandEvent(_strand,vce);
         }
         
         
@@ -253,7 +254,7 @@ package org.apache.royale.html.beads.controllers
             calcValFromMousePosition(bevent, false);
             var vce:ValueChangeEvent = ValueChangeEvent.createUpdateEvent(_strand, "value", oldValue, rangeModel.value);
             
-            host.dispatchEvent(vce);
+            sendStrandEvent(_strand,vce);
         }
         
         
@@ -270,7 +271,7 @@ package org.apache.royale.html.beads.controllers
             
             var vce:ValueChangeEvent = ValueChangeEvent.createUpdateEvent(_strand, "value", lastValue, rangeModel.value);
             
-            host.dispatchEvent(vce);
+            sendStrandEvent(_strand,vce);
         }
 		
 		COMPILE::JS
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ItemRendererMouseController.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ItemRendererMouseController.as
index 1da2806..7fb3faf 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ItemRendererMouseController.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ItemRendererMouseController.as
@@ -31,9 +31,10 @@ COMPILE::JS {
 	import org.apache.royale.events.BrowserEvent;
 	import goog.events.Event;
 	import goog.events.EventType;
-    import goog.events;
+	import goog.events;
 }
 	import org.apache.royale.events.ItemClickedEvent;
+	import org.apache.royale.utils.sendEvent;
 
 	/**
 	 *  The ItemRendererMouseController class can mouse events in itemRenderers. This
@@ -60,7 +61,7 @@ COMPILE::JS {
 		{
 		}
 		
-        private var renderer:ISelectableItemRenderer;
+		private var renderer:ISelectableItemRenderer;
 		private var _strand:IStrand;
 		
 		/**
@@ -76,11 +77,11 @@ COMPILE::JS {
 		public function set strand(value:IStrand):void
 		{
 			_strand = value;
-            renderer = value as ISelectableItemRenderer;
+			renderer = value as ISelectableItemRenderer;
 			
 			COMPILE::SWF {
-	            renderer.addEventListener(MouseEvent.ROLL_OVER, rollOverHandler);
-	            renderer.addEventListener(MouseEvent.ROLL_OUT, rollOutHandler);
+				renderer.addEventListener(MouseEvent.ROLL_OVER, rollOverHandler);
+				renderer.addEventListener(MouseEvent.ROLL_OUT, rollOutHandler);
 				renderer.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
 				renderer.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
 			}
@@ -92,7 +93,7 @@ COMPILE::JS {
 				goog.events.listen(element, goog.events.EventType.MOUSEOUT, this.handleMouseOut);
 				goog.events.listen(element, goog.events.EventType.MOUSEDOWN, this.handleMouseDown);
 				goog.events.listen(element, goog.events.EventType.CLICK, this.handleMouseClick);
-                goog.events.listen(element, goog.events.EventType.MOUSEUP, this.handleMouseUp);
+				goog.events.listen(element, goog.events.EventType.MOUSEUP, this.handleMouseUp);
 			}
 		}
 		
@@ -105,7 +106,7 @@ COMPILE::JS {
 			var target:ISelectableItemRenderer = event.currentTarget as ISelectableItemRenderer;
 			if (target)
 			{
-				target.dispatchEvent(new Event("itemRollOver",true));
+				sendEvent(target,new Event("itemRollOver",true));
 			}
 		}
 		
@@ -117,7 +118,7 @@ COMPILE::JS {
 		{
 			var target:ISelectableItemRenderer = event.currentTarget as ISelectableItemRenderer;
 			if (target) {
-				target.dispatchEvent(new Event("itemRollOver",true));
+				sendEvent(target,new Event("itemRollOver",true));
 			}
 		}
 		
@@ -130,7 +131,7 @@ COMPILE::JS {
 			var target:ISelectableItemRenderer = event.currentTarget as ISelectableItemRenderer;
 			if (target)
 			{
-				target.dispatchEvent(new Event("itemRollOut",true));
+				sendEvent(target,new Event("itemRollOut",true));
 			}
 		}
 		
@@ -143,7 +144,7 @@ COMPILE::JS {
 			var target:ISelectableItemRenderer = event.currentTarget as ISelectableItemRenderer;
 			if (target)
 			{
-				target.dispatchEvent(new Event("itemRollOut",true));
+				sendEvent(target,new Event("itemRollOut",true));
 			}
 		}
 
@@ -156,13 +157,12 @@ COMPILE::JS {
 			var target:ISelectableItemRenderer = event.currentTarget as ISelectableItemRenderer;
 			if (target)
 			{
-                target.down = true;
-                
-                var newEvent:ItemClickedEvent = new ItemClickedEvent("itemMouseDown");
-                newEvent.data = target.data;
-                newEvent.index = target.index;
-                
-                target.dispatchEvent(newEvent);
+				target.down = true;
+				
+				var newEvent:ItemClickedEvent = new ItemClickedEvent("itemMouseDown");
+				newEvent.data = target.data;
+				newEvent.index = target.index;
+				sendEvent(target,newEvent);
 				target.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
 			}
 		}
@@ -183,8 +183,7 @@ COMPILE::JS {
 				var newEvent:ItemClickedEvent = new ItemClickedEvent("itemMouseDown");
 				newEvent.data = target.data;
 				newEvent.index = target.index;
-
-				target.dispatchEvent(newEvent);
+				sendEvent(target,newEvent);
 			}
 		}
 		
@@ -202,8 +201,8 @@ COMPILE::JS {
 				newEvent.data = target.data;
 				newEvent.index = target.index;
 				
-                target.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);                
-				target.dispatchEvent(newEvent);
+				target.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
+				sendEvent(target,newEvent);
 			}			
 		}
 		
@@ -221,7 +220,7 @@ COMPILE::JS {
 				newEvent.data = target.data;
 				newEvent.index = target.index;
 
-				target.dispatchEvent(newEvent);
+				sendEvent(target,newEvent);
 			}
 		}
 
@@ -239,7 +238,7 @@ COMPILE::JS {
 				newEvent.data = target.data;
 				newEvent.index = target.index;
 
-				target.dispatchEvent(newEvent);
+				sendEvent(target,newEvent);
 			}
 		}
 
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListMultiSelectionMouseController.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListMultiSelectionMouseController.as
index 4ccfcc3..24f8b69 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListMultiSelectionMouseController.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListMultiSelectionMouseController.as
@@ -32,6 +32,7 @@ package org.apache.royale.html.beads.controllers
 	import org.apache.royale.html.beads.IListView;
 
 	import org.apache.royale.events.MultiSelectionItemClickedEvent;
+	import org.apache.royale.utils.sendEvent;
 
 	/**
 	 *  The ListMultiSelectionMouseController class is a controller for
@@ -165,7 +166,7 @@ package org.apache.royale.html.beads.controllers
 				}
 			}
 			listModel.selectedIndices = newIndices;
-			listView.host.dispatchEvent(new Event("change"));
+			sendEvent(listView.host,"change");
 		}
 
 		private function getMin(value:Array):int
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListSingleSelectionMouseController.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListSingleSelectionMouseController.as
index 7141390..b00f802 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListSingleSelectionMouseController.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ListSingleSelectionMouseController.as
@@ -31,77 +31,78 @@ package org.apache.royale.html.beads.controllers
 	import org.apache.royale.events.ItemClickedEvent;
 	import org.apache.royale.events.ItemRemovedEvent;
 	import org.apache.royale.html.beads.IListView;
+	import org.apache.royale.utils.sendEvent;
 
-    /**
-     *  The ListSingleSelectionMouseController class is a controller for
-     *  org.apache.royale.html.List.  Controllers
-     *  watch for events from the interactive portions of a View and
-     *  update the data model or dispatch a semantic event.
-     *  This controller watches for events from the item renderers
-     *  and updates an ISelectionModel (which only supports single
-     *  selection).  Other controller/model pairs would support
-     *  various kinds of multiple selection.
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10.2
-     *  @playerversion AIR 2.6
-     *  @productversion Royale 0.9
-     */
+	/**
+	 *  The ListSingleSelectionMouseController class is a controller for
+	 *  org.apache.royale.html.List.  Controllers
+	 *  watch for events from the interactive portions of a View and
+	 *  update the data model or dispatch a semantic event.
+	 *  This controller watches for events from the item renderers
+	 *  and updates an ISelectionModel (which only supports single
+	 *  selection).  Other controller/model pairs would support
+	 *  various kinds of multiple selection.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion Royale 0.9
+	 */
 	public class ListSingleSelectionMouseController extends Bead implements IBeadController
 	{
-        /**
-         *  Constructor.
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion Royale 0.9
-         */
+		/**
+		 *  Constructor.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9
+		 */
 		public function ListSingleSelectionMouseController()
 		{
 		}
 		
-        /**
-         *  The model.
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion Royale 0.9
-         */
+		/**
+		 *  The model.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9
+		 */
 		protected var listModel:ISelectionModel;
 
-        /**
-         *  The view.
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion Royale 0.9
-         */
-        protected var listView:IListView;
+		/**
+		 *  The view.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9
+		 */
+		protected var listView:IListView;
 
-        /**
-         *  The parent of the item renderers.
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion Royale 0.9
-         */
-        protected var dataGroup:IItemRendererParent;
+		/**
+		 *  The parent of the item renderers.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9
+		 */
+		protected var dataGroup:IItemRendererParent;
 		
-        /**
-         *  @copy org.apache.royale.core.IBead#strand
-         *  
-         *  @langversion 3.0
-         *  @playerversion Flash 10.2
-         *  @playerversion AIR 2.6
-         *  @productversion Royale 0.9
-         *  @royaleignorecoercion org.apache.royale.core.ISelectionModel
-         *  @royaleignorecoercion org.apache.royale.events.IEventDispatcher
-         *  @royaleignorecoercion org.apache.royale.html.beads.IListView
-         */
+		/**
+		 *  @copy org.apache.royale.core.IBead#strand
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9
+		 *  @royaleignorecoercion org.apache.royale.core.ISelectionModel
+		 *  @royaleignorecoercion org.apache.royale.events.IEventDispatcher
+		 *  @royaleignorecoercion org.apache.royale.html.beads.IListView
+		 */
 		override public function set strand(value:IStrand):void
 		{
 			_strand = value;
@@ -111,9 +112,9 @@ package org.apache.royale.html.beads.controllers
 			listenOnStrand("itemRemoved", handleItemRemoved);
 		}
 		
-        /**
-         * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
-         */
+		/**
+		 * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
+		 */
 		protected function handleItemAdded(event:ItemAddedEvent):void
 		{
 			IEventDispatcher(event.item).addEventListener("itemClicked", selectedHandler);
@@ -121,9 +122,9 @@ package org.apache.royale.html.beads.controllers
 			IEventDispatcher(event.item).addEventListener("itemRollOut", rolloutHandler);
 		}
 		
-        /**
-         * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
-         */
+		/**
+		 * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
+		 */
 		protected function handleItemRemoved(event:ItemRemovedEvent):void
 		{
 			IEventDispatcher(event.item).removeEventListener("itemClicked", selectedHandler);
@@ -132,15 +133,15 @@ package org.apache.royale.html.beads.controllers
 		}
 		
 		protected function selectedHandler(event:ItemClickedEvent):void
-        {
-            listModel.selectedIndex = event.index;
+		{
+			listModel.selectedIndex = event.index;
 			listModel.selectedItem = event.data;
-            listView.host.dispatchEvent(new Event("change"));
-        }
+            sendEvent(listView.host,"change");
+		}
 		
 		/**
 		 * @royaleemitcoercion org.apache.royale.core.ISelectableItemRenderer
-         * @royaleignorecoercion org.apache.royale.core.IRollOverModel
+		 * @royaleignorecoercion org.apache.royale.core.IRollOverModel
 		 */
 		protected function rolloverHandler(event:Event):void
 		{
@@ -152,7 +153,7 @@ package org.apache.royale.html.beads.controllers
 		
 		/**
 		 * @royaleemitcoercion org.apache.royale.core.ISelectableItemRenderer
-         * @royaleignorecoercion org.apache.royale.core.IRollOverModel
+		 * @royaleignorecoercion org.apache.royale.core.IRollOverModel
 		 */
 		protected function rolloutHandler(event:Event):void
 		{
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuBarMouseController.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuBarMouseController.as
index 36b6cee..c3b74c9 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuBarMouseController.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuBarMouseController.as
@@ -34,6 +34,7 @@ package org.apache.royale.html.beads.controllers
 	import org.apache.royale.html.MenuBar;
 	import org.apache.royale.utils.UIUtils;
 	import org.apache.royale.utils.loadBeadFromValuesManager;
+	import org.apache.royale.utils.sendEvent;
 
 	/**
 	 * The MenuBarMouseController handles mouse events for the MenuBar. While the menu bar is
@@ -110,7 +111,7 @@ package org.apache.royale.html.beads.controllers
 		{
 			// close any previously open menus
 			var host:UIBase = UIUtils.findPopUpHost(_strand as IUIBase) as UIBase;
-			host.dispatchEvent(new Event("hideMenus"));
+			sendEvent(host,"hideMenus");
 			
 			var component:IUIBase = event.target as IUIBase;
 			
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuSelectionMouseController.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuSelectionMouseController.as
index 02636cf..654d6349 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuSelectionMouseController.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MenuSelectionMouseController.as
@@ -31,6 +31,7 @@ package org.apache.royale.html.beads.controllers
 	import org.apache.royale.events.MouseEvent;
 	import org.apache.royale.html.beads.models.MenuModel;
 	import org.apache.royale.utils.UIUtils;
+	import org.apache.royale.utils.sendEvent;
 	
 	COMPILE::JS {
 		import org.apache.royale.events.BrowserEvent;
@@ -86,9 +87,9 @@ package org.apache.royale.html.beads.controllers
 				window.addEventListener('mouseup', hideMenu_internal, false);
 			}
 		}
-        /**
-         * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
-         */
+		/**
+		 * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
+		 */
 		override protected function handleItemAdded(event:ItemAddedEvent):void
 		{
 			IEventDispatcher(event.item).addEventListener("itemClicked", selectedHandler);
@@ -96,9 +97,9 @@ package org.apache.royale.html.beads.controllers
 			IEventDispatcher(event.item).addEventListener("itemRollOut", rolloutHandler);
 		}
 		
-        /**
-         * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
-         */
+		/**
+		 * @royaleignorecoercion org.apache.royale.events.IEventDispatcher
+		 */
 		override protected function handleItemRemoved(event:ItemRemovedEvent):void
 		{
 			IEventDispatcher(event.item).removeEventListener("itemClicked", selectedHandler);
@@ -121,8 +122,8 @@ package org.apache.royale.html.beads.controllers
 			var node:Object = event.data;
 			
 			list.model.selectedItem = node;
-			menuDispatcher.dispatchEvent(new Event("change"));
-            hideOpenMenus();
+			sendEvent(menuDispatcher,"change");
+			hideOpenMenus();
 		}
 		
 		/**
@@ -149,8 +150,8 @@ package org.apache.royale.html.beads.controllers
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
 		 *  @productversion Royale 0.9
-         *  @royaleignorecoercion org.apache.royale.core.UIBase
-         *  @royaleignorecoercion org.apache.royale.core.IUIBase
+		 *  @royaleignorecoercion org.apache.royale.core.UIBase
+		 *  @royaleignorecoercion org.apache.royale.core.IUIBase
 		 */
 		protected function hideOpenMenus():void
 		{
@@ -193,8 +194,8 @@ package org.apache.royale.html.beads.controllers
 		 *  @playerversion Flash 10.2
 		 *  @playerversion AIR 2.6
 		 *  @productversion Royale 0.9
-         *  @royaleignorecoercion org.apache.royale.core.IUIBase
-         *  @royaleignorecoercion org.apache.royale.events.IEventDispatcher
+		 *  @royaleignorecoercion org.apache.royale.core.IUIBase
+		 *  @royaleignorecoercion org.apache.royale.events.IEventDispatcher
 		 */
 		public function removeClickOutHandler(menu:Object):void
 		{
@@ -222,19 +223,19 @@ package org.apache.royale.html.beads.controllers
 		}
 
 		/**
-         * @royaleignorecoercion HTMLElement
+		 * @royaleignorecoercion HTMLElement
 		 * @royaleignorecoercion org.apache.royale.core.IUIBase
 		 * @private
 		 */
 		COMPILE::JS
 		protected function hideMenu_internal(event:BrowserEvent):void
 		{			
-            var menu:IMenu = _strand as IMenu;
+			var menu:IMenu = _strand as IMenu;
 			var menuElem:HTMLElement = (_strand as IUIBase).element as HTMLElement;
 			var menuBarElement:HTMLElement;
-            if (menu.parentMenuBar)
-            {
-                menuBarElement = (menu.parentMenuBar as IUIBase).element as HTMLElement;
+			if (menu.parentMenuBar)
+			{
+				menuBarElement = (menu.parentMenuBar as IUIBase).element as HTMLElement;
 			}
 			var target:HTMLElement = event.target as HTMLElement;
 			while (target != null)
@@ -244,7 +245,7 @@ package org.apache.royale.html.beads.controllers
 				// if (target == menuElem || (menuBarElement && target == menuBarElement) ) return;
 				target = target.parentNode as HTMLElement;
 			}
-            
+			
 			hideOpenMenus();
 		}
 	}
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MultiSelectionItemRendererMouseController.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MultiSelectionItemRendererMouseController.as
index ec095ee..16491c3 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MultiSelectionItemRendererMouseController.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/MultiSelectionItemRendererMouseController.as
@@ -34,6 +34,7 @@ package org.apache.royale.html.beads.controllers
 		import goog.events;
 	}
 	import org.apache.royale.events.MultiSelectionItemClickedEvent;
+	import org.apache.royale.utils.sendEvent;
 
 	/**
 	 *  The MultiSelectionItemRendererMouseController class can mouse events in itemRenderers. This
@@ -106,7 +107,7 @@ package org.apache.royale.html.beads.controllers
 			var target:ISelectableItemRenderer = event.currentTarget as ISelectableItemRenderer;
 			if (target)
 			{
-				target.dispatchEvent(new Event("itemRollOver",true));
+				sendEvent(target,new Event("itemRollOver",true));
 			}
 		}
 
@@ -118,7 +119,7 @@ package org.apache.royale.html.beads.controllers
 		{
 			var target:ISelectableItemRenderer = event.currentTarget as ISelectableItemRenderer;
 			if (target) {
-				target.dispatchEvent(new Event("itemRollOver",true));
+				sendEvent(target,new Event("itemRollOver",true));
 			}
 		}
 
@@ -131,7 +132,7 @@ package org.apache.royale.html.beads.controllers
 			var target:ISelectableItemRenderer = event.currentTarget as ISelectableItemRenderer;
 			if (target)
 			{
-				target.dispatchEvent(new Event("itemRollOut",true));
+				sendEvent(target,new Event("itemRollOut",true));
 			}
 		}
 
@@ -144,7 +145,7 @@ package org.apache.royale.html.beads.controllers
 			var target:ISelectableItemRenderer = event.currentTarget as ISelectableItemRenderer;
 			if (target)
 			{
-				target.dispatchEvent(new Event("itemRollOut",true));
+				sendEvent(target,new Event("itemRollOut",true));
 			}
 		}
 
@@ -165,7 +166,7 @@ package org.apache.royale.html.beads.controllers
 				newEvent.data = target.data;
 				newEvent.index = target.index;
 
-				target.dispatchEvent(newEvent);
+				sendEvent(target,newEvent);
 				target.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
 			}
 		}
@@ -187,7 +188,7 @@ package org.apache.royale.html.beads.controllers
 				newEvent.data = target.data;
 				newEvent.index = target.index;
 
-				target.dispatchEvent(newEvent);
+				sendEvent(target,newEvent);
 			}
 		}
 
@@ -207,7 +208,7 @@ package org.apache.royale.html.beads.controllers
 				newEvent.data = target.data;
 				newEvent.index = target.index;
 				target.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
-				target.dispatchEvent(newEvent);
+				sendEvent(target,newEvent);
 			}			
 		}
 
@@ -225,7 +226,7 @@ package org.apache.royale.html.beads.controllers
 				newEvent.data = target.data;
 				newEvent.index = target.index;
 
-				target.dispatchEvent(newEvent);
+				sendEvent(target,newEvent);
 			}
 		}
 
@@ -243,7 +244,7 @@ package org.apache.royale.html.beads.controllers
 				newEvent.data = target.data;
 				newEvent.index = target.index;
 
-				target.dispatchEvent(newEvent);
+				sendEvent(target,newEvent);
 			}
 		}
 
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ScrollBarMouseControllerBase.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ScrollBarMouseControllerBase.as
index ae7bc4c..71b2bab 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ScrollBarMouseControllerBase.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ScrollBarMouseControllerBase.as
@@ -25,6 +25,7 @@ package org.apache.royale.html.beads.controllers
 	import org.apache.royale.events.IEventDispatcher;
     import org.apache.royale.events.MouseEvent;
 	import org.apache.royale.html.beads.IScrollBarView;
+	import org.apache.royale.utils.sendStrandEvent;
 
     /**
      *  The ScrollBarMouseControllerBase class is the base class
@@ -138,7 +139,7 @@ package org.apache.royale.html.beads.controllers
 		protected function decrementClickHandler(event:MouseEvent):void
 		{
 			sbModel.value = snap(Math.max(sbModel.minimum, sbModel.value - sbModel.stepSize));
-			IEventDispatcher(_strand).dispatchEvent(new Event("scroll"));
+			sendStrandEvent(_strand,"scroll");
 		}
 		
         /**
@@ -152,7 +153,7 @@ package org.apache.royale.html.beads.controllers
 		protected function incrementClickHandler(event:MouseEvent):void
 		{
 			sbModel.value = snap(Math.min(sbModel.maximum - sbModel.pageSize, sbModel.value + sbModel.stepSize));	
-			IEventDispatcher(_strand).dispatchEvent(new Event("scroll"));
+			sendStrandEvent(_strand,"scroll");
 		}
 		
         /**
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/SpinnerMouseController.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/SpinnerMouseController.as
index e63dc1f..f56c2cc 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/SpinnerMouseController.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/SpinnerMouseController.as
@@ -28,6 +28,7 @@ package org.apache.royale.html.beads.controllers
 	import org.apache.royale.events.ValueChangeEvent;
 	import org.apache.royale.html.TextButton;
 	import org.apache.royale.html.beads.ISpinnerView;
+  import org.apache.royale.utils.sendStrandEvent;
     COMPILE::JS
     {
         import org.apache.royale.html.Spinner;
@@ -116,7 +117,7 @@ package org.apache.royale.html.beads.controllers
 			var oldValue:Number = rangeModel.value;
 			rangeModel.value = Math.max(rangeModel.minimum, rangeModel.value - rangeModel.stepSize);
 			var vce:ValueChangeEvent = ValueChangeEvent.createUpdateEvent(_strand, "value", oldValue, rangeModel.value);
-			IEventDispatcher(_strand).dispatchEvent(vce);
+			sendStrandEvent(_strand,vce);
 		}
 
 		/**
@@ -128,7 +129,7 @@ package org.apache.royale.html.beads.controllers
 			var oldValue:Number = rangeModel.value;
 			rangeModel.value = Math.min(rangeModel.maximum, rangeModel.value + rangeModel.stepSize);
 			var vce:ValueChangeEvent = ValueChangeEvent.createUpdateEvent(_strand, "value", oldValue, rangeModel.value);
-			IEventDispatcher(_strand).dispatchEvent(vce);
+			sendStrandEvent(_strand,vce);
 		}
 	}
 }
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/VScrollBarMouseController.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/VScrollBarMouseController.as
index 9aa11c0..925aa88 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/VScrollBarMouseController.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/VScrollBarMouseController.as
@@ -23,6 +23,7 @@ package org.apache.royale.html.beads.controllers
 	import org.apache.royale.events.Event;
     import org.apache.royale.events.MouseEvent;
 	import org.apache.royale.events.IEventDispatcher;
+	import org.apache.royale.utils.sendStrandEvent;
 	
     /**
      *  The VScrollBarMouseController class is the controller for
@@ -58,12 +59,12 @@ package org.apache.royale.html.beads.controllers
 				if (event.localY < sbView.thumb.y)
 				{
 					sbModel.value = snap(Math.max(sbModel.minimum, sbModel.value - sbModel.pageStepSize));						
-					IEventDispatcher(strand).dispatchEvent(new Event("scroll"));
+					sendStrandEvent(strand,"scroll");
 				}
 				else
 				{
 					sbModel.value = snap(Math.min(sbModel.maximum - sbModel.pageSize, sbModel.value + sbModel.pageStepSize));
-					IEventDispatcher(strand).dispatchEvent(new Event("scroll"));
+					sendStrandEvent(strand,"scroll");
 				}
 			}
 		}
@@ -89,7 +90,7 @@ package org.apache.royale.html.beads.controllers
 			thumb.y = Math.max(track.y, Math.min(lastThumbY + (event.screenY - thumbDownY), track.y + track.height - thumb.height));
 			var newValue:Number = snap((thumb.y - track.y) / (track.height - thumb.height) * (sbModel.maximum - sbModel.minimum - sbModel.pageSize));
 			sbModel.value = newValue;
-			IEventDispatcher(strand).dispatchEvent(new Event("scroll"));
+			sendStrandEvent(strand,"scroll");
 		}
 		
 		private function thumbMouseUpHandler(event:MouseEvent):void
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/VSliderMouseController.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/VSliderMouseController.as
index 4abb56e..d2608f2 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/VSliderMouseController.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/VSliderMouseController.as
@@ -30,6 +30,7 @@ package org.apache.royale.html.beads.controllers
 	import org.apache.royale.events.ValueChangeEvent;
 	import org.apache.royale.geom.Point;
 	import org.apache.royale.html.beads.ISliderView;
+	import org.apache.royale.utils.sendStrandEvent;
 	
 	COMPILE::JS
 	{
@@ -136,7 +137,7 @@ package org.apache.royale.html.beads.controllers
 			UIBase(_strand).topMostEventDispatcher.removeEventListener(MouseEvent.MOUSE_UP, thumbUpHandler);
 			
 			var vce:ValueChangeEvent = ValueChangeEvent.createUpdateEvent(_strand, "value", oldValue, rangeModel.value);
-			IEventDispatcher(_strand).dispatchEvent(vce);
+			sendStrandEvent(_strand,vce);
 		}
 		
 		COMPILE::SWF
@@ -159,7 +160,7 @@ package org.apache.royale.html.beads.controllers
 			var vce:ValueChangeEvent = ValueChangeEvent.createUpdateEvent(_strand, "value", rangeModel.value, n);
 			rangeModel.value = n;
 			
-			IEventDispatcher(_strand).dispatchEvent(vce);
+			sendStrandEvent(_strand,vce);
 		}
 		
 		COMPILE::SWF
@@ -176,7 +177,7 @@ package org.apache.royale.html.beads.controllers
 			var vce:ValueChangeEvent = ValueChangeEvent.createUpdateEvent(_strand, "value", rangeModel.value, n);
 			rangeModel.value = n;
 			
-			IEventDispatcher(_strand).dispatchEvent(vce);
+			sendStrandEvent(_strand,vce);
 		}
 		
 		/**
@@ -195,7 +196,7 @@ package org.apache.royale.html.beads.controllers
 			var vce:ValueChangeEvent = ValueChangeEvent.createUpdateEvent(_strand, "value", rangeModel.value, n);
 			rangeModel.value = n;
 			
-			host.dispatchEvent(vce);
+			sendStrandEvent(_strand,vce);
 		}
 		
 		/**
@@ -241,7 +242,7 @@ package org.apache.royale.html.beads.controllers
 			calcValFromMousePosition(bevent, false);
 			var vce:ValueChangeEvent = ValueChangeEvent.createUpdateEvent(_strand, "value", oldValue, rangeModel.value);
 			
-			host.dispatchEvent(vce);
+			sendStrandEvent(_strand,vce);
 		}
 		
 		/**
@@ -257,7 +258,7 @@ package org.apache.royale.html.beads.controllers
 			
 			var vce:ValueChangeEvent = ValueChangeEvent.createUpdateEvent(_strand, "value", lastValue, rangeModel.value);
 			
-			host.dispatchEvent(vce);
+			sendStrandEvent(_strand,vce);
 		}
 		
 		COMPILE::JS