<?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.

-->


<s:Skin 
	xmlns:fx="http://ns.adobe.com/mxml/2009" 
	xmlns:s="library://ns.adobe.com/flex/spark" 
	xmlns:mx="library://ns.adobe.com/flex/mx"
	  minWidth="22" minHeight="22"
	  alpha.disabledStates="0.5">

	<!-- host component -->
	<fx:Metadata>
	    <![CDATA[ 
		/** 
		 * @copy spark.skins.default.ApplicationSkin#hostComponent
		 */
		[HostComponent("spark.components.ToggleButton")]
	    ]]>
	</fx:Metadata>
	
	<!-- states -->
	<s:states>
        <s:State name="up" />
        <s:State name="over" stateGroups="overStates" />
        <s:State name="down" stateGroups="downStates" />
        <s:State name="disabled" stateGroups="disabledStates" />
        <s:State name="upAndSelected" stateGroups="selectedStates, selectedUpStates" />
        <s:State name="overAndSelected" stateGroups="overStates, selectedStates" />
        <s:State name="downAndSelected" stateGroups="downStates, selectedStates" />
        <s:State name="disabledAndSelected" stateGroups="selectedUpStates, disabledStates, selectedStates" />
	</s:states>
	
	 <s:Group left="0" right="0" top="-1" bottom="-1">
		<!-- skin -->
		<mx:Image left="0" top="0" right="0" bottom="0" maintainAspectRatio="false"
			source.up= "@Embed(source='/assets/flex_skins.swf', symbol='ButtonBar_buttonUpSkin')"	
			source.over= "@Embed(source='/assets/flex_skins.swf', symbol='ButtonBar_buttonOverSkin')"
			source.down= "@Embed(source='/assets/flex_skins.swf', symbol='ButtonBar_buttonDownSkin')"
	    	source.disabled= "@Embed(source='/assets/flex_skins.swf', symbol='ButtonBar_buttonDisabledSkin')"
			source.upAndSelected= "@Embed(source='/assets/flex_skins.swf', symbol='ButtonBar_buttonSelectedUpSkin')"
			source.overAndSelected= "@Embed(source='/assets/flex_skins.swf', symbol='ButtonBar_buttonSelectedUpSkin')"
			source.downAndSelected= "@Embed(source='/assets/flex_skins.swf', symbol='ButtonBar_buttonSelectedUpSkin')"
			source.disabledAndSelected="@Embed(source='/assets/flex_skins.swf', symbol='ButtonBar_buttonSelectedDisabledSkin')"
			/>
	</s:Group>
	
	<!-- layer 2: text -->
	<!--- The defines the appearance of the label(s) for the middle button(s) in the ButtonBar component. -->
	<s:Label id="labelDisplay"
             textAlign="center"
             verticalAlign="middle"
             lineBreak="explicit"
			 horizontalCenter="0" verticalCenter="1"
			 left="10" right="10" top="2" bottom="2">
	</s:Label>
	
</s:Skin>