<?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:Module xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx"
			   xmlns:local="*">
	<fx:Script>
		<![CDATA[
			import spark.events.IndexChangeEvent;
			
			[Bindable]
			private var totalPrice:Number = 0.00;
			
			protected function itemIndexChangeHandler(event:IndexChangeEvent):void
			{
				if (ta.text.length!=0) 
					ta.text=ta.text+"\n"+myList.selectedItem.name + " $"+myList.selectedItem.price;
				else ta.text=myList.selectedItem.name+ " $"+myList.selectedItem.price;
				totalPrice += Number(myList.selectedItem.price);
			}
			protected function buyBtn_clickHandler(event:MouseEvent):void
			{
				txtResponse.text="Thank you for your order totaling: " + usdFormatter.format(totalPrice) + "\nItems will ship in 3 days.";
			}

		]]>
	</fx:Script>
	<fx:Declarations>
		<mx:CurrencyFormatter id="usdFormatter" precision="2" currencySymbol="$"
							  decimalSeparatorFrom="." decimalSeparatorTo="." useNegativeSign="true"
							  useThousandsSeparator="true" alignSymbol="left"/>
	</fx:Declarations>
	<fx:Style>
		@namespace "library://ns.adobe.com/flex/spark";
		#vGrp { 
			color: #000000; 
			fontFamily: "Arial";
			fontSize: "12";
		}
	</fx:Style>
		
	<s:Panel title="List Sample" 
			 width="100%" height="100%"  
			 >
		<s:VGroup id="vGrp" horizontalCenter="0" top="3" 
				  width="80%" height="75%">
			<s:HGroup verticalAlign="middle">
				<s:Label text="Select items to add, price will be shown when added:" 
							  verticalAlign="bottom"/>
			</s:HGroup>
			<s:HGroup >
				<s:List id="myList" height="157" width="160" 
						itemRenderer="MyListItemRenderer" 
						change="itemIndexChangeHandler(event)">
					<s:dataProvider>
						<s:ArrayCollection>
							<local:Item name="Backpack" photo="assets/ApacheFlexIcon.png" price="29.99"/>
							<local:Item name="Boots" photo="assets/ApacheFlexIcon.png" price="69.99"/>
							<local:Item name="Compass" photo="assets/ApacheFlexIcon.png" price="12.99"/>
							<local:Item name="Goggles" photo="assets/ApacheFlexIcon.png" price="14.99"/>
							<local:Item name="Helmet" photo="assets/ApacheFlexIcon.png" price="47.99"/>
						</s:ArrayCollection>
					</s:dataProvider>
				</s:List>
				<s:TextArea id="ta" width="{myList.width}" height="{myList.height}" 
							color="0xAE0A0A" fontWeight="bold"/>
				<s:VGroup>
					<mx:Spacer height="10"/>
					<s:Label text="Total of Items selected: {usdFormatter.format(this.totalPrice)}"/> 
					<s:Button id="buyBtn" horizontalCenter="0" bottom="30" label="Buy Now!" 
							  fontWeight="bold" 
							  click="buyBtn_clickHandler(event)"/>
					<s:Label id="txtResponse"/>
				</s:VGroup>
			</s:HGroup>
		</s:VGroup>
		<s:Label bottom="15" horizontalCenter="0" width="95%" verticalAlign="justify" 
					  text="The Spark List control displays a list of data items. Its functionality is
very similar to that of the SELECT form element in HTML. The user can select one or more items from the list. 
The List control automatically displays horizontal and vertical scroll bar when the list items do not fit 
the size of the control."/>
	</s:Panel>
	
	
</s:Module>
