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

<!-- PopUpMenuButton control example. -->
<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[
            import mx.events.*;
            import mx.controls.*;
			
            //Event handler, invoked when you select from the menu.
            public function itemClickHandler(event:MenuEvent):void {
                Alert.show("Menu label: " + event.label
                    + "  \n menu item index within parent menu: " + event.index);
            }
        ]]>
    </fx:Script>
	
	<fx:Declarations>
	    <!-- A an data provider in E4X format. -->
	    <fx:XMLList id="treeDP2">
	        <node label="Inbox"/>
	        <node label="Calendar"/>
	        <node label="Deleted Items"/>
	    </fx:XMLList>
	</fx:Declarations>

    <mx:Panel title="PopUpMenuButton Control Example"
				paddingBottom="10" paddingTop="10" paddingLeft="10" paddingRight="10"
				height="100%" width="100%">

		<mx:Label width="100%"
		    text="Click the down arrow to open the menu."/>

        <mx:PopUpMenuButton id="p2" 
            dataProvider="{treeDP2}" 
            labelField="@label"
            itemClick="itemClickHandler(event)"/>

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