<project name="gwtext" default="build" basedir=".">
    <property name="gwtext.root" location=".."/>
    <property name="project.tail" value="main"/>
    <import file="${gwtext.root}/common.ant.xml"/>

    <!--
         Default hosted mode test cases
     -->
    <fileset id="default.hosted.tests" dir="${javac.junit.out}"
             includes="${gwtext.junit.testcase.includes}">
        <exclude name="com/gwtext/client/Test.class"/>

    </fileset>

    <!--
         Default web mode test cases
     -->
    <fileset id="default.web.tests" dir="${javac.junit.out}"
             includes="${gwtext.junit.testcase.includes}">
        <exclude name="com/gwtext/client/Test.class"/>
    </fileset>


    <target name="compile" description="Compile all class files">
        <mkdir dir="${javac.out}"/>
        <gwt.javac>
            <classpath>
                <pathelement location="${gwtext.tools.lib}/tomcat/servlet-api-2.4.jar"/>
                <pathelement location="${gwtext.tools.lib}/junit/junit-3.8.1.jar"/>
                <pathelement location="${gwt.user.jar}"/>
            </classpath>
        </gwt.javac>
    </target>

    <target name="compile.tests" description="Compiles the test code for this project">
        <mkdir dir="${javac.junit.out}"/>
        <gwt.javac srcdir="test" destdir="${javac.junit.out}">
            <classpath>
                <pathelement location="${javac.out}"/>
                <pathelement location="${gwtext.tools.lib}/junit/junit-3.8.1.jar"/>
                <pathelement location="${gwt.user.jar}"/>
            </classpath>
        </gwt.javac>
    </target>

    <target name="build" depends="compile" description="Build and package this project">
        <mkdir dir="${gwtext.build.lib}"/>
        <gwt.jar>
            <fileset dir="src">
                <exclude name="**/package.html"/>
                <!--do not distribute ext-->
                <!--<exclude name="com/gwtext/public/**/*"/>-->
            </fileset>


            <fileset dir="${javac.out}"/>
        </gwt.jar>
    </target>

    <target name="checkstyle" description="Static analysis of source">
        <gwt.checkstyle>
            <fileset dir="src"/>
        </gwt.checkstyle>
    </target>

    <target name="remoteweb-test" description="Run a remoteweb test at the given host and path">
        <echo message="Performing remote browser testing at rmi://${gwtext.remote.browser}"/>
        <gwt.junit test.args="-port ${gwtext.junit.port} -out www -web -remoteweb rmi://${gwtext.remote.browser}"
                   test.out="${junit.out}/${gwtext.remote.browser}" test.cases="default.web.tests"/>
    </target>

    <target name="test.hosted" depends="compile, compile.tests"
            description="Run only hosted-mode tests for this project.">
        <gwt.junit test.args="-port ${gwtext.junit.port}" test.out="${junit.out}/${build.host.platform}-hosted-mode"
                   test.cases="default.hosted.tests"/>
    </target>

    <target name="test.web" depends="compile, compile.tests" description="Run only web-mode tests for this project.">
        <gwt.junit test.args="-port ${gwtext.junit.port} -out www -web"
                   test.out="${junit.out}/${build.host.platform}-web-mode" test.cases="default.web.tests"/>
    </target>

    <target name="test" depends="compile, compile.tests"
            description="Run hosted-mode, web-mode and remoteweb tests for this project.">
        <property.ensure name="distro.built" location="${gwtext.dev.staging.jar}"
                         message="GWT Ext must be built before performing any tests.  This can be fixed by running ant in the ${gwtext.root} directory."/>

        <!--
              Run hosted and web mode tests for the platform on which this build
              is executing
          -->
        <parallel threadcount="1">
            <antcall target="test.hosted"/>

           <!-- <antcall target="test.web"/>-->

            <!--
                   Run remote browser testing for the comma delimited list of remote browsers
               -->
            <!--<foreach list="${gwtext.remote.browsers}" delimiter="," parallel="true" maxThreads="1"
                     target="remoteweb-test" param="gwtext.remote.browser"/>-->
        </parallel>
    </target>

    <target name="clean" description="Cleans this project's intermediate and output files">
        <delete dir="${project.build}"/>
        <delete file="${project.lib}"/>
    </target>

</project>
