<?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'
/*******************************************************************************
 * Copyright (c) 2009, 2013
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Stephan Herrmann
 *******************************************************************************/

	$pageTitle 		= "Object Teams - Download";
	$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/objectteams/css/style.css"/>');
	$App->AddExtraHtmlHeader('<style type="text/css">.col-md-4 { width: 20%; !important; }</style>');
	

	# add a complete nav definition:
	# $Nav->addCustomNav( "About This Project", "/projects/project_summary.php?projectid=tools.objectteams", "", 1  );
	# $Nav->addNavSeparator("Object Teams", 	"/objectteams");
	# $Nav->addCustomNav("Download", "/objectteams/download.php", "_self", 2);
	# $Nav->addCustomNav("Releases 2.2.x", "#R22", "_self", 3);
	# $Nav->addCustomNav("How To Install", "#howto", 3);
    # $Nav->addCustomNav("Previous Releases", "#previous", 3);
    # $Nav->addCustomNav("Retention Policy", "#retention", 3);
    # "#R22" Milestone releases towards 2.2 Eclipse 4.3Mx)
	
	# $Nav->addCustomNav("Documentation", "/objectteams/documentation.php", "_self", 2);
	# $Nav->addCustomNav("Support", "/objectteams/support.php", "_self", 2);
	# $Nav->addCustomNav("Getting Involved", "/objectteams/getting_involved.php", "_self", 2);
	# $Nav->addCustomNav("Project Plan", "http://www.eclipse.org/projects/project-plan.php?projectid=tools.objectteams", "_self", 2);
	
	$Nav->addNavSeparator("On this page", "/objectteams/download.php", "_self");
	$Nav->addCustomNav("Releases 2.2.x", "#R22", "_self", 3);
	$Nav->addCustomNav("How To Install", "#howto", 3);
    $Nav->addCustomNav("Previous&nbsp;Releases", "#previous", 3);
    $Nav->addCustomNav("Retention Policy", "#retention", 3);
	
	$Nav->addNavSeparator("Documentation Quicklinks", "");
	$Nav->addCustomNav("Quick-Start", 	"http://wiki.eclipse.org/Object_Teams_Quick-Start", "_blank", 2);
	$Nav->addCustomNav("User Guide", 	"http://help.eclipse.org/topic/org.eclipse.objectteams.otdt.doc/guide/develop.html", "_blank", 2);
	$Nav->addCustomNav("Language&nbsp;Definition", 	"http://help.eclipse.org/topic/org.eclipse.objectteams.otdt.doc/guide/otjld/def/index.html", "_blank", 2);

	$html  = <<<EOHTML
<div id="midcolumn" style="width:80%; !important;">
	<h1>$pageTitle</h1>
	<p>All downloads are provided under the terms and conditions of the <a href="/legal/epl/notice.php">Eclipse Foundation Software User Agreement</a> unless otherwise specified.</p>
	
		<ul class="novaArrow">
        <li><a href="features.php">Features of the Object Teams Development Tooling (OTDT)</a></li>
        <li><a href="http://wiki.eclipse.org/images/f/fc/OTDT_Overview.png">Screenshot of the OTDT in action</a></li>
        </ul>

	<h2><a name="R22"></a>Stable Release 2.2.x for Eclipse 4.3 (Kepler)</h2>
        <table class="btn-warning orange-box" style="margin:0px;padding:4px;width:100%">
            <tr>
                <td><img src="images/Idea.png"></td>
                <td style="width:100%;padding-left:6px;">
               		Object Teams is part of the <b><a href="http://www.eclipse.org/kepler">Kepler simultaneous release</a></b>.
					This means, no further URL must be configured for installing the OTDT and/or OT/Equinox,
					simply select the <a href="http://download.eclipse.org/releases/kepler">Kepler - http://download.eclipse.org/releases/kepler</a> 
					software site and open the <b>Programming Languages</b> category.
                </td>
          	</tr>
        </table>

        <table border="0" style="margin-left:30px;margin-top:10px;margin-bottom:10px;">
            <tbody><tr>
                <td><a href="http://download.eclipse.org/objectteams/updates/ot2.2"><img src="http://dev.eclipse.org/huge_icons/actions/go-bottom.png" alt="Download" align="left"></a></td>
                <td style="width: 100%; padding-left: 6px;">A specific repository containing just Object Teams 2.2.x  can be found at
			<a href="http://download.eclipse.org/objectteams/updates/ot2.2">http://download.eclipse.org/objectteams/updates/ot2.2</a>
                </td>
            </tr>
        </tbody></table>
        <div style="margin-left:30px;" class="block-box block-box-classic">
            <h3 style="margin-bottom:2px;">Release 2.2:</h3>
            <table width="100%">
	            <tbody><tr valign="top"><th>&nbsp;</th><th class="dl-cell" style="padding-left:10px;">Required Eclipse Version</th>
						<th class="dl-cell">Command Line Compiler</th><th class="dl-cell">New&nbsp;&amp; Noteworthy</th><th class="dl-cell">Bugs Fixed</th></tr>
	            <tr><td colspan="5" class="release-cell"><strong>OTDT 2.2.1 Service Release 1</strong> &mdash; (2013/09/27)</td></tr>
                <tr><td style="width: 50px;">&nbsp;</td>
                    <td class="dl-cell" style="padding-left:5px;"><a href="http://download.eclipse.org/eclipse/downloads/drops4/R-4.3.1-201309111000/"><img src="images/arrow.gif">Eclipse&nbsp;SDK&nbsp;4.3.1</a></td>
                    <td class="dl-cell" style="min-width: 110px;padding-left:5px;"><a href="http://www.eclipse.org/downloads/download.php?file=/objectteams/ecotj/ecotj-R-2.2.1-201309101915.jar"><img src="images/otdt/jar_obj.gif" valign="middle"> ecotj.jar</a></td>
                    <td class="dl-cell">&nbsp;</td>
                    <td class="dl-cell"><a href="https://bugs.eclipse.org/bugs/buglist.cgi?j_top=OR&list_id=5963256&classification=Tools&query_format=advanced&product=Objectteams&target_milestone=2.2.1"><img title="Bugs fixed for 2.2.1" src="images/bug.gif"></a></td>
                </tr>
	            <tr><td colspan="5" class="release-cell"><strong>OTDT 2.2.0 Final Release</strong> &mdash; (2013/06/26)</td></tr>
                <tr><td style="width: 50px;">&nbsp;</td>
                    <td class="dl-cell" style="padding-left:5px;"><a href="http://download.eclipse.org/eclipse/downloads/drops4/R-4.3-201306052000/"><img src="images/arrow.gif">Eclipse&nbsp;SDK&nbsp;4.3</a></td>
                    <td class="dl-cell" style="min-width: 110px;padding-left:5px;"><a href="http://www.eclipse.org/downloads/download.php?file=/objectteams/ecotj/ecotj-R-2.2.0-201306071800.jar"><img src="images/otdt/jar_obj.gif" valign="middle"> ecotj.jar</a></td>
                    <td class="dl-cell"><a href="http://www.eclipse.org/objectteams/pages/new_in_2.2.html"><img src="http://www.eclipse.org/jdt/core/images/new.png"></a></td>
                    <td class="dl-cell"><a href="https://bugs.eclipse.org/bugs/buglist.cgi?j_top=OR&list_id=5963256&classification=Tools&query_format=advanced&product=Objectteams&target_milestone=2.2%20M1&target_milestone=2.2%20M2&target_milestone=2.2%20M3&target_milestone=2.2%20M4&target_milestone=2.2%20M5&target_milestone=2.2%20M6&target_milestone=2.2%20M7&target_milestone=2.2%20RC1&target_milestone=2.2%20RC2&target_milestone=2.2"><img title="Bugs fixed for 2.2" src="images/bug.gif"></a></td>
                </tr>
			</tbody></table>
        </div>

	<h2><a name="howto"></a>Howto Install</h2>
	<strong>Nothing special, just...</strong>
	<ol>
	<li>Install <a href="http://download.eclipse.org/eclipse/downloads/drops4/R-4.3-201306052000">Eclipse SDK 4.3</a> (you may also use your favorite Eclipse Package but it has to be exactly 4.3.0 for OTDT 2.2.0).</li>
	<li>Open "<code>Help > Install New Software ...</code>"</li> 
	<li>Choose <a href="http://download.eclipse.org/releases/kepler">Kepler - http://download.eclipse.org/releases/kepler</a> 
			software site and open the <b>Programming Languages</b> category.</li>
	<li>Select these features
		<ul>
		<li><strong>Object Teams Development Tooling</strong>: the IDE for Object Teams</li>
		<li><strong>Object Teams Equinox Integration</strong>: runtime required by the above feature</li>
		</ul></li>
	<li><i>Recommended: un-check "Contact all update sites during install to find required software"</i></li>
	<li>Click through the wizard upto and including the required restart of Eclipse.</li>
	</ol>
		 
	<strong>Some hints on how you may check the installation:</strong>
	<ul>
	<li>Browse content from the welcome page or from help ("Object Teams Development User Guide").</li>
	<li>Find new icons in "About Eclipse SDK" dialog</li>
	<li>From this about dialog click through to the plug-ins of "Eclipse RCP" and scroll to the "Workbench" plug-in:</br>
	    You should see a note that this plug-in is adapted by two Object Teams plug-ins.</li>
	<li>Install a shipped OT/J example via "<code>File > New > Example ...</code>", one of
		<ul>
		<li>Stop Watch Example (easiest).</li>
		<li>Observer Example (straight forward).</li>
		<li>Flight Bonus Example (comprehensive, high density of OT/J concepts).</li>
		<li>Order System Example (comprehensive, not quite as dense).</li>
		<li>ATM Example (special demo for guard predicates).</li>
		</ul></li>
	</ul>

	<h2><a name="previous"></a>Previous Releases for Eclipse 3.3 - 4.2</h2>
		<ul>
		<li><a href="download-prev.php">Release up-to 2.1.x for Eclipse 4.2.x</a>
		<li>For still older versions, you may still
		consult our <a href="http://www.objectteams.org/distrib/otdt.html">old download page</a> at <b>www.objectteams.org</b> for existing releases.</li>		
		</ul>
	<h2><a name="retention"></a>Retention Policy</h2>
	<ul>
	<li>Official releases (incl. service releases) will never be removed from the server<br/>(old versions may be moved to the archive site, though)</li>
	<li>Milestone builds will be kept until the final release</li>
	<li>No such promises are made for any intermediate ("unstable") versions</li>
	</ul> 
	
</div> <!-- midcolumn -->


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