<!--
 Copyright (c) 2008-2017 JGraph Ltd.
-->

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

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

	<property name="product.name"    value="mxGraph"/>
	<property name="product.version" value="3.8.0"/>
	<property name="all.jar"         value="mxgraph-all.jar"/>
	<property name="core.jar"        value="mxgraph-core.jar"/>
	<property name="swing.jar"       value="mxgraph-swing.jar"/>

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

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

<!-- ==================== 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}/example-classes"/>
		<delete dir="${basedir}/docs"/>
		<delete dir="${basedir}/lib"/>
	</target>

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

	<target name="init" depends="clean" description="Initializes the build">
		<tstamp/>
		<mkdir dir="${basedir}/classes"/>
		<mkdir dir="${basedir}/example-classes"/>
		<mkdir dir="${basedir}/docs"/>
		<mkdir dir="${basedir}/lib"/>
	</target>

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

	<target name="compile" depends="init" description="Compiles the source tree">
		<javac target="1.7" source="1.7" 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"
				 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-2017 <a href="http://www.jgraph.com/"
				target="_blank">Gaudenz Alder, JGraph Ltd</a>. All rights reserved.</font>]]></bottom>
			<link href="http://docs.oracle.com/javase/7/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>
		<jar jarfile="${basedir}/lib/${core.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="com/mxgraph/swing/**"/>
				<exclude name="**/*.java"/>
				<include name="com/mxgraph/**"/>
			</fileset>
			<fileset dir="${basedir}/classes">
				<exclude name="com/mxgraph/swing/**"/>
				<include name="com/mxgraph/**"/>
			</fileset>
		</jar>
		<jar jarfile="${basedir}/lib/${swing.jar}">
			<manifest>
				<attribute name="Vendor" value="JGraph Ltd"/>
				<attribute name="Bundle-Version" value="${product.version}"/>
				<attribute name="Bundle-SymbolicName" value="com.mxgraph"/>
			</manifest>
			<fileset dir="${source.home}">
				<include name="com/mxgraph/swing/**"/>
				<exclude name="**/*.java"/>
			</fileset>
			<fileset dir="${basedir}/classes">
				<include name="com/mxgraph/swing/**"/>
			</fileset>
		</jar>
		<delete dir="${basedir}/classes"/>
	</target>

<!-- ==================== compile-examples ==================== -->

	<target name="compile-examples" depends="compile" description="Compiles the examples">
		<javac target="1.7" source="1.7"
			debug="${compile.debug}"
			deprecation="${compile.deprecation}"
			optimize="${compile.optimize}"
			destdir="${basedir}/example-classes">
			<src path="${example.home}"/>
			<src path="${grapheditor.home}"/>
			<classpath>
				<pathelement path="${basedir}/classes"/>
				<pathelement path="${basedir}/example-classes"/>
				<pathelement location="${basedir}/jars/mxPdf.jar"/>
				<pathelement location="${basedir}/jars/jetty-6.1.1.jar"/>
				<pathelement location="${basedir}/jars/jetty-util-6.1.1.jar"/>
				<pathelement location="${basedir}/jars/servlet-api-2.5-6.1.1.jar"/>
			</classpath>
		</javac>
		<copy todir="${basedir}/example-classes">
		  <fileset dir="${example.home}">
		    <exclude name="**/*.java"/>
		  </fileset>
		</copy>
	</target>

<!-- ==================== web-example ==================== -->
	
	<target name="web-example" depends="compile-examples" description="Runs the web example">
		<java classname="com.mxgraph.examples.web.Main" dir="${basedir}/.." fork="true">
			<classpath>
				<pathelement path="${basedir}/classes"/>
				<pathelement path="${basedir}/example-classes"/>
				<pathelement location="${basedir}/jars/mxPdf.jar"/>
				<pathelement location="${basedir}/jars/jetty-6.1.1.jar"/>
				<pathelement location="${basedir}/jars/jetty-util-6.1.1.jar"/>
				<pathelement location="${basedir}/jars/servlet-api-2.5-6.1.1.jar"/>
			</classpath>
		</java>
	</target>

<!-- ==================== grapheditor ==================== -->
	
	<target name="grapheditor" depends="compile-examples" description="Runs the grapheditor example">
		<java classname="com.mxgraph.examples.web.GraphEditor" dir="${basedir}/.." fork="true">
			<classpath>
				<pathelement path="${basedir}/classes"/>
				<pathelement path="${basedir}/example-classes"/>
				<pathelement location="${basedir}/jars/mxPdf.jar"/>
				<pathelement location="${basedir}/jars/jetty-6.1.1.jar"/>
				<pathelement location="${basedir}/jars/jetty-util-6.1.1.jar"/>
				<pathelement location="${basedir}/jars/servlet-api-2.5-6.1.1.jar"/>
			</classpath>
		</java>
	</target>

</project>
