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

	$html  = <<<EOHTML
<div id="midcolumn">
<h2>$pageTitle</h2>
<p>GEF (MVC) is interactive model-view-controler framework, which fosters the implementation of SWT-based tree 
and Draw2d-based graphical editors for the Eclipse Workbench UI.</p>

<img class="displayed" width="400" src="/gef/gef_mvc/images/Logic_Example.png" alt="GEF Snapshots" border="0"/>

<h3>Overview</h3>
<p>
The GEF (MVC) plug-in adds editing behavior on top of SWT (Tree, TreeItem) or Draw2d and allows to create rich tree-based and graphical 
editors for the Eclipse Workbench UI. The purpose of this framework is to:
<ul>
<li>Facilitate the display of any model graphically (using SWT Tree/TreeItem or Draw2d figures)</li>
<li>Handle all kind of interactions originating from mouse and keyboard events.</li>
<li>Provide a integration with the Eclipse Workbench UI (toolbar, outline, property view)</li>
</ul>
</p><p>
GEF is completely application neutral and provides the groundwork to build almost any editor application, including but not limited to: 
activity diagrams, GUI builders, class diagram editors, state machines, and even WYSIWYG text editors.
</p>

<h3>Features</h3>
<ul>
<li>Tools like Selection, Creation, Connection and Marquee tools&nbsp;</li>
<li>A Palette for displaying those tools&nbsp;</li>
<li>Handles for resizing objects and bending connections&nbsp;</li>
<li>Two types of GEF Viewers (Graphical and Tree)&nbsp;</li>
<li>A Controller framework for mapping the business Model to a View&nbsp;</li>
<li>Plug-in policies for mapping interactions with the view to changes in the
model&nbsp;</li>
<li>Various implementations for showing feedback and adding selection handles&nbsp;</li>
<li>Various request types and tools or actions that send these requests to
the controllers&nbsp;</li>
<li>Undo/Redo support via Commands and a CommandStack</li>
</ul>

</div>
EOHTML;

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