blob: 49a3b7dcb5772bb8902bf5e99bb5677a5fd1843a [file] [log] [blame]
<?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.
-->
<!-- TODO
Move the indicator tooltip string to a resource bundle
-->
<!--- An alternate skin class for the Spark FormItem component
which positions the label above the content.
@see spark.components.FormItem
@langversion 3.0
@playerversion Flash 10
@playerversion AIR 1.5
@productversion Flex 4.5
-->
<s:Skin 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.disabledStates=".5">
<!-- host component -->
<fx:Metadata>
<![CDATA[
/**
* @copy spark.skins.spark.ApplicationSkin#hostComponent
*/
[HostComponent("spark.components.FormItem")]
]]>
</fx:Metadata>
<fx:Script fb:purpose="styling">
<![CDATA[
/**
* @private
*/
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number) : void
{
// Push backgroundColor and backgroundAlpha directly.
// Handle undefined backgroundColor by hiding the background object.
if (isNaN(getStyle("backgroundColor")))
{
background.visible = false;
}
else
{
background.visible = true;
bgFill.color = getStyle("backgroundColor");
bgFill.alpha = getStyle("backgroundAlpha");
}
var indicatorSource:Object;
if (currentState == "error" || currentState == "requiredAndError")
indicatorSource = getStyle("errorIndicatorSource");
else if (currentState == "required" || "requiredAndDisabled")
indicatorSource = getStyle("requiredIndicatorSource");
if (indicatorSource && indicatorDisplay)
{
indicatorDisplay.source = indicatorSource;
}
super.updateDisplayList(unscaledWidth, unscaledHeight);
}
/**
* @private
*/
override public function setCurrentState(stateName:String, playTransition:Boolean=true):void
{
super.setCurrentState(stateName, playTransition);
invalidateDisplayList();
}
]]>
</fx:Script>
<s:states>
<s:State name="normal" />
<s:State name="disabled" stateGroups="disabledStates"/>
<s:State name="error" stateGroups="errorStates"/>
<s:State name="required" stateGroups="requiredStates"/>
<s:State name="requiredAndDisabled" stateGroups="requiredStates, disabledStates"/>
<s:State name="requiredAndError" stateGroups="requiredStates, errorStates"/>
</s:states>
<s:layout>
<s:FormItemLayout>
<s:constraintColumns>
<!--- The column containing the sequence label. -->
<s:ConstraintColumn id="sequenceCol" />
<!--- The column containing the FormItem's label and content. -->
<s:ConstraintColumn id="contentCol" width="100%"/>
<!--- The column containing the FormItem's help content. -->
<s:ConstraintColumn id="helpCol" maxWidth="200"/>
</s:constraintColumns>
<s:constraintRows>
<!--- @private -->
<s:ConstraintRow id="row1" baseline="maxAscent:10"/>
<!--- @private -->
<s:ConstraintRow id="row2" height="100%"/>
</s:constraintRows>
</s:FormItemLayout>
</s:layout>
<!--- Defines the appearance of the FormItem's background. -->
<s:Rect id="background" left="0" right="0" top="0" bottom="0">
<s:fill>
<!--- @private -->
<s:SolidColor id="bgFill" color="#FFFFFF"/>
</s:fill>
</s:Rect>
<!--- @copy spark.components.FormItem#sequenceLabelDisplay -->
<s:Label id="sequenceLabelDisplay"
fontWeight="bold"
left="sequenceCol:10" right="sequenceCol:5"
bottom="row1:5" baseline="row1:0"/>
<!--- @copy spark.components.FormItem#labelDisplay -->
<s:Label id="labelDisplay"
fontWeight="bold"
left="contentCol:0" right="contentCol:5"
bottom="row1:5" baseline="row1:0"/>
<!--- @copy spark.components.SkinnableContainer#contentGroup -->
<s:Group id="contentGroup"
showErrorTip="false" showErrorSkin="true"
left="contentCol:0" right="contentCol:1"
top="row2:0" bottom="row2:10" baseline="row2:0">
<s:layout>
<s:VerticalLayout/>
</s:layout>
</s:Group>
<s:Group x="{contentGroup.x + contentGroup.contentWidth + 4}" y="{contentGroup.y}"
height="{Math.max(indicatorDisplay.height, contentGroup.contentHeight)}" includeInLayout="false">
<!--- @private -->
<s:Image id="indicatorDisplay" verticalCenter="0"
toolTip="Required" toolTip.errorStates="{hostComponent.errorString}"
includeIn="requiredStates,errorStates"/>
</s:Group>
<!--- @copy spark.components.FormItem#helpContentGroup -->
<s:Group id="helpContentGroup"
fontStyle="italic" fontWeight="normal" color="0x666666"
left="helpCol:27" right="helpCol:10"
bottom="row2:10" baseline="row2:0"/>
</s:Skin>