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

-->
<!-- Simple example to demonstrate the Spark ComboBox control -->
<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">
                   
    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection; 
            
            [Bindable]
            public var complexDP:ArrayCollection = new ArrayCollection(
                [	{ingredient:"Salmon", category:"Meat"}, 
                	{ingredient:"Potato", category:"Starch"}, 
                	{ingredient:"Cucumber", category:"Vegetable"}, 
                    {ingredient:"Steak", category:"Meat"}, 
                    {ingredient:"Rice", category:"Starch"}, 
                    {ingredient:"Cumin", category:"Spice"}
                ]                
            );

			<!-- Function to handel custom input strings -->                        
            private function myLabelToItemFunction(input:String):*
            {
            	<!-- Returns object that matches items in dataProvider -->
                return {ingredient:input, category:"mystery"};
            }            
        ]]>
    </fx:Script>
    
    <s:Panel title="Spark ComboBox Example" width="75%" height="75%">    
    	<s:layout>
    		<s:VerticalLayout paddingTop="10" paddingLeft="10"/>
    	</s:layout>
    
    	<!-- Label that displayed current property values -->
		<s:Label text="Index : {cb.selectedIndex} 
						Item : {cb.selectedItem.ingredient} 
						Type : {cb.selectedItem.category}"/>

		<!-- ComboBox with custom labelToItem function -->
		<s:ComboBox 
			id="cb" 
			dataProvider="{complexDP}" 
			width="150" 
			labelToItemFunction="{myLabelToItemFunction}"
			selectedIndex="0" 
			labelField="ingredient"/>   			
	</s:Panel>    
</s:Application>