     override protected function partAdded(partName:String, instance:Object):void
     {
         super.partAdded(partName, instance);
- 
-        if (instance == openButton)
-        {
-            if (dropDownController)
-                dropDownController.openButton = openButton;
-        }
         
         if (instance == labelDisplay)
         {
             labelChanged = true;
             invalidateProperties();
         }
-        
-        if (instance == dropDown && dropDownController)
-            dropDownController.dropDown = dropDown;
-    }
-    
-    /**
-     *  @private
-     */
-    override protected function partRemoved(partName:String, instance:Object):void
-    {
-        if (dropDownController)
-        {
-            if (instance == openButton)
-                dropDownController.openButton = null;
-        
-            if (instance == dropDown)
-                dropDownController.dropDown = null;
-        }
-        
-        super.partRemoved(partName, instance);
-    }
-    
-    /**
-     *  @private
-     */ 
-    override protected function getCurrentSkinState():String
-    {
-        return !enabled ? "disabled" : dropDownController.isOpen ? "open" : "normal";
-    }   
-       
-    /**
-     *  @private
-     */ 
-    override protected function commitSelection(dispatchChangedEvents:Boolean = true):Boolean
-    {
-        var retVal:Boolean = super.commitSelection(dispatchChangedEvents);
-        updateLabelDisplay();
-        return retVal; 
-    }
-    
-    /**
-     *  @private
-     *  In updateRenderer, we want to select the proposedSelectedIndex
-     */
-    override mx_internal function isItemIndexSelected(index:int):Boolean
-    {
-        return userProposedSelectedIndex == index;
-    }
-    
-    //--------------------------------------------------------------------------
-    //
-    //  Methods
-    //
-    //--------------------------------------------------------------------------   
-
-    /**
-     *  Open the drop-down list and dispatch 
-     *  a <code>DropdownEvent.OPEN</code> event.
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */ 
-    public function openDropDown():void
-    {
-        dropDownController.openDropDown();
-    }
-    
-    /**
-     *  Close the drop-down list and dispatch a <code>DropDownEvent.CLOSE</code> event. 
-     *   
-     *  @param commit If <code>true</code>, commit the selected
-     *  data item. 
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    public function closeDropDown(commit:Boolean):void
-    {
-        dropDownController.closeDropDown(commit);
     }
     
     /**

//
////////////////////////////////////////////////////////////////////////////////

/*  NOTES

Keyboard Interaction
- List current dispatches change on arrowUp/Down. Should we subclass List
and change behavior to commit value only on ENTER, SPACE, or CTRL-UP?

- Handle commitData 
- Add typicalItem support for measuredSize (lower priority) 

*  @langversion 3.0
*  @playerversion Flash 10
*  @playerversion AIR 1.5
*  @productversion Flex 4

*/

package spark.components
{

import flash.accessibility.Accessibility;
import flash.display.DisplayObject;
import flash.events.Event;
import flash.events.FocusEvent;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;

import mx.collections.IList;
import mx.core.mx_internal;
import mx.events.CollectionEvent;
import mx.events.FlexEvent;

import spark.components.supportClasses.ButtonBase;
import spark.components.supportClasses.DropDownController;
import spark.components.supportClasses.TextBase;
import spark.core.NavigationUnit;
import spark.events.DropDownEvent;
import spark.events.IndexChangeEvent;
import spark.utils.LabelUtil;

use namespace mx_internal;

//--------------------------------------
//  Styles
//--------------------------------------

/**
 *  The radius of the corners for this component.
 * 
 *  @langversion 3.0
 *  @playerversion Flash 10
 *  @playerversion AIR 1.5
 *  @productversion Flex 4
 */
[Style(name="cornerRadius", type="Number", format="Length", inherit="no", theme="spark")]

/**
 *  Controls the visibility of the drop shadow for this component.
 * 
 *  @langversion 3.0
 *  @playerversion Flash 10
 *  @playerversion AIR 1.5
 *  @productversion Flex 4
 */
[Style(name="dropShadowVisible", type="Boolean", inherit="no", theme="spark")]

//--------------------------------------
//  Events
//--------------------------------------

/**
 *  Dispatched when the drop-down list closes for any reason, such when 
 *  the user:
 *  <ul>
 *      <li>Selects an item in the drop-down list.</li>
 *      <li>Clicks outside of the drop-down list.</li>
 *      <li>Clicks the anchor button while the drop-down list is 
 *  displayed.</li>
 *  </ul>
 *
 *  @eventType spark.events.DropDownEvent.CLOSE
 *  
 *  @langversion 3.0
 *  @playerversion Flash 10
 *  @playerversion AIR 1.5
 *  @productversion Flex 4
 */
[Event(name="close", type="spark.events.DropDownEvent")]

/**
 *  Dispatched when the user clicks the anchor button
 *  to display the drop-down list.  
 *  It is also dispatched if the user
 *  uses Control-Down to open the dropDown.
 *
 *  @eventType spark.events.DropDownEvent.OPEN
 *  
 *  @langversion 3.0
 *  @playerversion Flash 10
 *  @playerversion AIR 1.5
 *  @productversion Flex 4
 */
[Event(name="open", type="spark.events.DropDownEvent")]

//--------------------------------------
//  SkinStates
//--------------------------------------

/**
 *  Skin state for the open state of the DropDownList control.
 *  
 *  @langversion 3.0
 *  @playerversion Flash 10
 *  @playerversion AIR 1.5
 *  @productversion Flex 4
 */
[SkinState("open")]

//--------------------------------------
//  Excluded APIs
//--------------------------------------

[Exclude(name="allowMultipleSelection", kind="property")]
[Exclude(name="dragEnabled", kind="property")]
[Exclude(name="dragMoveEnabled", kind="property")]
[Exclude(name="dropEnabled", kind="property")]
[Exclude(name="selectedIndices", kind="property")]
[Exclude(name="selectedItems", kind="property")]

//--------------------------------------
//  Other metadata

    //  Skin parts
    //
    //--------------------------------------------------------------------------    
    
    //----------------------------------
    //  labelDisplay
