<?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: 2011-08-18
	#
	# 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>
		In short, the easiest is to install it from within <a href="http://www.eclipse.org/downloads">the latest Eclipse</a>. You can also get it from the JWT update site (<a href="http://download.eclipse.org/jwt/update-site/">link</a>). As an all-in-one alternative, you can 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="components/transformations/index.php">list</a> - or <a href="http://wiki.eclipse.org/JWT_Transformations#How_do_I_add_a_transformation_to_JWT.3F">write your own</a> export transformation.
		</p>

		<hr class="clearer" />

		<div class="homeitem">
			<h3>Get JWT with the latest Eclipse (JWT 1.5 with Eclipse 4.5 "Mars")</h3>
			<ul>
				<li><b>1.</b> Start the latest Eclipse. If your don't have it, get it <a href="http://www.eclipse.org/downloads">there</a>. It requires <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java</a> (1.8 or later recommended).</li> 
				<li><b>2.</b> In the "Help" menu, click on "Install New Software". Then select JWT in the <b>SOA Development</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">
			<h3>Get JWT from JWT's update site</h3>
			<ul>
				<li><b>1.</b> Start Eclipse. If your don't have it, get it <a href="http://www.eclipse.org/downloads">there</a>. It requires <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java</a> (1.8 or later recommended).</li> 
				<li><b>2.</b> In the "Help" menu, click on "Install New Software...". In the dialog, click on "Add..." and enter the URL of the <a href="http://download.eclipse.org/jwt/update-site/">JWT update site</a> . Then select JWT in the tree 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 1.6.0 (Current)</h6>
			Released on 2016-06-22 ( Get it in <a href="http://www.eclipse.org/downloads/">Eclipse 4.6 "Neon"</a> )
			<p/>
			<i>New : Eclipse 4.6 support, Java 8</i>
 		</div>

 		<div class="sideitem">
 			<h6>JWT 1.6.1 (Upcoming)</h6>
			Upcoming on 2016-12-01 ( Test it in the <a href="http://download.eclipse.org/jwt/integration-update-site/">nightly builds update site</a> )
			<p/>
			<i>In the works : new Xtext-based editor that complements the current graphical editor for JWT models, EasySOA export, EMF to CMIS transformation, jPDL export, desktop previewer...</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);
?>
