<!--
 $Id: jgraphx-build.xml,v 1.1 2012/11/15 13:26:44 gaudenz Exp $
 Copyright (c) 2008 Gaudenz Alder
-->

<!-- ===================== Project Properties =========================== -->

<project name="mxgraph" default="all" basedir=".">

	<property name="product.name"    value="JGraph X"/>
	<property name="product.version" value="2.1.0.7"/>
	<property name="all.jar"         value="jgraphx.jar"/>

<!-- ===================== Project Environment =========================== -->

	<property name="source.home"    value="${basedir}/src"/>
	<property name="example.home"   value="${basedir}/examples"/>

<!-- ==================== Compilation Options ==================== -->

	<property name="compile.debug"       value="false"/>
	<property name="compile.deprecation" value="false"/>
	<property name="compile.optimize"    value="true"/>

<!-- ==================== All ==================== -->

	<target name="all" depends="build"
		description="Clean up and build the project"/>

<!-- ==================== Clean ==================== -->

	<target name="clean" description="Deletes all generated files and directories">
		<delete dir="${basedir}/classes"/>
		<delete dir="${basedir}/docs"/>
		<delete dir="${basedir}/lib"/>
	</target>

<!-- ==================== Init ==================== -->

	<target name="init" description="Initializes the build">
		<tstamp/>
		<mkdir dir="${basedir}/classes"/>
		<mkdir dir="${basedir}/docs"/>
		<mkdir dir="${basedir}/docs/api"/>
		<mkdir dir="${basedir}/docs/manual"/>
		<mkdir dir="${basedir}/lib"/>
	</target>

<!-- ==================== Compile ==================== -->

	<target name="compile" depends="init" description="Compiles the source tree">
		<javac srcdir="${source.home}"
			debug="${compile.debug}"
			deprecation="${compile.deprecation}"
			optimize="${compile.optimize}"
			destdir="${basedir}/classes">
			<classpath>
				<pathelement path="${basedir}/classes"/>
			</classpath>
		</javac>
	</target>

<!-- ==================== Doc ==================== -->

	<target name="doc" depends="compile" description="Generates the API specification (javadoc)">
		<javadoc packagenames="com.mxgraph.*"
				 sourcepath="${source.home}"
				 classpath="${basedir}/classes" 
				 destdir="${basedir}/docs/api"
				 use="true"
				 author="false"
				 version="false"
				 windowtitle="${product.name} ${product.version} API Specification"
				 doctitle="${product.name} ${product.version} API Specification">
			<header><![CDATA[<p><b>${product.name} ${product.version}</b></p>]]></header>
			<bottom><![CDATA[<font size=1>Copyright (c) 2010 <a href="http://www.mxgraph.com/"
				target="_blank">Gaudenz Alder</a>. All rights reserved.</font>]]></bottom>
			<link href="http://download.oracle.com/javase/1.5.0/docs/api/"/>
		</javadoc>
	</target>

<!-- ==================== Build ==================== -->

	<target name="build" depends="doc" description="Builds all Java archives (JARs)">
		<jar jarfile="${basedir}/lib/${all.jar}">
			<manifest>
				<attribute name="Vendor" value="JGraph Ltd"/>
				<attribute name="Bundle-Version" value="${product.version}"/>
				<attribute name="Bundle-SymbolicName" value="com.mxgraph"/>
				<attribute name="Main-Class" value="com.mxgraph.view.mxGraph"/>
			</manifest>
			<fileset dir="${source.home}">
				<exclude name="**/*.java"/>
			</fileset>
			<fileset dir="${basedir}/classes">
				<include name="com/mxgraph/**"/>
			</fileset>
		</jar>
		<delete dir="${basedir}/classes"/>
	</target>
			
<!-- ==================== Example ==================== -->

    <target name="example" depends="build" description="Compiles the examples">
		<javac srcdir="${example.home}" debug="${compile.debug}" deprecation="${compile.deprecation}"
			optimize="${compile.optimize}" destdir="${example.home}">
			<classpath>
				<pathelement path="${basedir}/lib/${all.jar}"/>
			</classpath>
		</javac>
    </target>
	    
<!-- ==================== Editor ==================== -->

    <target name="editor" depends="example" description="Runs the graph editor example">
		<java fork="true" classname="com.mxgraph.examples.swing.GraphEditor">
			<classpath>
				<pathelement path="${example.home}"/>
				<pathelement path="${basedir}/lib/${all.jar}"/>
			</classpath>
		</java>
    </target>

</project>
