<?php
/*******************************************************************************
 * Copyright (c) 2010 Eclipse Foundation and others.
 * 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:
 *
 *******************************************************************************/

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());
$localVersion = false;
$pageTitle 		= "GEF";

// 	# Paste your HTML content between the EOHTML markers!
$html = <<<EOHTML
<div id="bigbuttons">
<h3>Primary Links</h3>
<ul>
<li><a id="buttonDownload" href="/gef/downloads.php" title="Download">
	Update-Sites, P2 Repositories & SDK Dropins</a></li>
<li><a id="buttonDocumentation" href="documentation.php" title="Documentation">
	New and Noteworthy, Reference Documentation, Articles, Tutorials, Slides, Examples</a></li>
<li><a id="buttonSupport" href="support.php" title="Support">
	FAQ, Troubleshooring Guide, Community Forum, Report a Bug</a></li>
<li><a id="buttonInvolved" href="getting_involved.php" title="Getting Involved">
	Contribution Guide, Contributors Mailing List, CVS Online Repository, Open Bugs & Enhancements</a></li>
</ul>
</div>

<div id="midcolumn">
<h3>GEF (Graphical Editing Framework)</h3>

<div id="introText">
<p>
The Graphical Editing Framework (GEF) provides technology to create rich graphical editors and views. It is currently developed in two streams, namely:
<ul>
<li>Development of the next generation production components in terms of <a href="https://wiki.eclipse.org/GEF/GEF4">GEF4</a>.</li>
<img class="displayed" width="450" src="/gef/images/GEF4_MVC_FX_UI_Example.png" alt="GEF4 MVC.FX.UI Example" border="0"/>
<li>Maintenance of the currently available production components <a href="/gef/draw2d/index.php">Draw2d 3.x</a>, <a href="/gef/gef_mvc/index.php">GEF (MVC) 3.x</a>, and <a href="/gef/zest/index.php">Zest 1.x</a>.</li>
<img class="displayed" width="450" src="/gef/gef_mvc/images/Logic_Example.png" alt="GEF 3.x Logic Example" border="0"/>
</ul>
</p>
</div>
</div>

<div id="rightcolumn">
<div>
<h3>Current Status</h3>
<p>
The original project components Draw2d 3.x, GEF (MVC) 3.x, and Zest 1.x are still maintained but will not be developed further.
Our main development effort is instead spent on building up the next generation components in terms of <a href="http://wiki.eclipse.org/GEF/GEF4">GEF4</a>.
</p>
<p>
GEF is participating in the annual <a href="http://wiki.eclipse.org/Simultaneous_Release">Eclipse Simultaneous Release</a>. As such, we are now working towards the <a href="https://projects.eclipse.org/projects/tools.gef/releases/3.10.1-mars-sr1">3.10.1 (Mars SR1)</a> Release in September 2015.
</p>
</div>

<div id="headlines">

<h3>Release 3.10.0 Available</h3>
<p><i>June 24, 2015 -</i> Release 3.10.0 is available as part of the Mars simultaneous release, including Draw2d 3.10.0, GEF (MVC) 3.10.0, and Zest 1.6.0, as well as a first snapshot of all GEF4 components (in version 0.1.0). Follow the <a href="/gef/downloads.php">Download</a> link to obtain it. For further information about included features or bug fixes, please refer to the 
<a href="http://wiki.eclipse.org/GEF/New_and_Noteworthy/3.10">New and Noteworthy (3.10)</a> page. 
</p>

<div>
<h3>Wiki</h3>
<p>
While the bulk of information about the GEF project can be found here, you may also consider the <a href="http://wiki.eclipse.org/GEF">GEF Wiki</a> as a source for further information.
</p>
</div>
</div>
EOHTML;

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

?>
