  *  @productversion Flex 4
  */ 
 [Style(name="focusColor", type="uint", format="Color", inherit="yes", theme="spark")]
+
+/**
+ *  Number of milliseconds to wait after the first <code>buttonDown</code>
+ *  event before repeating <code>buttonDown</code> events at each 
+ *  <code>repeatInterval</code>.
+ * 
+ *  @default 500
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */
+[Style(name="repeatDelay", type="Number", format="Time", inherit="no")]
+
+/**
+ *  Number of milliseconds between <code>buttonDown</code> events
+ *  if the user presses and holds the mouse on a button.
+ *  
+ *  @default 35
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */
+[Style(name="repeatInterval", type="Number", format="Time", inherit="no")]
+
+//--------------------------------------
+//  Events
+//--------------------------------------
 
 /**
  *  Dispatched when the user presses the ButtonBase control.

        if (ButtonBase.createAccessibilityImplementation != null)
            ButtonBase.createAccessibilityImplementation(this);
    }
    
    //----------------------------------
    //  baselinePosition
    //----------------------------------

    /**
     *  @private
     */
    override public function get baselinePosition():Number
    {
        return getBaselinePositionForPart(labelDisplay);
    }

    //--------------------------------------------------------------------------
    //
    //  Overridden methods
    //
    //--------------------------------------------------------------------------

    /**
     *  @private
     */
    override protected function partAdded(partName:String, instance:Object):void
    {
        super.partAdded(partName, instance);
        
        // Push down to the part only if the label was explicitly set
        if (_content !== undefined && instance == labelDisplay)
            labelDisplay.text = label;
    }

    /**
     *  @private
     *  Remember whether we have fired an event already,
     *  so that we don't fire a second time.
     */
    private var _downEventFired:Boolean = false;
    
    /**
     *  @private

    {
        dispatchEvent(new FlexEvent(FlexEvent.BUTTON_DOWN));
    }
}

}
