<!--
 Copyright 2007 Sun Microsystems, Inc.  All Rights Reserved.

 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions
 are met:

   - Redistributions of source code must retain the above copyright
     notice, this list of conditions and the following disclaimer.

   - Redistributions in binary form must reproduce the above copyright
     notice, this list of conditions and the following disclaimer in the
     documentation and/or other materials provided with the distribution.

   - Neither the name of Sun Microsystems nor the names of its
     contributors may be used to endorse or promote products derived
     from this software without specific prior written permission.

 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
 IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->

<project name="swing" default="build" basedir=".">
    
    <import file="../common/shared.xml"/>
   
    <target name="-pre-init" depends="-check-swing.windows" if="swing.windows">
        <property name="excludes" value="com/sun/java/swing/plaf/gtk/"/>
    </target>

    <target name="-check-swing.windows">
        <condition property="swing.windows">
            <os family="windows"/>
        </condition>
    </target>

     <target name="-post-compile">
        <mkdir dir="${dist.dir}/lib"/>
        <jar destfile="${dist.dir}/lib/swing.jar">
            <fileset dir="${classes.dir}">
                <include name="javax/swing/**/*.class"/>
                <include name="com/sun/swing/**/*.class"/>
                <include name="com/sun/java/swing/**/*.class"/>
                <include name="sun/swing/**/*.class"/>
            </fileset>
            <fileset dir="${share.src.dir}">
                <include name="javax/swing/**/*.bdtd"/>
                <include name="javax/swing/**/*.css"/>
                <include name="javax/swing/**/*.dtd"/>
                <include name="javax/swing/**/*.gif"/>
                <include name="javax/swing/**/*.html"/>
                <include name="javax/swing/**/*.jpg"/>
                <include name="javax/swing/**/*.png"/>
                <include name="javax/swing/**/*.txt"/>
                <include name="javax/swing/**/*.wav"/>

                <include name="com/sun/swing/**/*.properties"/>

                <include name="com/sun/java/swing/**/*.gif"/>
                <include name="com/sun/java/swing/**/*.png"/>
                <include name="com/sun/java/swing/**/*.properties"/>
                <include name="com/sun/java/swing/**/*.xml"/>
            </fileset>
        </jar>
    </target>
    
    <target name="-demo-init" depends="-demo-init.unix,-demo-init.windows">
        <property name="swing.demo.src" value="${root}/src/share/demo/jfc/SampleTree"/>
        <property name="swing.demo.classes" value="${build.dir}/demo/jfc/SampleTree"/>
    </target>

    <target name="-demo-init.unix" if="osfamily.unix">
        <property name="demo.bootclasspath"
            value="-Xbootclasspath/p:${dist.dir}/lib/swing.jar:${classes.dir}"/>
    </target>

    <target name="-demo-init.windows" if="os.windows">
        <property name="demo.bootclasspath"
            value="-Xbootclasspath/p:${dist.dir}/lib/swing.jar;${classes.dir}"/>
    </target>

    <target name="run" depends="-init,-demo-init">
        <mkdir dir="${swing.demo.classes}"/>
        <property name="jvm.args" value=""/>
        <javac srcdir="${swing.demo.src}" destdir="${swing.demo.classes}"
            fork="true" failonerror="true"
            classpath="${dist.dir}/lib/swing.jar:${classes.dir}"
            debug="${javac.debug}" debuglevel="${javac.debuglevel}">
            <compilerarg line="${javac.options}"/>
        </javac>
        <copy todir="${swing.demo.classes}">
            <fileset dir="${swing.demo.src}" includes="resources/**/*.gif"/>
        </copy>
        <java classname="SampleTree" classpath="${swing.demo.classes}"
            fork="true" failonerror="true"
            jvm="${bootstrap.jdk}/bin/java">
            <jvmarg line="${demo.bootclasspath}"/>
            <arg line="${jvm.args}"/>
        </java>
    </target>

    <target name="clean" depends="-init,-demo-init,shared.clean">
        <delete file="${dist.dir}/lib/swing.jar"/>
        <delete dir="${swing.demo.classes}"/>
    </target>
    
</project>
