<?xml version="1.0" encoding="utf-8"?>
<!--

ADOBE SYSTEMS INCORPORATED
Copyright 2010 Adobe Systems Incorporated
All Rights Reserved.

NOTICE: Adobe permits you to use, modify, and distribute this file
in accordance with the terms of the license agreement accompanying it.

-->

<!--- An alternate skin class for the Spark Form container.  

This skin defines a contentGroup for the Form container with a 
FormLayout as its layout object. The FormLayout is a VerticalLayout
that has additional logic to align the columns of FormItems.
This skin also defines an errorTextDisplay for displaying the
errorText of the Form.

@see spark.components.Form
@see spark.layouts.FormLayout

@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.disabled="0.5">
    
    <fx:Metadata>
        <![CDATA[ 
        /** 
        * @copy spark.skins.spark.ApplicationSkin#hostComponent
        */
        [HostComponent("spark.components.Form")]
        ]]>
    </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");
                }
                
                super.updateDisplayList(unscaledWidth, unscaledHeight);
            }
        ]]>        
    </fx:Script>
    
    <s:states>
        <s:State name="normal" />
        <s:State name="error" />
        <s:State name="disabled" />
    </s:states>
    
    <!--- Defines the appearance of the Form class'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>
    
    <!--
    Note: setting the minimum size to 0 here so that changes to the host component's
    size will not be thwarted by this skin part's minimum size.   This is a compromise,
    more about it here: http://bugs.adobe.com/jira/browse/SDK-21143
    -->
    <s:VGroup left="10" right="10" top="10" bottom="10">
        <s:Group width="100%">
            <!--- Displays the error text of the Form. -->
            <s:Label id="errorTextDisplay" text="{hostComponent.errorString}" 
                     color="0xFE0000" fontStyle="italic"
                     includeIn="error" maxWidth="{this.width - 8}"
                     left="4" right="4" top="4" bottom="4"/>
        </s:Group>
        <!-- We set Form's showErrorTip and showErrorSkin to false, so we set them back 
        to true for the Form's elements -->
        <!--- @copy spark.components.SkinnableContainer#contentGroup -->
        <s:Group id="contentGroup" showErrorSkin="true" showErrorTip="true" width="100%" height="100%">
            <s:layout>
                <s:FormLayout gap="7"/>
            </s:layout>
        </s:Group>
    </s:VGroup>
    
    
</s:Skin>
