| <?xml version="1.0" encoding="utf-8"?> |
| <!-- |
| |
| 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. |
| |
| --> |
| <!--- The default skin class for the Spark ComboBox component. |
| The skin for the anchor button for a ComboBox component |
| is defined by the ComboBoxButtonSkin class. The skin for the text input |
| is defined by the ComboBoxTextInputSkin class. |
| |
| @see spark.components.ComboBox |
| @see spark.skins.spark.ComboBoxButtonSkin |
| |
| @langversion 3.0 |
| @playerversion Flash 10 |
| @playerversion AIR 1.5 |
| @productversion Flex 4 |
| --> |
| <s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" |
| xmlns:fb="http://ns.adobe.com/flashbuilder/2009" alpha.disabled=".5"> |
| |
| <!-- host component --> |
| <fx:Metadata> |
| <![CDATA[ |
| /** |
| * @copy spark.skins.spark.ApplicationSkin#hostComponent |
| */ |
| [HostComponent("spark.components.ComboBox")] |
| ]]> |
| </fx:Metadata> |
| |
| <fx:Script fb:purpose="styling"> |
| <![CDATA[ |
| private var paddingChanged:Boolean; |
| private var cornerRadiusChanged:Boolean; |
| private var cornerRadius:Number = 0; |
| |
| /* Define the content fill items that should be colored by the "contentBackgroundColor" style. */ |
| static private const contentFill:Array = ["bgFill"]; |
| |
| /** |
| * @private |
| */ |
| override public function get contentItems():Array {return contentFill}; |
| |
| /** |
| * @private |
| */ |
| override protected function commitProperties():void |
| { |
| super.commitProperties(); |
| |
| if (paddingChanged && textInput) |
| { |
| // Push padding styles into the textDisplay |
| var padding:Number; |
| |
| padding = getStyle("paddingLeft"); |
| if (textInput.getStyle("paddingLeft") != padding) |
| textInput.setStyle("paddingLeft", padding); |
| |
| padding = getStyle("paddingTop"); |
| if (textInput.getStyle("paddingTop") != padding) |
| textInput.setStyle("paddingTop", padding); |
| |
| padding = getStyle("paddingRight"); |
| if (textInput.getStyle("paddingRight") != padding) |
| textInput.setStyle("paddingRight", padding); |
| |
| padding = getStyle("paddingBottom"); |
| if (textInput.getStyle("paddingBottom") != padding) |
| textInput.setStyle("paddingBottom", padding); |
| paddingChanged = false; |
| } |
| |
| if (cornerRadiusChanged) |
| { |
| cornerRadiusChanged = false; |
| |
| /* var cr:Number = getStyle("cornerRadius"); |
| |
| if (openButton) |
| openButton.setStyle("cornerRadius", cr); |
| if (textInput) |
| textInput.setStyle("cornerRadius", cr); */ |
| } |
| } |
| |
| /** |
| * @private |
| */ |
| override public function styleChanged(styleProp:String):void |
| { |
| super.styleChanged(styleProp); |
| |
| if (!styleProp || styleProp.indexOf("padding") == 0) |
| { |
| paddingChanged = true; |
| invalidateProperties(); |
| } |
| if (!styleProp || styleProp == "cornerRadius") |
| { |
| cornerRadiusChanged = true; |
| invalidateProperties(); |
| } |
| } |
| |
| /** |
| * @private |
| */ |
| override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void |
| { |
| if (getStyle("borderVisible") == false) |
| { |
| if (border) |
| border.visible = false; |
| if (background) |
| { |
| background.left = background.top = background.right = background.bottom = 0; |
| } |
| if (scroller) |
| scroller.minViewportInset = 0; |
| } |
| else |
| { |
| if (border) |
| border.visible = true; |
| if (background) |
| { |
| background.left = background.top = background.right = background.bottom = 1; |
| } |
| if (scroller) |
| scroller.minViewportInset = 1; |
| } |
| |
| if (dropShadow) |
| dropShadow.visible = getStyle("dropShadowVisible"); |
| |
| //openButton.setStyle("cornerRadius", getStyle("cornerRadius")); |
| |
| if (borderStroke) |
| { |
| borderStroke.color = getStyle("borderColor"); |
| borderStroke.alpha = getStyle("borderAlpha"); |
| } |
| super.updateDisplayList(unscaledWidth, unscaledHeight); |
| } |
| ]]> |
| </fx:Script> |
| |
| <s:states> |
| <s:State name="normal" /> |
| <s:State name="open" /> |
| <s:State name="disabled" /> |
| </s:states> |
| |
| <s:transitions> |
| <s:Transition fromState="normal" toState="open"> |
| <s:Fade target="{dropDown}" duration="2000" alphaFrom="0.0" alphaTo="1.0" /> |
| </s:Transition> |
| <s:Transition fromState="open" toState="normal"> |
| <s:Fade target="{dropDown}" duration="2000" alphaFrom="1.0" alphaTo="0.0"/> |
| </s:Transition> |
| </s:transitions> |
| |
| <!--- |
| The PopUpAnchor control that opens the drop-down list. |
| --> |
| <s:PopUpAnchor id="popUp" displayPopUp.normal="false" displayPopUp.open="true" includeIn="open" |
| left="0" right="0" top="0" bottom="0" itemDestructionPolicy="auto" |
| popUpPosition="below" popUpWidthMatchesAnchorWidth="true"> |
| |
| <!--- |
| The drop down area of the skin. |
| This includes borders, background colors, scrollers, and filters. |
| --> |
| <s:Group id="dropDown" maxHeight="134" minHeight="22" > |
| |
| <!-- drop shadow --> |
| <s:RectangularDropShadow id="dropShadow" blurX="20" blurY="20" alpha="0.6" distance="5" |
| angle="90" color="#000000" left="0" top="0" right="0" bottom="0"/> |
| |
| <!-- border --> |
| <s:Rect id="border" left="0" right="0" top="0" bottom="0"> |
| <s:stroke> |
| <s:SolidColorStroke id="borderStroke" weight="1"/> |
| </s:stroke> |
| </s:Rect> |
| |
| <!-- fill --> |
| <!--- |
| Defines the appearance of drop-down list's background fill. |
| --> |
| <s:Rect id="background" left="1" right="1" top="1" bottom="1" > |
| <s:fill> |
| <!--- |
| The color of the drop down's background fill. |
| The default color is 0xFFFFFF. |
| --> |
| <s:SolidColor id="bgFill" color="0xFFFFFF" /> |
| </s:fill> |
| </s:Rect> |
| |
| <s:Scroller id="scroller" left="0" top="0" right="0" bottom="0" focusEnabled="false" minViewportInset="1"> |
| <!--- |
| The container for the data items in the drop-down list. |
| --> |
| <s:DataGroup id="dataGroup" itemRenderer="spark.skins.spark.DefaultItemRenderer"> |
| <s:layout> |
| <s:VerticalLayout gap="0" horizontalAlign="contentJustify"/> |
| </s:layout> |
| </s:DataGroup> |
| </s:Scroller> |
| </s:Group> |
| </s:PopUpAnchor> |
| |
| <!--- The anchor button used by the ComboBox. The default skin is ComboBoxButtonSkin. --> |
| <s:Button id="openButton" width="20" right="0" top="0" bottom="0" focusEnabled="false" |
| skinClass="spark.skins.spark.ComboBoxButtonSkin" /> |
| <!--- The text input area of the ComboBox. --> |
| <s:TextInput id="textInput" |
| left="0" right="19" top="0" bottom="0" |
| skinClass="spark.skins.spark.ComboBoxTextInputSkin"/> |
| |
| </s:SparkSkin> |
| |