<?php
/*******************************************************************************
 * Copyright (c) 2009, 2013 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:
*		Eclipse Foundation - Initial version
*		Anthony Hunter - changes for GMF Notation
********************************************************************************/
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 		= "Eclipse GMF Notation";

// 	# Paste your HTML content between the EOHTML markers!
$html = <<<EOHTML
<div id="bigbuttons">
<h3>Primary Links</h3>
<ul>
<li><a id="buttonDownload" href="downloads.php" title="Download">
	Downloads, Software Install Site</a></li>
<li><a id="buttonDocumentation" href="documentation.php" title="Documentation">
	Tutorials, Examples, Reference Documentation</a></li>
<li><a id="buttonSupport" href="support.php" title="Support">
	Bug Tracker, Newsgroup</a></li>
<li><a id="buttonInvolved" href="getting_involved.php" title="Getting Involved">
	git, Workspace Setup, Wiki, Committers</a></li>
</ul>
</div>

<div id="midcolumn">
<h3>Eclipse Graphical Modeling Framework (GMF) Notation</h3>

<div id="introText">

<p>The GMF Notation Project provides a standard EMF notational meta model.</p>
<p>The notational meta model is a standard means for persisting diagram information separately from the domain model.</p>
<p>It can also be used as a basis for diagram interchange and was based on the principles in the <a href="http://www.omg.org/cgi-bin/doc?formal/06-04-04">OMG Diagram Interchange Specification</a></p>

</div>

</div>

<div id="rightcolumn">

<div>
<h3>Current Status</h3>
<p>Development is underway for the GMF Notation 1.7.0 for Eclipse Kepler, due June 2013.</p>
</div>

<div id="headlines">
<h3>GMF Notation 1.6.0 Now Available</h3>
<p><i>June 23, 2012 -</i> GMF Notation 1.6.0 for Eclipse Juno. Check the <a href="http://www.eclipse.org/modeling/gmp/downloads/?project=gmf-notation">Download</a> site to download.</p>
</div>

</div>
EOHTML;

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

?>
