<?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());    

#
# Begin: page-specific settings.  Change these. 
$pageTitle 	= "Henshin - Installation";
$pageKeywords	= "EMF, Henshin, model transformation, installation";
$pageAuthor	= "Christian Krause, Daniel Str�ber";

# 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)
# $Nav->addNavSeparator("My Page Links", 	"downloads.php");
# $Nav->addCustomNav("My Link", "mypage.php", "_self", 3);
# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 3);

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

<div id="maincontent">

<div id="midcolumn">
<h1>$pageTitle</h1>
		
<h2>Install from update site</h2>

<p>Henshin is a plug-in for recent versions of the Eclipse Modeling Tools (last tested version: 2021-03). To obtain the most recent Eclipse version, go to the <a href="https://www.eclipse.org/downloads/packages/">download page</a> and download the Eclipse Modeling Tools.</p>

<p>To install Henshin, open Eclipse, go to <i>Help -> Install New Software...</i> and insert one of the following update site URLs:</p>
<ul>
<li>Current release: <a href="http://download.eclipse.org/modeling/emft/henshin/updates/release">http://download.eclipse.org/modeling/emft/henshin/updates/release</a> (1.8.0)</li>
<li>Nightly builds: <a href="http://download.eclipse.org/modeling/emft/henshin/updates/nightly">http://download.eclipse.org/modeling/emft/henshin/updates/nightly</a></li>
<li>Permanent URLs of current and previous releases:
<ul>
<li><a href="http://download.eclipse.org/modeling/emft/henshin/updates/1.8.0">http://download.eclipse.org/modeling/emft/henshin/updates/1.8.0</a></li>
<li><a href="http://download.eclipse.org/modeling/emft/henshin/updates/1.8.0-legacyjdk">http://download.eclipse.org/modeling/emft/henshin/updates/1.8.0-legacyjdk</a></li>
<li><a href="http://download.eclipse.org/modeling/emft/henshin/updates/1.6.0">http://download.eclipse.org/modeling/emft/henshin/updates/1.6.0</a></li>
<li><a href="http://download.eclipse.org/modeling/emft/henshin/updates/1.4.0">http://download.eclipse.org/modeling/emft/henshin/updates/1.4.0</a></li>
<li><a href="http://download.eclipse.org/modeling/emft/henshin/updates/1.2.0">http://download.eclipse.org/modeling/emft/henshin/updates/1.2.0</a></li>
<li><a href="http://download.eclipse.org/modeling/emft/henshin/updates/1.0.0">http://download.eclipse.org/modeling/emft/henshin/updates/1.0.0</a></li>
<li><a href="http://download.eclipse.org/modeling/emft/henshin/updates/0.9.2">http://download.eclipse.org/modeling/emft/henshin/updates/0.9.2</a></li>
</ul>
</ul>


<p><strong>JDK Compatibility</strong> From release 1.8.0, Henshin is compatible with JDK versions from 11.0 upwards.
The release variant <em>1.8.0-legacyjdk</em> and previous releases are compatible with JDK 8.0 to JDK 14.0.</p>


<p><strong>Features</strong> At a minimum, install the Henshin SDK feature. Version 1.6.0 and 1.8.0 introduced the additional features Henshin Variability SDK and OCL2NGC. For all features, a source version is provided.</p>


<h2>Instructions for installing legacy versions</h2>

<p>
If you want to install a legacy version of Henshin (<= 1.4.0) in a newer Eclipse version (>= Eclipse Oxygen), please use the following instructions (thanks to <a href="http://jgreen.de/" target="_blank">Joel Greenyer</a> for providing these instructions):
</p>

<ul>
 <li>Install GMF Tooling v3.2.1 via <a href="http://download.eclipse.org/modeling/gmp/gmf-tooling/updates/releases-3.2.1/">Update site</a> <i>(right click -> copy...)</i></li>
 <li>Install M2Eclipse via <a href="http://download.eclipse.org/technology/m2e/releases">Update site</a> <i>(right click -> copy...)</i></li>
 <li>Install the required Henshin version.</li>
</ul>

<!--<h2>Eclipse Kepler, Luna, Mars or Neon</h2>
		
<p>
Henshin can be installed directly from the <a href="https://marketplace.eclipse.org/content/henshin-incubation">Eclipse Marketplace</a>.
</p>

-->

</ul>
</p>


<h2>Sources</h2>
<p>
You can also get the latest version of the source code directly from our Git repository (weblink):
<ul>
<li><a href="http://git.eclipse.org/c/henshin/org.eclipse.emft.henshin.git/">http://git.eclipse.org/c/henshin/org.eclipse.emft.henshin.git/</a></li>
</ul>
</p>


<h2>Build Jobs</h2>
<p>
Release and nighly builds are compiled using Hudson jobs:
<ul>
<li>Releases: <a href="https://ci.eclipse.org/henshin/job/cbi_henshin_release/">https://ci.eclipse.org/henshin/job/cbi_henshin_release/</a></li>
<li>Nightly Builds: <a href="https://ci.eclipse.org/henshin/job/cbi_henshin_nightly/">https://ci.eclipse.org/henshin/job/cbi_henshin_nightly/</a></li>
</ul>
</p>


<!--

<div class="homeitem">
<h3>Narrow column</h3>
<ul>
<li><a href="#">Link</a>. Teaser text <a href="#">'Reference'</a><span class="dates">02/05/05</span></li>
<li><a href="#">Link</a>. Teaser text <a href="#">'Reference'</a><span class="dates">02/05/05</span></li>
<li><a href="#">Link</a>. Teaser text <a href="#">'Reference'</a><span class="dates">02/05/05</span></li>
</ul>
</div>
		
<div class="homeitem">
<h3>Narrow column</h3>
<ul>
<li><a href="#">Link</a>. Teaser text <a href="#">'Reference'</a><span class="dates">02/05/05</span></li>
<li><a href="#">Link</a>. Teaser text <a href="#">'Reference'</a><span class="dates">02/05/05</span></li>
<li><a href="#">Link</a>. Teaser text <a href="#">'Reference'</a><span class="dates">02/05/05</span></li>
</ul>
</div>
<div class="homeitem3col">
<h3>This is a wide column</h3>
<ul>
<li><a href="#">Link</a>. Teaser text <a href="#">'Reference'</a><span class="dates">02/05/05</span></li>
<li><a href="#">Link</a>. Teaser text <a href="#">'Reference'</a><span class="dates">02/05/05</span></li>
<li><a href="#">Link</a>. Teaser text <a href="#">'Reference'</a><span class="dates">02/05/05</span></li>
</ul>
</div>
<hr class="clearer" />
<p>Some free text</p>
<ul class="midlist">
<li>list of items in free text</li>
<li>list of items in free text</li>
<li>list of items in free text</li>
</ul>
<ol>
<li>Ordered list</li>
<li>Ordered list</li>
<li>Ordered list</li>
</ol>
	
-->
		
</div>
</div>

EOHTML;

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

?>
