<?php
require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
$App 	= new App();
$Nav	= new Nav();
$Menu 	= new Menu();
include($App->getProjectCommon());

	$pageTitle 		= "SWTBot &ndash; Downloads";

 	$ganymede_dev_version = file_get_contents($App->getDownloadBasePath()."/technology/swtbot/ganymede/dev-build/version.txt");
 	$galileo_dev_version = file_get_contents($App->getDownloadBasePath()."/technology/swtbot/galileo/dev-build/version.txt");

	# Paste your HTML content between the ob_start/ob_end_clean markers!
	ob_start();
?>
	<div id="midcolumn">
		<p>We recommend that you use the update site for your downloads. It's easier to install and allows you to stay up to date with the latest versions of SWTBot using the eclipse update manager.</p>

		<p>SWTBot comes in two flavors, one that works with SWT and one that builds on top of SWT and works with Eclipse.</p>

		<p>If you are a plugin developer you should be downloading 'SWTBot for Eclipse Testing'. If you don't know what that means, you should be downloading 'SWTBot for SWT Testing'</p>

	<!-- downloads -->
		<div class="homeitem3col">
			<!-- <h3>Nightly build</h3>

			<p>Nightly builds of SWTBot are extremely stable, since SWTBot has a large number of tests, providing very good test coverage.</p> -->


			<p><strong>Supports Eclipse 3.5 (Galileo)</strong></p>

			<ul>
				<li>
					<a title="Update Site Zip" href="http://www.eclipse.org/downloads/download.php?file=/technology/swtbot/galileo/dev-build/swtbot-update-site-<? echo $galileo_dev_version; ?>.zip"><img border=0 src="/swtbot/images/icon-save.gif"></a>
					<a href="http://download.eclipse.org/technology/swtbot/galileo/dev-build/update-site">http://download.eclipse.org/technology/swtbot/galileo/dev-build/update-site</a>
				</li>

				<li>
					<a title="SWTBot for SWT Testing" href="http://www.eclipse.org/downloads/download.php?file=/technology/swtbot/galileo/dev-build/org.eclipse.swtbot-<? echo $galileo_dev_version; ?>.zip"><img border=0 src="/swtbot/images/icon-save.gif"></a> <b>SWTBot for SWT Testing</b>
				</li>


				<li>
					<a title="SWTBot for SWT Testing" href="http://www.eclipse.org/downloads/download.php?file=/technology/swtbot/galileo/dev-build/org.eclipse.swtbot.eclipse-<? echo $galileo_dev_version; ?>.zip"><img border=0 src="/swtbot/images/icon-save.gif"></a> <b>SWTBot for Eclipse Testing</b>
				</li>

				<li>
					<a title="SWTBot for GEF Testing" href="http://www.eclipse.org/downloads/download.php?file=/technology/swtbot/galileo/dev-build/org.eclipse.swtbot.eclipse.gef-<? echo $galileo_dev_version; ?>.zip"><img border=0 src="/swtbot/images/icon-save.gif"></a> <b>SWTBot for GEF Testing (Requires GEF runtime >= v3.4.2)</b>
				</li>

				<li>
					<a title="SWTBot for SWT Testing" href="http://www.eclipse.org/downloads/download.php?file=/technology/swtbot/galileo/dev-build/org.eclipse.swtbot.eclipse.test-<? echo $galileo_dev_version; ?>.zip"><img border=0 src="/swtbot/images/icon-save.gif"></a> <b>Headless Testing Framework (for running tests from within ant)</b>
				</li>
			</ul>			

			<p><strong>Supports Eclipse 3.4 (Ganymede)</strong></p>

			<ul>
				<li>
					<a title="Update Site Zip" href="http://www.eclipse.org/downloads/download.php?file=/technology/swtbot/ganymede/dev-build/swtbot-update-site-<? echo $ganymede_dev_version; ?>.zip"><img border=0 src="/swtbot/images/icon-save.gif"></a>
					<a href="http://download.eclipse.org/technology/swtbot/ganymede/dev-build/update-site">http://download.eclipse.org/technology/swtbot/ganymede/dev-build/update-site</a>
				</li>

				<li>
					<a title="SWTBot for SWT Testing" href="http://www.eclipse.org/downloads/download.php?file=/technology/swtbot/ganymede/dev-build/org.eclipse.swtbot-<? echo $ganymede_dev_version; ?>.zip"><img border=0 src="/swtbot/images/icon-save.gif"></a> <b>SWTBot for SWT Testing</b>
				</li>


				<li>
					<a title="SWTBot for SWT Testing" href="http://www.eclipse.org/downloads/download.php?file=/technology/swtbot/ganymede/dev-build/org.eclipse.swtbot.eclipse-<? echo $ganymede_dev_version; ?>.zip"><img border=0 src="/swtbot/images/icon-save.gif"></a> <b>SWTBot for Eclipse Testing</b>
				</li>

				<li>
					<a title="SWTBot for GEF Testing" href="http://www.eclipse.org/downloads/download.php?file=/technology/swtbot/ganymede/dev-build/org.eclipse.swtbot.eclipse.gef-<? echo $ganymede_dev_version; ?>.zip"><img border=0 src="/swtbot/images/icon-save.gif"></a> <b>SWTBot for GEF Testing (Requires GEF runtime >= v3.4.2)</b>
				</li>
				
				<li>
					<a title="SWTBot for SWT Testing" href="http://www.eclipse.org/downloads/download.php?file=/technology/swtbot/ganymede/dev-build/org.eclipse.swtbot.eclipse.test-<? echo $ganymede_dev_version; ?>.zip"><img border=0 src="/swtbot/images/icon-save.gif"></a> <b>Headless Testing Framework (for running tests from within ant)</b>
				</li>
			</ul>

			<h4>Test Coverage reports</h4>

			<p></p>

			<p><a href="http://download.eclipse.org/technology/swtbot/galileo/dev-build/coverage/org.eclipse.swtbot.swt.finder.test/">Test Coverage Results for SWTBot</a>
			<br/>
			<a href="http://download.eclipse.org/technology/swtbot/galileo/dev-build/coverage/index.html">Test Coverage Results for other plugins</a></p>

			<h4>JUnit reports</h4>

			<p></p>

			<p><a href="http://download.eclipse.org/technology/swtbot/galileo/dev-build/junit/org.eclipse.swtbot.swt.finder.test"><img src="/swtbot/images/junit.gif" />JUnit tests for SWTBot</a>
			<br/>
			<a href="http://download.eclipse.org/technology/swtbot/galileo/dev-build/junit/org.eclipse.swtbot.eclipse.finder.test/index.html"><img src="/swtbot/images/junit.gif" />JUnit tests for SWTBot For Eclipse testing</a></p>

		</div>
	</div>

<?php
include("website/parts/incubation.php");
$html = ob_get_contents();
ob_end_clean();

	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>