<!-- Export a jar of .class files for the org.eclipse.ant.ui Eclipse plug-in
     along with other important plugin files to the "plugin-export" subdirectory
     of the target Eclipse installation -->
<project name="Export antui" default="export" basedir="..">

	<!-- Set the timestamp and important properties -->
	<target name="init">
		<tstamp/>
		<property name="destdir" value="../../plugin-export" />
		<property name="dest"  value="${destdir}/org.eclipse.ant.ui_3.0.0" />
	</target>

	<!-- Create the jar of .class files, and copy other important files to export dir -->
	<target name="export" depends="init">
		<mkdir dir="${destdir}" />
		<delete dir="${dest}" />
		<mkdir dir="${dest}" />
		<delete dir="${dest}/lib"/>
		<mkdir dir="${dest}/lib"/>
		<jar destfile="${dest}/antui.jar">
			<fileset dir="bin">
				<exclude name="org/eclipse/ant/ui/internal/antsupport/*"/>
				<exclude name="org/eclipse/ant/ui/internal/antsupport/inputhandler/*"/>
				<exclude name="org/eclipse/ant/ui/internal/antsupport/logger/*"/>
			</fileset>
		</jar>
		<!-- Create the source zip -->
		<zip destfile="${dest}/antuisrc.zip">
			<fileset dir="Ant Tools Support"/>
			<fileset dir="Ant Runner Support"/>
			<fileset dir="Ant Editor"/>
		</zip>
		<copy file="plugin.xml" todir="${dest}"/>
		<copy file="plugin.properties" todir="${dest}"/>
		<copy file=".classpath" todir="${dest}"/>
		<copy file=".options" todir="${dest}"/>
		<copy file="lib/antrunner.jar" todir="${dest}/lib"/>
		<copy file="lib/remoteAnt.jar" todir="${dest}/lib"/>
		<copy todir="${dest}/icons">
			<fileset dir="icons" />
		</copy>		
	</target>
	
</project>
