<?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:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" title="Results" width="200" height="200" showCloseButton="true" close="close()" borderStyle="solid">
	<mx:Script>
	<![CDATA[

		import mx.managers.*;

		public function showResult(result:Object):void
		{
			resultMessage.text = result.toString();
		}

		public function showSuccess():void
		{
			resultMessage.text = "Operation executed";
		}

		private function close():void
		{
			PopUpManager.removePopUp(this);
		}

	]]>
	</mx:Script>
	<mx:Spacer height="20%"/>	    
	<mx:VBox height="80%">
	   <mx:Label id="resultMessage" /> 
	</mx:VBox>
	
</mx:TitleWindow>