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

-->
<mx:PopUpMenuButton xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns.adobe.com/flex/spark" dataProvider="{myDP}" labelField="@label"
    showRoot="false" removed="doCleanup(event)">

	<fx:Script>
	<![CDATA[

         import mx.controls.Menu;

    [Bindable]
    public var myDP:XML =
    <topnode>
		<node label="Europe" enabled="false" data="EUROPE">
			<nodeitem type="check" label="Italy" enabled="false" data="ITALY" />
			<nodeitem type="check" label="England" data="ENGLAND" toggled="true"/>
			<nodeitem type="check" label="Slovenia" data="SLOVENIA" />
		</node>
		<node label="Asia" enabled="true" data="ASIA">
		    <nodeitem type="radio" groupName="group1" label="Phillipines" enabled="false" data="PHILIPPINES"/>
		    <nodeitem type="radio" groupName="group1" label="Japan" data="JAPAN"/>
		    <nodeitem type="radio" groupName="group1" label="China" data="CHINA"/>
		</node>
		<node label="Africa" data="AFRICA">
			<nodeitem label="Uganda" enabled="false" data="UGANDA">
			     <child label="Trees" />
			     <child label="Zebra" />
			</nodeitem>
			<nodeitem label="South Africa" data="SOUTH AFRICA"/>
			<nodeitem label="Nigeria" data="NIGERIA">
			    <child label="Waterfalls" />
			    <child label="Safari" />
			</nodeitem>
		</node>
	</topnode>;

	private function doCleanup(event:Event): void
	{
	    /*if(event.target == this)
	    {
	        var i:int = menus.length;
	        for (var x:int=0; x < i; x++)
	        {
	           var menu1:Menu = getMenuAt(x);
	           menu1.hide();
	        }
	    }*/
	}

	]]>
	</fx:Script>

</mx:PopUpMenuButton>
