<?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());    # All on the same line to unclutter the user's desktop'

	#*****************************************************************************
	#
	# index.php of Java Workflow Tooling (JWT)
	#
	# Author: 		Florian Lautenbacher
	# created:		2007-02-26
	# last changed: 2009-05-25
	#
	# Description: The start page of the Java Workflow Tooling project
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Eclipse Java Workflow Tooling (JWT)";
	$pageKeywords	= "JWT , Java Workflow Tooling Project, Workflow Editor, Workflow Administration and Monitoring, Eclipse";
	$pageAuthor		= "Florian Lautenbacher";
	
	# Add page-specific Nav bars here
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
	# Reiniting navbar content (suppresses generic Eclipse links Committers, Newsgroups, Bugs, Articles) :
	# $Nav->setLinkList( array() );

	# End: page-specific settings
	#
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

	<div id="midcolumn">
		<h1>Download Java Workflow Tooling (JWT)</h1>

		<p/>

		<p>
		The easiest is to get it from the <a href="#updateSite">update site</a>. You can also install an <a href="#integrator">integrator's distribution</a>.
		</p>

		<p>
		<b>IMPORTANT</b> If you want to execute your processes, you need a compatible runtime. See their <a href="">list</a> - or <a href="">write your own</a> export transformation.
		</p>

		<!-- p>
		<b>UPCOMING</b> from June, the 24th of 2009 on, JWT will be available bundled in the yearly <a href="http://www.eclipse.org/galileo/">Eclipse 3.5 (Galileo)</a> release ( <a href="http://www.eclipse.org/downloads/?tab=developer">try it now</a> ).</li> 
		</p -->

		<hr class="clearer" />
		
		<div class="homeitem">
			<a name="updateSite"></a>
			<h3>Get JWT 0.7 from the update site</h3>
			<ul>
				<li><b>1.</b> Start Eclipse 3.5 (Galileo). If your don't have it, get it <a href="http://www.eclipse.org/downloads/packages/">there</a>. It requires <a href="http://java.sun.com/javase/downloads/index.jsp">Java</a> (1.5 or later).</li> 
				<li><b>2.</b> In the "Help" menu, click on "Software Update...". In the dialog, click on "Add Site..." and enter the URL of the <a href="http://download.eclipse.org/jwt/update-site/">JWT update site</a> .</li>
				<li><b>3.</b> Select JWT in the tree to automatically download JWT and its dependencies. Finally restart Eclipse.</li>
			</ul>
		</div>

		<hr class="clearer" />

		<div class="homeitem">
			<a name="updateSite"></a>
			<h3>Get JWT 0.6 from the update site</h3>
			<ul>
				<li><b>1.</b> Start Eclipse 3.5 (Galileo). If your don't have it, get it <a href="http://www.eclipse.org/downloads">there</a>. It requires <a href="http://java.sun.com/javase/downloads/index.jsp">Java</a> (1.5 or later).</li> 
				<li><b>2.</b> In the "Help" menu, click on "Install New Software". Then select JWT in the <b>General Purpose Tools</b> category to automatically download JWT and its dependencies.</li>
				<li><b>3.</b> Finally restart Eclipse.</li>
			</ul>
		</div>
		
		<hr class="clearer" />
		
		<div class="homeitem">
			<a name="integrator"></a>
			<h3>Install an integrator's distribution</h3>
			<ul>
				<li><b><a href="http://sourceforge.net/projects/agilpro">AgilPro</a></b> is an Eclipse JWT-based business process modeling suite providing a <b>Modeler</b>, a <b>Simulator</b> desktop application, and Adapters for standard applications ( <b>Firefox, OpenOffice</b>).</li>
				<li><b><a href="http://scarbo.ow2.org">OW2 Scarbo</a></b> is an <b>SOA</b> BPM solution supporting <b>web services, RMI and SCA</b>, script, mail and semantics actions, and a server runtime based on <a href="http://www.ow2.org">OW2</a>'s <a href="http://bonita.ow2.org">Bonita</a> and <a href"http://frascati.ow2.org">FraSCAti</a> .</li> 
			</ul>
		</div>

		<hr class="clearer" />
		
		<!-- div class="homeitem">
			<h3>More Downloads</h3>
			<ul>
				<li><a href="http://wiki.eclipse.org/JWT_Downloads#Other_products_based_on_JWT">All Integrators</a></li> 
				<li><a href="http://wiki.eclipse.org/JWT_Downloads#All_Update_Sites">All Update Sites</a></li> 
				<li><a href="http://wiki.eclipse.org/JWT_Downloads#Releases">All Releases</a></li> 
				<li><a href="http://wiki.eclipse.org/JWT_Downloads">All Downloads</a></li> 
			</ul>
		</div -->
			
	</div>
	
	<div id="rightcolumn">

 		<div class="sideitem">
 			<h6>JWT 0.7.0 (Current)</h6>
			Released on 2009-12-21 ( Get it from the <a href="http://download.eclipse.org/jwt/update-site/">update site</a>, <a href="http://wiki.eclipse.org/Image:JWT_Release_Review_0_7.pdf">slides</a> )
			<p/>
			<i>New: view layouts, new converter, improved transformations...</i>
 		</div>

 		<div class="sideitem">
 			<h6>JWT 1.0.0 (Upcoming)</h6>
			Upcoming on 2010-06-20 ( Test it in the <a href="http://download.eclipse.org/jwt/integration-update-site/">nightly builds update site</a> )
			<p/>
			<i>In the works : jPDL export, BPMN2 view, desktop application...</i>
 		</div>

 		<!-- div class="sideitem">
 			<h6>JWT 0.5.0 (Older)</h6>
                        Released on 2008-02-29 (<a href="http://download.eclipse.org/jwt/update-site/">update site</a> , <a href="http://wiki.eclipse.org/Image:JWT_Release_Review_0_5_v4.pdf"> slides</a>)
			<p/>
			<i>New : filtered outline, BPMN and XPDL export...</i>
 		</div -->

 		<div class="sideitem">
 			<h6>More Downloads</h6>
			<ul>
				<li><a href="http://wiki.eclipse.org/JWT_Downloads#Other_products_based_on_JWT">All Integrators</a></li> 
				<li><a href="http://wiki.eclipse.org/JWT_Downloads#All_Update_Sites">All Update sites</a></li> 
				<li><a href="http://wiki.eclipse.org/JWT_Downloads#Releases">All Releases</a></li> 
				<li><a href="http://wiki.eclipse.org/JWT_Downloads">All Downloads</a></li> 
			</ul>
 		</div>

 		<!-- div class="sideitem">
 			<h6>All Update Sites</h6>
			<ul>
				<li><a href="http://download.eclipse.org/jwt/update-site/">releases</a></li> 
				<li><a href="http://download.eclipse.org/jwt/stable-update-site/">latest stable build</a></li> 
				<li><a href="http://download.eclipse.org/jwt/integration-update-site/">Nightly builds</a> (for testing purposes only)</li> 
			</ul>
 		</div -->

 		<!-- div class="sideitem">
 			<h6>All Releases</h6>
			<ul>
				<h4>Older</h4>
				<li><b>JWT 0.4</b> released on 2008-02-29 (slides)
					<ul><li>New : Workflow Editor... </li></ul>
				</li>
			</ul>
 		</div -->
 		 		
	</div>

EOHTML;

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