<?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:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="500" height="475" title="Performance Benchmark Test" borderColor="#000000" backgroundAlpha="1.0">
	<mx:Script>
		<![CDATA[
			private var testRun:Boolean=false;
			public var runTestFunction:Function;
			public var uploadDataFunction:Function;
			public var closeFunction:Function;
			public var detailedData:String = "1";
			public var summaryData:String = "2";
			
			public function viewData():void
			{
				if (rbDetailed.selected)
					lstBenchmarkData.text = detailedData;
				else
					lstBenchmarkData.text = summaryData;
			}
			
		]]>
	</mx:Script>
	<mx:Form backgroundColor="#ffffff" width="100%" top="0" height="100%">		
		<mx:VBox width="100%" height="100%" backgroundColor="#ffffff" horizontalGap="0" verticalAlign="middle" verticalGap="0">
			<mx:HBox width="100%" horizontalAlign="right" verticalAlign="middle" height="30">
				<mx:HBox width="100%">
					<mx:Label text="Performance Benchmark Data:" fontWeight="bold"/>
				</mx:HBox>
				<mx:Label text="View: " fontWeight="bold"/>
				<mx:RadioButton label="Detailed" groupName="DataView" id="rbDetailed" click="viewData()" enabled="true"/>
				<mx:RadioButton label="Summary" groupName="DataView" id="rbSummary" click="viewData()" enabled="true" selected="true"/>
			</mx:HBox>
			<mx:HBox width="100%" height="100%">
				<mx:TextArea width="100%" height="100%" id="lstBenchmarkData"/>			
			</mx:HBox>
		</mx:VBox>
	</mx:Form>	
	<mx:ControlBar horizontalAlign="center" verticalAlign="middle">
		<mx:Button label="Upload Performance Data" id="cmdUpload" click="uploadDataFunction()" width="180" enabled="false"/>
		<mx:Button label="Close" width="180" id="cmd_Close" click="closeFunction()" color="#000000"/>
	</mx:ControlBar>	
</mx:Panel>
