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

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


The following commit(s) were added to refs/heads/feature/MXRoyale by this push:
     new 5a666c9  DropDownListBase.as Added
5a666c9 is described below

commit 5a666c9f5f28152d7314ba195695c048533109d3
Author: alinakazi <[email protected]>
AuthorDate: Thu May 17 21:11:54 2018 -0700

    DropDownListBase.as Added
---
 .../components/supportClasses/DropDownListBase.as  | 1075 ++++++++++++++++++++
 1 file changed, 1075 insertions(+)

diff --git 
a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/supportClasses/DropDownListBase.as
 
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/supportClasses/DropDownListBase.as
new file mode 100644
index 0000000..a0c2ef3
--- /dev/null
+++ 
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/supportClasses/DropDownListBase.as
@@ -0,0 +1,1075 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+
+package spark.components.supportClasses
+{
+
+/* import flash.display.DisplayObject;
+import flash.events.Event;
+import flash.events.FocusEvent;
+import flash.events.KeyboardEvent;
+import flash.events.MouseEvent;
+import flash.geom.Point; */
+
+import mx.collections.IList;
+//import mx.core.InteractionMode;
+import mx.events.CollectionEvent;
+import mx.events.FlexEvent;
+
+import spark.components.List;
+//import spark.core.NavigationUnit;
+//import spark.events.DropDownEvent;
+import spark.events.IndexChangeEvent;
+
+import mx.core.mx_internal;
+use namespace mx_internal;
+
+//--------------------------------------
+//  Styles
+//--------------------------------------
+
+/**
+ *  The radius of the corners for this component.
+ *
+ *  @default 4
+ * 
+ *  @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.
+ *
+ *  @default true
+ * 
+ *  @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 DropDownListBase 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
+//--------------------------------------
+
+//[AccessibilityClass(implementation="spark.accessibility.DropDownListBaseAccImpl")]
+
+/**
+ *  The DropDownListBase control contains a drop-down list
+ *  from which the user can select a single value.
+ *  Its functionality is very similar to that of the
+ *  SELECT form element in HTML.
+ *
+ *  <p>The DropDownListBase control consists of the anchor button, 
+ *  and drop-down-list. 
+ *  Use the anchor button to open and close the drop-down-list. 
+ *  </p>
+ *
+ *  <p>When the drop-down list is open:</p>
+ *  <ul>
+ *    <li>Clicking the anchor button closes the drop-down list 
+ *      and commits the currently selected data item.</li>
+ *    <li>Clicking outside of the drop-down list closes the drop-down list 
+ *      and commits the currently selected data item.</li>
+ *    <li>Clicking on a data item selects that item and closes the drop-down 
list.</li>
+ *    <li>If the <code>requireSelection</code> property is <code>false</code>, 
+ *      clicking on a data item while pressing the Control key deselects 
+ *      the item and closes the drop-down list.</li>
+ *  </ul>
+ *
+ *  @mxml <p>The <code>&lt;s:DropDownListBase&gt;</code> tag inherits all of 
the tag 
+ *  attributes of its superclass and adds the following attributes:</p>
+ *
+ *  <pre>
+ *  &lt;s:DropDownListBase 
+ *    <strong>Styles</strong>
+ *    cornerRadius="4"
+ *    dropShadowVisible="true"
+ * 
+ *    <strong>Events</strong>
+ *    closed="<i>No default</i>"
+ *    open="<i>No default</i>"
+ *  /&gt;
+ *  </pre>
+ *
+ *  @see spark.skins.spark.DropDownListSkin
+ *  @see spark.components.supportClasses.DropDownController
+ *
+ *  @includeExample examples/DropDownListExample.mxml
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */
+public class DropDownListBase extends List
+{
+    //include "../../core/Version.as";
+ 
+    
//--------------------------------------------------------------------------
+    //
+    //  Class mixins
+    //
+    
//--------------------------------------------------------------------------
+    
+    /**
+     *  @private
+     *  Placeholder for mixin by DropDownListBaseAccImpl.
+     */
+   // mx_internal static var createAccessibilityImplementation:Function;
+    
+    
//--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    
//--------------------------------------------------------------------------
+
+    /**
+     *  Constructor. 
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function DropDownListBase()
+    {
+        super();
+
+       // dropDownController = new DropDownController();
+    }
+    
+    
//--------------------------------------------------------------------------
+    //
+    //  Skin parts
+    //
+    
//--------------------------------------------------------------------------    
+
+    //----------------------------------
+    //  dropDown
+    //----------------------------------
+
+    //[SkinPart(required="false")]
+
+    /**
+     *  A skin part that defines the drop-down list area. When the 
DropDownListBase is open,
+     *  clicking anywhere outside of the dropDown skin part closes the   
+     *  drop-down list. 
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    //public var dropDown:DisplayObject;
+    
+    //----------------------------------
+    //  openButton
+    //----------------------------------
+
+    //[SkinPart(required="true")]
+
+    /**
+     *  A skin part that defines the anchor button.  
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    //public var openButton:ButtonBase;
+       
+    
//--------------------------------------------------------------------------
+    //
+    //  Variables
+    //
+    
//--------------------------------------------------------------------------
+    
+    /**
+     *  @private
+     */
+    //private var labelChanged:Boolean = false;
+    // Stores the user selected index until the dropDown closes
+    
+    /**
+     *  @private
+     */
+    //mx_internal static var PAGE_SIZE:int = 5;
+    
+    
//--------------------------------------------------------------------------
+    //
+    //  Overridden properties
+    //
+    
//--------------------------------------------------------------------------
+    
+    //----------------------------------
+    //  allowMultipleSelection
+    //----------------------------------
+    
+    /**
+     *  @private
+     */
+    /* override public function set allowMultipleSelection(value:Boolean):void
+    {
+        // Don't allow this value to be set. If the multiple
+        // selection related properties are set and 
+        // allowMultipleSelection is false, List will
+        // select the first item passed in. 
+        return;
+    } */
+       
+    //----------------------------------
+    //  dataProvider
+    //----------------------------------
+    
+    [Inspectable(category="Data")]
+    
+    /**
+     *  @private
+     *  Update the label if the dataProvider has changed
+     */
+    override public function set dataProvider(value:IList):void
+    {   
+        if (dataProvider === value)
+            return;
+            
+        super.dataProvider = value;
+       // labelChanged = true;
+        invalidateProperties();
+    }
+    
+    //----------------------------------
+    //  dragEnabled
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Excluded property
+     */
+    /* override public function set dragEnabled(value:Boolean):void
+    {
+    } */
+
+    //----------------------------------
+    //  dragMoveEnabled
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Excluded property
+     */
+   /*  override public function set dragMoveEnabled(value:Boolean):void
+    {
+    } */
+    
+    //----------------------------------
+    //  dropEnabled
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Excluded property
+     */
+    /* override public function set dropEnabled(value:Boolean):void
+    {
+    } */
+    
+    //----------------------------------
+    //  labelField
+    //----------------------------------
+    
+    //[Inspectable(category="Data", defaultValue="label")]
+    
+    /**
+     *  @private
+     */
+    /* override public function set labelField(value:String):void
+    {
+        if (labelField == value)
+            return;
+            
+        super.labelField = value;
+        labelChanged = true;
+        invalidateProperties();
+    } */
+    
+    //----------------------------------
+    //  labelFunction
+    //----------------------------------
+    
+   // [Inspectable(category="Data")]
+    
+    /**
+     *  @private
+     */
+   /*  override public function set labelFunction(value:Function):void
+    {
+        if (labelFunction == value)
+            return;
+            
+        super.labelFunction = value;
+        labelChanged = true;
+        invalidateProperties();
+    } */
+    
+    
//--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    
//--------------------------------------------------------------------------
+    
+    //----------------------------------
+    //  dropDownController
+    //----------------------------------
+    
+    /**
+     *  @private
+     */
+    //private var _dropDownController:DropDownController; 
+    
+    /**
+     *  Instance of the DropDownController class that handles all of the 
mouse, keyboard 
+     *  and focus user interactions. 
+     * 
+     *  Flex calls the <code>initializeDropDownController()</code> method 
after 
+     *  the DropDownController instance is created in the constructor.
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+   /*  protected function get dropDownController():DropDownController
+    {
+        return _dropDownController;
+    } */
+    
+    /**
+     *  @private
+     */
+    /* protected function set dropDownController(value:DropDownController):void
+    {
+        if (_dropDownController == value)
+            return;
+            
+        _dropDownController = value;
+               
+        _dropDownController.addEventListener(DropDownEvent.OPEN, 
dropDownController_openHandler);
+        _dropDownController.addEventListener(DropDownEvent.CLOSE, 
dropDownController_closeHandler);
+            
+               _dropDownController.closeOnResize = _closeDropDownOnResize;
+
+               if (openButton)
+            _dropDownController.openButton = openButton;
+        if (dropDown)
+            _dropDownController.dropDown = dropDown;    
+    } */
+    
+    //----------------------------------
+    //  isDropDownOpen
+    //----------------------------------
+    
+    /**
+     *  @copy spark.components.supportClasses.DropDownController#isOpen
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    /* public function get isDropDownOpen():Boolean
+    {
+        if (dropDownController)
+            return dropDownController.isOpen;
+        else
+            return false;
+    } */
+        
+       //----------------------------------
+       //  closeDropDownOnResize
+       //----------------------------------
+
+    /**
+     *  @private
+     *
+     *  cached value: getStyle("interactionMode") == InteractionMode.TOUCH
+     */
+    //private var isTouchInteractionMode:Boolean = false;
+
+    /**
+     *  @private
+     *
+     *  do not know what default value for closeDropDownOnResize will be until 
styles have been applied,
+     *  but user may set property before that. this flag indicates whether 
property has been explicitly set,
+     *  and so will not need to be determined from css when 
stylesInitialized() or styleChanged() is called.
+     */
+    //private var isCloseDropDownOnResizeExplicitlySet:Boolean = false;
+
+    /**
+     *  @private
+     */
+   /*  protected var _closeDropDownOnResize:Boolean = true;
+       
+    [Inspectable(category="General", enumeration="true,false", 
defaultValue="true")] */
+       
+    /**
+     *  When <code>true</code>, resizing the system manager
+     *  closes the drop down.
+     *  For mobile applications, this property is set
+        *  to <code>false</code> so that the drop down stays open when the
+     *  page orientation changes.
+     *
+        *  @default true
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4.12
+     */
+    /* public function get closeDropDownOnResize():Boolean
+       {
+        return _closeDropDownOnResize;
+    } */
+
+    /**
+     *  @private
+     */
+    /* public function set closeDropDownOnResize(value:Boolean):void
+       {
+        setCloseDropDownOnResize(value, true);
+    } */
+               
+    /**
+     *  @private
+     */
+    /* private function setCloseDropDownOnResize(value:Boolean, 
explicitlySet:Boolean):void
+       {
+        _closeDropDownOnResize = value;
+        isCloseDropDownOnResizeExplicitlySet ||= explicitlySet;
+        if (dropDownController)
+            dropDownController.closeOnResize = _closeDropDownOnResize;
+       }    */     
+
+       //----------------------------------
+    //  userProposedSelectedIndex
+    //----------------------------------
+
+    /**
+     *  @private
+     */
+    //private var _userProposedSelectedIndex:Number = NO_SELECTION;
+    
+    /**
+     *  @private
+     */
+    /* mx_internal function set userProposedSelectedIndex(value:Number):void
+    {
+        _userProposedSelectedIndex = value;
+    } */
+    
+    /**
+     *  @private
+     */
+    /* mx_internal function get userProposedSelectedIndex():Number
+    {
+        return _userProposedSelectedIndex;
+    } */
+    
+    
//--------------------------------------------------------------------------
+    //
+    //  Overridden methods
+    //
+    
//--------------------------------------------------------------------------
+    
+       /**
+        *  @private
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4.12
+     */
+    /* override public function stylesInitialized():void
+    {
+        super.stylesInitialized();
+        setInteractionMode();
+    } */
+       
+    /**
+     *  @private
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4.12
+     */
+       /* override public function styleChanged(styleProp:String):void
+       {
+        super.styleChanged(styleProp);
+        if (!styleProp || styleProp == "styleName" || styleProp == 
"interactionMode")
+            setInteractionMode();
+    } */
+               
+    /**
+     *  @private
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4.12
+     */
+    /* private function setInteractionMode():void
+    {
+           isTouchInteractionMode = getStyle("interactionMode") == 
InteractionMode.TOUCH;
+        if (!isCloseDropDownOnResizeExplicitlySet)
+            setCloseDropDownOnResize(!isTouchInteractionMode, false);
+    } */
+               
+    /**
+     *  @private
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4.12
+     */
+    /* override public function setSelectedIndex(rowIndex:int, 
dispatchChangeEvent:Boolean = false, changeCaret:Boolean = true):void
+    {
+           super.setSelectedIndex(rowIndex, dispatchChangeEvent, changeCaret);
+           if (isTouchInteractionMode)
+           {
+            userProposedSelectedIndex = rowIndex;
+            closeDropDown(true);
+        }
+    } */
+               
+               
+    /**
+     *  @private
+     *  Called by the initialize() method of UIComponent
+     *  to hook in the accessibility code.
+     */ 
+    /* override protected function initializeAccessibility():void
+    {
+        if (DropDownListBase.createAccessibilityImplementation != null)
+            DropDownListBase.createAccessibilityImplementation(this);
+    } */
+    /**
+     *  @private
+     */ 
+    /* override protected function commitProperties():void
+    {
+        super.commitProperties();
+        
+        if (labelChanged)
+        {
+            labelChanged = false;
+            updateLabelDisplay();
+        }
+    } */
+    
+    /**
+     *  @private
+     */ 
+    /* override protected function partAdded(partName:String, 
instance:Object):void
+    {
+        super.partAdded(partName, instance);
+ 
+        if (instance == openButton)
+        {
+            if (dropDownController)
+                dropDownController.openButton = openButton;
+        }
+        else 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" : isDropDownOpen ? "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);
+    } */
+    
+    /**
+     *  @private
+     *  Called whenever we need to update the text passed to the labelDisplay 
skin part
+     */
+    // TODO (jszeto): Make this protected and make the name more generic 
(passing data to skin) 
+    /* mx_internal function updateLabelDisplay(displayItem:* = undefined):void
+    {
+        // DropDownList and ComboBox will override this function
+    } */
+    
+    /**
+     *  @private
+     *  Called whenever we need to change the highlighted selection while the 
dropDown is open
+     *  ComboBox overrides this behavior
+     */
+    /* mx_internal function changeHighlightedSelection(newIndex:int, 
scrollToTop:Boolean = false):void
+    {
+        // Store the selection in userProposedSelectedIndex because we 
+        // don't want to update selectedIndex until the dropdown closes
+        itemSelected(userProposedSelectedIndex, false);
+        userProposedSelectedIndex = newIndex;
+        itemSelected(userProposedSelectedIndex, true);
+        
+        positionIndexInView(userProposedSelectedIndex, scrollToTop ? 0 : NaN);
+        
+        var e:IndexChangeEvent = new 
IndexChangeEvent(IndexChangeEvent.CARET_CHANGE); 
+        e.oldIndex = caretIndex;
+        setCurrentCaretIndex(userProposedSelectedIndex);
+        e.newIndex = caretIndex;
+        dispatchEvent(e);
+    } */
+    
+    /**
+     *  @private 
+     */ 
+    /* mx_internal function positionIndexInView(index:int, topOffset:Number = 
NaN, 
+                                             bottomOffset:Number = NaN, 
+                                             leftOffset:Number = NaN,
+                                             rightOffset:Number = NaN):void
+    {
+        if (!layout || dataGroup == null)
+            return;
+        
+        var spDelta:Point = 
+            dataGroup.layout.getScrollPositionDeltaToElementHelper(index, 
topOffset, bottomOffset,
+                                                                   leftOffset, 
rightOffset);
+        
+        if (spDelta)
+        {
+            dataGroup.horizontalScrollPosition += spDelta.x;
+            dataGroup.verticalScrollPosition += spDelta.y;
+        }
+    } */
+          
+    /**
+     *  @private
+     */ 
+    /* override mx_internal function findKey(eventCode:int):Boolean
+    {
+        if (!dataProvider || dataProvider.length == 0)
+            return false;
+        
+        if (eventCode >= 33 && eventCode <= 126)
+        {
+            var matchingIndex:Number;
+            var keyString:String = String.fromCharCode(eventCode);
+            var startIndex:int = isDropDownOpen ? userProposedSelectedIndex  + 
1 : selectedIndex + 1;
+            startIndex = Math.max(0, startIndex);
+            
+            matchingIndex = findStringLoop(keyString, startIndex, 
dataProvider.length); 
+            
+            // We didn't find the item, loop back to the top 
+            if (matchingIndex == -1)
+            {
+                matchingIndex = findStringLoop(keyString, 0,  startIndex); 
+            }
+            
+            
+            if (matchingIndex != -1)
+            {
+                if (isDropDownOpen)
+                    changeHighlightedSelection(matchingIndex);
+                else
+                    setSelectedIndex(matchingIndex, true); 
+                
+                return true;
+            }
+        }
+        
+        return false;
+    }
+     */
+    
//--------------------------------------------------------------------------
+    //
+    //  Event handlers
+    //
+    
//--------------------------------------------------------------------------   
+
+    /**
+     *  @private
+     */ 
+    /* override protected function 
dataProvider_collectionChangeHandler(event:Event):void
+    {       
+        super.dataProvider_collectionChangeHandler(event);
+        
+        if (event is CollectionEvent)
+        {
+            labelChanged = true;
+            invalidateProperties();         
+        }
+    } */
+       
+    /**
+     *  @private
+     */
+    /* override protected function item_mouseDownHandler(event:MouseEvent):void
+    {
+        super.item_mouseDownHandler(event);
+        if (!isTouchInteractionMode)
+           {
+            userProposedSelectedIndex = selectedIndex;
+            closeDropDown(true);
+        }
+    } */
+            
+    /**
+     *  @private
+     */
+    /* override protected function keyDownHandler(event:KeyboardEvent) : void
+    {
+        if (!enabled)
+            return; 
+                
+        if (!dropDownController.processKeyDown(event))
+        {
+            // If rtl layout, need to swap Keyboard.LEFT and Keyboard.RIGHT.
+            var navigationUnit:uint = mapKeycodeForLayoutDirection(event);
+                                    
+            if (findKey(event.charCode))
+            {
+                event.preventDefault();
+                return;
+            }
+            
+            if (!NavigationUnit.isNavigationUnit(navigationUnit))
+                return;
+            
+            var proposedNewIndex:int = NO_SELECTION;
+            var currentIndex:int;
+                        
+            if (isDropDownOpen && layout)
+            {   
+                // Normalize the proposed index for 
getNavigationDestinationIndex
+                currentIndex = userProposedSelectedIndex < NO_SELECTION ? 
NO_SELECTION : userProposedSelectedIndex;
+                proposedNewIndex = 
layout.getNavigationDestinationIndex(currentIndex, navigationUnit, 
arrowKeysWrapFocus);
+                
+                if (proposedNewIndex != NO_SELECTION)
+                {
+                    changeHighlightedSelection(proposedNewIndex);
+                    event.preventDefault();
+                }
+            }
+            else if (dataProvider)
+            {
+                var maxIndex:int = dataProvider.length - 1;
+                
+                // Normalize the proposed index for 
getNavigationDestinationIndex
+                currentIndex = caretIndex < NO_SELECTION ? NO_SELECTION : 
caretIndex;
+                
+                switch (navigationUnit)
+                {
+                    case NavigationUnit.UP:
+                    {
+                        if (arrowKeysWrapFocus && 
+                            (currentIndex == 0 || 
+                             currentIndex == NO_SELECTION || 
+                             currentIndex == CUSTOM_SELECTED_ITEM))
+                            proposedNewIndex = maxIndex;
+                        else
+                            proposedNewIndex = currentIndex - 1;  
+                        event.preventDefault();
+                        break;
+                    }                      
+        
+                    case NavigationUnit.DOWN:
+                    {
+                        if (arrowKeysWrapFocus && 
+                            (currentIndex == maxIndex || 
+                             currentIndex == NO_SELECTION || 
+                             currentIndex == CUSTOM_SELECTED_ITEM))
+                            proposedNewIndex = 0;
+                        else
+                            proposedNewIndex = currentIndex + 1;  
+                        event.preventDefault();
+                        break;
+                    }
+                        
+                    case NavigationUnit.PAGE_UP:
+                    {
+                        proposedNewIndex = currentIndex == NO_SELECTION ? 
+                            NO_SELECTION : Math.max(currentIndex - PAGE_SIZE, 
0);
+                        event.preventDefault();
+                        break;
+                    }
+                        
+                    case NavigationUnit.PAGE_DOWN:
+                    {    
+                        proposedNewIndex = currentIndex == NO_SELECTION ?
+                                           PAGE_SIZE : (currentIndex + 
PAGE_SIZE);
+                        event.preventDefault();
+                        break;
+                    }
+                       
+                    case NavigationUnit.HOME:
+                    {
+                        proposedNewIndex = 0;
+                        event.preventDefault();
+                        break;
+                    }
+
+                    case NavigationUnit.END:
+                    {
+                        proposedNewIndex = maxIndex;  
+                        event.preventDefault();
+                        break;
+                    }  
+                       
+                }
+                
+                proposedNewIndex = Math.min(proposedNewIndex, maxIndex);
+                
+                if (proposedNewIndex >= 0)
+                {
+                    userProposedSelectedIndex = proposedNewIndex;
+                    setSelectedIndex(proposedNewIndex, true);
+                }
+            }
+        }
+        else
+        {
+            event.preventDefault();
+        }
+    }
+     */
+    /**
+     *  @private
+     */
+    /* override protected function focusOutHandler(event:FocusEvent):void
+    {
+        if (isOurFocus(DisplayObject(event.target)))
+            dropDownController.processFocusOut(event);
+
+        super.focusOutHandler(event);
+    } */
+        
+    /**
+     *  @private
+     *  Event handler for the <code>dropDownController</code> 
+     *  <code>DropDownEvent.OPEN</code> event. Updates the skin's state and 
+     *  ensures that the selectedItem is visible. 
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    /* mx_internal function 
dropDownController_openHandler(event:DropDownEvent):void
+    {
+        addEventListener(FlexEvent.UPDATE_COMPLETE, 
open_updateCompleteHandler);
+        userProposedSelectedIndex = selectedIndex;
+        invalidateSkinState();  
+    } */
+    
+    /**
+     *  @private
+     */
+    /* mx_internal function open_updateCompleteHandler(event:FlexEvent):void
+    {   
+        removeEventListener(FlexEvent.UPDATE_COMPLETE, 
open_updateCompleteHandler);
+        positionIndexInView(selectedIndex, 0);
+        
+        dispatchEvent(new DropDownEvent(DropDownEvent.OPEN));
+    } */
+    
+    /**
+     *  @private
+     *  Event handler for the <code>dropDownController</code> 
+     *  <code>DropDownEvent.CLOSE</code> event. Updates the skin's state.
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    /* protected function 
dropDownController_closeHandler(event:DropDownEvent):void
+    {
+        addEventListener(FlexEvent.UPDATE_COMPLETE, 
close_updateCompleteHandler);
+        invalidateSkinState();
+        
+        if (!event.isDefaultPrevented())
+        {
+            // Even if the dropDown was programmatically closed, assume the 
selection 
+            // changed as a result of a previous user interaction
+            setSelectedIndex(userProposedSelectedIndex, true);  
+        }
+        else
+        {
+            changeHighlightedSelection(selectedIndex);
+        }
+    } */
+
+    /**
+     *  @private
+     */
+    /* private function close_updateCompleteHandler(event:FlexEvent):void
+    {   
+        removeEventListener(FlexEvent.UPDATE_COMPLETE, 
close_updateCompleteHandler);
+        
+        dispatchEvent(new DropDownEvent(DropDownEvent.CLOSE));
+    } */
+}
+
+}

-- 
To stop receiving notification emails like this one, please contact
[email protected].

Reply via email to