<?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";

 	$dev_version = file_get_contents($App->getDownloadBasePath()."/technology/swtbot/dev-build/version.txt");
 	$stable_version = file_get_contents($App->getDownloadBasePath()."/technology/swtbot/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>Supports Eclipse 3.3 and above</p>

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

				<li>
					<a title="SWTBot for SWT Testing" href="http://www.eclipse.org/downloads/download.php?file=/technology/swtbot/dev-build/org.eclipse.swtbot-<? echo $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/dev-build/org.eclipse.swtbot.eclipse-<? echo $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 SWT Testing" href="http://www.eclipse.org/downloads/download.php?file=/technology/swtbot/dev-build/org.eclipse.swtbot.eclipse.test-<? echo $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>
		</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);
?>