         // System mouse handlers are not needed when the renderer is not mouse captured
         if (!value)
             removeSystemMouseHandlers();
+    }
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+    
+    //----------------------------------
+    //  state
+    //----------------------------------  
+    
+    [Bindable("change")]
+    /**
+     *  Returns the state of the component
+     * 
+     *  <p>Possible values are:
+     *    <ul>
+     *      <li>InteractionState.UP</li>
+     *      <li>InteractionState.DOWN</li>
+     *      <li>InteractionState.OVER</li>
+     *    </ul>
+     *  </p>
+     * 
+     *  @see spark.components.supportClasses.InteractionState;
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public function get state():String
+    {
+        if (isDown())
+            return InteractionState.DOWN;
+        else if (hovered && component.getStyle("interactionMode") == InteractionMode.MOUSE)
+            return InteractionState.OVER;
+        else
+            return InteractionState.UP;
     }
     
     //--------------------------------------------------------------------------

[Event(name="change", type="flash.events.Event")]

/**
 *  A helper class for item renderers to use to help them determine 
 *  if they should be in the hovered or down states
 *  
 *  @langversion 3.0
 *  @playerversion Flash 10.1
 *  @playerversion AIR 2.5
 *  @productversion Flex 4.5
 */
public class ItemRendererInteractionStateDetector extends EventDispatcher
{
    
    /**
     *  Constructor
     *  
     *  @param components  The UIComponent to detect the hovered/down state on.
     *                     The event listeners are attached to this object 
     *                     to figure out if it should be in the hovered or down state.
     * 
     *  @langversion 3.0
     *  @playerversion Flash 10.1
     *  @playerversion AIR 2.5
     *  @productversion Flex 4.5
     */
    public function ItemRendererInteractionStateDetector(component:UIComponent)
    {
        super();
        this.component = component;

     *  @private
     *  Storage for the hovered property 
     */
    private var _hovered:Boolean = false; 
    
    /**
     *  @private
     */
    private function get hovered():Boolean
    {
        return _hovered;
    }
    
    /**
     *  @private
     */
    private function set hovered(value:Boolean):void
    {
        if (value == _hovered)
            return;
        
        _hovered = value;
        invalidateState();
    }
    
    //----------------------------------
