<?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) 2010
 * 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:
 *    
 *******************************************************************************/

	$pageTitle 		= "GEF Documentation";

	$html  = <<<EOHTML
<div id="midcolumn">
<h2>$pageTitle</h2>
<p>Apart from the provided reference documentation and the <i>new and noteworthy</i> of each release, there are several articles, tutorials, and presentations contributed by the community that explain how Draw2d, GEF, and Zest work. 
A bunch of examples may also help to understand the frameworks.

<h3>New and Noteworthy</h3>
<p>Information about what is new and noteworthy in each release can be found on the <a href="http://wiki.eclipse.org/GEF/New_and_Noteworthy">New and Noteworthy</a> page in the GEF wiki.</p>

<h3>Reference Documentation</h3>
<p>Reference information can be found in form of the <i>GEF and Draw2d Plug-in Developer Guide</i> (Programmer's Guide and API Javadocs) as part of the <a href="http://help.eclipse.org/">Eclipse Help</a>,
as well on the <a href="http://wiki.eclipse.org/GEF/Reference_Documentation">Reference Documentation</a> page in the GEF wiki.</p>

<h3>Articles, Tutorials, Slides</h3>
<p>Several (external) articles, tutorials, and slides can be found on the <a href="http://wiki.eclipse.org/GEF/Articles%2C_Tutorials%2C_Slides">Articles, Tutorials, Slides</a> page in the GEF Wiki.</p>

<h3>Examples</h3>
<p>The GEF project provides four reference examples demonstrating the use of Draw2d and GEF, which are maintained by the GEF project team. 
They are included in the GEF-All-in-One SDK and their sources can also be obtained via the GEF cvs repository. Besides, there are auxiliary examples that may be helpful to understand certain aspects of the framework. 
Please refer to the <a href="http://wiki.eclipse.org/GEF/Examples">Examples</a> page in the GEF wiki.
</div>
EOHTML;

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