<?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="components/DataGrid/DataGrid_HaloSkin/Events/"  xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" testSWF="DataGridApp_halo.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[

    ]]>
    </mx:Script>

	<testCases>

        <!-- This used to cause an RTE, so we're just going to assert something simple. -->
        <TestCase testID="dataGrid_events_focusIn_TextAreaHeaderWithScrollbar_halo" keywords="[DataGrid,focusIn,InteractivieObject]" description="Click in a header which uses a TextArea as the renderer, and scrolls.">
            <setup>
                <ResetComponent target="dg1" className="mx.controls.DataGrid" waitEvent="updateComplete" />
                <SetProperty target="dg1" propertyName="width" value="200" />
                <SetProperty target="dg1" propertyName="height" value="200" />
                <RunCode code="application.setDataProvider(application.dg1)" waitTarget="dg1" waitEvent="updateComplete" />
                <RunCode code="application.setColumnConfig5(application.dg1)" waitTarget="dg1" waitEvent="updateComplete" />
            </setup>
            <body>
                <DispatchMouseClickEvent target="dg1.mx_internal:dataGridHeader.mx_internal:rendererArray.0" localX="2" localY="2" waitEvent="updateComplete" />
                <AssertPropertyValue target="dg1.mx_internal:dataGridHeader.mx_internal:rendererArray.0" propertyName="text" value="start This is the song that never ends. Yes, it goes on and on my friends. Some people started singing it, not knowing what it was and they'll continue singing it forever just because this is the song that never ends. Yes, it goes on and on my friends. Some people started singing it, not knowing what it was and they'll continue singing it forever just because end" />
            </body>
        </TestCase>

	</testCases>                
	     
</UnitTester>
