<?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:Application 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="1024" minHeight="768" creationComplete="application1_creationCompleteHandler(event)">
	<fx:Style>
		@namespace s "library://ns.adobe.com/flex/spark";
		@namespace mx "library://ns.adobe.com/flex/mx";
		
		@font-face{
			src: url("../../../Assets/Fonts/Open_Sans/OpenSans-Regular.ttf");
			fontFamily: SparkVera;
			embedAsCFF: true;
		}
		
		@font-face{
			src: url("../../../Assets/Fonts/Open_Sans/OpenSans-Bold.ttf");
			fontWeight: bold;
			fontFamily: SparkVera;
			embedAsCFF: true;
		}
		
		@font-face{
			src: url("../../../Assets/Fonts/Open_Sans/OpenSans-Italic.ttf");
			fontStyle: italic;
			fontFamily: SparkVera;
			embedAsCFF: true;
		}

		@font-face{
			src: url("../../../Assets/Fonts/Open_Sans/OpenSans-BoldItalic.ttf");
			fontWeight: bold;
			fontStyle: italic;
			fontFamily: SparkVera;

			embedAsCFF: true;
		}


		
		global {
			chromeColor: #DDAA66;	
			fontAntiAliasType: "normal";
			fontFamily: SparkVera;
			fontLookup: "embeddedCFF";
		}
		
		
		s|DropDownList
		{
			borderColor: #FF0000;
			fontSize: 16;
		}
		
		s|Button#gumboButton
		{
			chromeColor: #AAFFAA;
			fontSize: 16;
		}
		
		s|Panel s|Label
		{
			fontSize: 16;
		}
		
		s|Button.myStyle
		{
			chromeColor: #FFFFAA;
			fontSize: 14;
		}
		
		s|HGroup s|RichText
		{
			chromeColor: #BBAAAA;
			fontSize: 14;
		}
		
		.classOfStyle
		{
			color: #0FFFFA;	
			fontSize: 20;
		}
	</fx:Style>
	
	<fx:Script>
		<![CDATA[
			import mx.events.FlexEvent;
			import mx.collections.ArrayList;
			import mx.events.ModuleEvent;
			import mx.events.StyleEvent;
			import mx.controls.Alert;
			
			private var arr:Array =
				[
					{ label:'Apple', data:10.00},
					{ label:'Banana', data:15.00 },
					{ label:'Melon', data:3.50 },
					{ label:'Kiwi', data:7.65},
					{ label:'Strawberry',data:12.35 },
					{ label:'Other', data:00.00}
				];
			
			private var listArr :ArrayList = new ArrayList(arr);
			
			protected function application1_creationCompleteHandler(event:FlexEvent):void
			{
				appList.dataProvider = listArr;
			}
			
			
			public function iniit():void
			{
				swf_loader.load("assets/MP_SubApp.swf");
			}
			
			public function unload():void
			{
				swf_loader.unloadAndStop();
			}
		]]>
	</fx:Script>
	<s:layout>
		<s:VerticalLayout />
	</s:layout>
	<s:Button label="Load Swf" click="iniit()" />
	<s:Button label="UnLoad Swf" click="unload()" />
	
	<s:VGroup id="groupId">
		<s:VGroup >
			<s:CheckBox id="checkBox" label="Check Box" />
			<s:Label text="Label Outside Panel"  />
		</s:VGroup>
		<s:HGroup rotation="10">
			<s:NumericStepper id="numericStepper" stepSize="1" minimum="1" maximum="10" />
			<s:RichText text="This Text is Rich !!" />
		</s:HGroup>
		<s:RichText text="This Text is also Rich !!" />
		<s:Panel title="Gumbo Panel" id="appPanel" rotation="-5">
			<s:layout>
				<s:VerticalLayout />
			</s:layout>
			
			<s:Button id="gumboButton" label="Gumbo Button"  />
			<s:Button id="gumboButton2" label="Second Gumbo Button" styleName="myStyle"  />
			<s:Label text="Spark Label"  />
			<s:Label text="Spark Label class selector" styleName="classOfStyle"  />
			<s:DropDownList id="appList"  />
		</s:Panel>
		<mx:SWFLoader id="swf_loader" />
	</s:VGroup>
	
	
</s:Application>
