<?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:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
		xmlns:s="library://ns.adobe.com/flex/spark" 
		title="CalloutButton">
	
	<fx:Script>
		<![CDATA[
			
			protected function buttonHandler(event:MouseEvent):void
			{
				if(currentState == "DemoState")
				{
					currentState = "InfoState";				
				}
				else if(currentState == "InfoState")
				{
					currentState = "DemoState";
				}
			}
			
		]]>
	</fx:Script>	
	<s:states>
		<s:State name="DemoState"/>
		<s:State name="InfoState"/>
	</s:states>	
	<fx:Declarations>
		<s:MultiDPIBitmapSource id="aboutIcon" 
								source160dpi="@Embed('assets/icons/160/about.png')" 
								source240dpi="@Embed('assets/icons/240/about.png')" 
								source320dpi="@Embed('assets/icons/320/about.png')" 
								source480dpi="@Embed('assets/icons/480/about.png')"/>
		<s:MultiDPIBitmapSource id="demoIcon" 
								source160dpi="@Embed('assets/icons/160/dock.png')" 
								source240dpi="@Embed('assets/icons/240/dock.png')" 
								source320dpi="@Embed('assets/icons/320/dock.png')" 
								source480dpi="@Embed('assets/icons/480/dock.png')"/>
	</fx:Declarations>
	<s:VGroup includeIn="DemoState" width="100%" height="100%" horizontalAlign="center" verticalAlign="middle">
		<s:CalloutButton label="Callout List" horizontalCenter="0">
			<s:List>
				<s:ArrayList>
					<fx:Object label="Item 1"/>
					<fx:Object label="Item 2"/>
					<fx:Object label="Item 3"/>
					<fx:Object label="Item 4"/>
					<fx:Object label="Item 5"/>
				</s:ArrayList>
			</s:List>
		</s:CalloutButton>	
		<s:Spacer height="10"/>
		<s:CalloutButton label="Callout Spinner" horizontalCenter="0">
			<s:DateSpinner displayMode="dateAndTime" id="spinnerDate"/>
		</s:CalloutButton>
		<s:Spacer height="10"/>
		<s:CalloutButton label="Callout Check Boxes" horizontalCenter="0" >
			<s:VGroup includeIn="DemoState" horizontalAlign="center" width="100%" height="100%" 
					  paddingLeft="5" paddingRight="10" paddingTop="5" paddingBottom="5">
				<s:CheckBox label="CheckBox 1" />
				<s:CheckBox label="CheckBox 2" />
				<s:CheckBox label="CheckBox 3" />
			</s:VGroup>
		</s:CalloutButton>
	</s:VGroup>
	<s:TextArea includeIn="InfoState" selectable="false" left="10" right="10" top="10" bottom="10" editable="false" 
				text="The CalloutButton control is a drop down component that defines a button to open and close a Callout container. The CalloutButton specifies the layout and child components of the Callout container.				
				&#xd; &#xd;The CalloutButton control uses the spark.components.supportClasses.DropDownController class to manage the Callout container. You can access the DropDownController by using the protected CalloutButton.dropDownController property.				
				&#xd; &#xd;When the callout is open:				
				&#xd; &#xd;Clicking the button closes the callout
				&#xd; &#xd;Clicking outside of the callout closes the callout."/>	
	<s:actionContent>
		<s:Button click="buttonHandler(event)" icon.DemoState="{aboutIcon}" icon.InfoState="{demoIcon}"/>
	</s:actionContent>	
</s:View>
