<?xml version="1.0"?>
<!--
  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.
  -->

<!-- Simple example to demonstrate the List Control -->
<mx:Module xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx"
				paddingBottom="0" paddingTop="0" paddingLeft="0" paddingRight="0"
				height="100%" width="100%">

     <fx:Script>
        <![CDATA[
        	[Bindable]
            public var selectedItem:Object;
       ]]>
    </fx:Script>


	<fx:Declarations>
	    <fx:Model id="mystates">
	      <states>
	        <state label="Alabama" data="AL"/>
	        <state label="Alaska" data="AK"/>
	        <state label="Arizona" data="AZ"/>
	        <state label="Arkansas" data="AR"/>
	        <state label="California" data="CA"/>
	        <state label="Colorado" data="CO"/>
	        <state label="Connecticut" data="CT"/>
	      </states>
	    </fx:Model>
	</fx:Declarations>
	
    <mx:Panel title="List Control Example"
				paddingBottom="10" paddingTop="10" paddingLeft="10" paddingRight="10"
				height="100%" width="100%">

        <mx:Label text="Select a state to see its abbreviation."/>

        <mx:List id="source" width="100%"
            dataProvider="{mystates.state}"
            change="this.selectedItem=List(event.target).selectedItem"/>

        <mx:VBox width="100%">
            <mx:Label text="Selected State: {selectedItem.label}"/>
            <mx:Label text="State abbreviation: {selectedItem.data}"/>
        </mx:VBox>

    </mx:Panel>
</mx:Module>       
