<?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">
	
	<fx:Script>
		<![CDATA[
			
			private function loadModule(title:String, url:String):void
			{
				var p:ModulePanel = new ModulePanel();
				p.title = title;
				p.url = url;
				hBox.addChild(p);
			}
			
		]]>
	</fx:Script>
	
	<fx:Declarations>
		<fx:Component className="ModulePanel">
			<s:Panel>
				<fx:Script>
					<![CDATA[
						[Bindable]
						public var url:String;
					]]>
				</fx:Script>
				
				<s:layout>
					<s:VerticalLayout horizontalAlign="center" />
				</s:layout>
				
				<mx:ModuleLoader id="ml" url="{url}" width="100%" height="100%">
					<mx:unload>
						if(parent != null)
						{
							parent.removeChild(this);
						}
					</mx:unload>
				</mx:ModuleLoader>
				<mx:ControlBar>
					<s:Button label="unload" click="ml.unloadModule()"/>
				</mx:ControlBar>
			</s:Panel>
		</fx:Component>
	</fx:Declarations>
	
	<s:layout>
		<s:VerticalLayout horizontalAlign="center"/>
	</s:layout>
	
	<s:Panel title="Module Sample" width="100%" height="100%">

		<s:layout>
			<s:VerticalLayout paddingLeft="10" paddingRight="10" paddingTop="10" paddingBottom="10" />
		</s:layout>
		
		<s:Button label="Load Module 1" click="loadModule('module 1', './spark/modules/Module1.swf')"/>
		<s:Button label="Load Module 2" click="loadModule('module 2', './spark/modules/Module2.swf')"/>
	
		<mx:HBox id="hBox" />
		
	</s:Panel> 
</s:Module>
