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

-->
<UnitTester testDir="apollo/spark/components/Window/integration/"  xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" testSWF="window_basic_005.mxml">

	<!-- this set of lines form a template that must be in each unit test -->
	<mx:Script>
	<![CDATA[
	public static function init(o:DisplayObject):void
	{
	}
	]]>
	</mx:Script>
	<mx:Metadata>
	<![CDATA[
		[Mixin]
	]]>
	</mx:Metadata>
	<!-- end of set of lines that must be in each unit test -->

	<mx:Script>
	<![CDATA[

        import mx.core.FlexGlobals;
        import spark.skins.spark.*;
        import comps.*;

	]]>
	</mx:Script>

	<testCases>

<!--
========================================================
Basic focus test.
========================================================
-->

<TestCase testID="focus_test1" keywords="[Window,states]" description="Give focus to a TextInput and type in it." >
    <setup>
        <RunCode code="FlexGlobals.topLevelApplication.closeAllChildWindow()"/>
        <RunCode code="FlexGlobals.topLevelApplication.windowObj=FlexGlobals.topLevelApplication.createAWindowByClass(MyWindowWithContents,'window1')"  waitTarget="" waitEvent="myWindowComplete"/>        
    </setup> 
    <body>    	
    	<WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="4"/>
        <DispatchMouseEvent target="windowObj.ta" type="mouseDown" localX="10" localY="10" waitEvent="focusIn" />
        <DispatchMouseEvent  target="windowObj.ta" type="mouseUp" localX="10" localY="10" waitEvent="mouseUp" waitTarget="windowObj.ta" />
        <DispatchKeyEvent char="boogie" window="windowObj" waitTarget="windowObj.ta" waitEvent="change" />
        <WaitForEvent target="stage" eventName="enterFrame" numExpectedEvents="4"/>
        <AssertPropertyValue target="windowObj.ta" propertyName="text" value="boogie" />
       
    </body>
</TestCase>

	</testCases>
</UnitTester>
