 			var yMax:Number = tempBounds.getYNumericMax();
 			
 			setStyle("openDuration",0);
-			popUpMenu(this, _uiParent, subMenuDataProvider);
+			popUpMenu(this, _uiParent, subMenuDataProvider.filter(isItemEnabled));
 			show(menuLocation.x, menuLocation.y);
 			
 			if (menuLocation.x < xMin)

		 * @param label The Label string (or function that returns a string) to show when the menu is open.
		 * @param listener The function to call when the item is clicked.
		 * @param params An Array of parameters to pass to the listener function.
		 * @return An object containing the three parameters (label, listener, params) which can be modified later.
		 */
		public function addSubMenuItem(label:Object, listener:Function, params:Array = null):Object
		{
			var menuItem:SubMenuItem = new SubMenuItem();
			menuItem.label = label;
			menuItem.listener = listener;
			menuItem.params = params;
			subMenuDataProvider.push(menuItem);
			return menuItem;
		}

			move(menuLocation.x, menuLocation.y);
		}
		
		private function isItemEnabled(item:SubMenuItem, ..._):Boolean
		{
			return getLabel(item) && (item.shown == null || item.shown());
		}
		
		private const tempBounds:Bounds2D = new Bounds2D();
	}
}
