<?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 		= "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="http://www.eclipse.org/modeling/gmp/downloads/?project=gmf-notation" title="Download">
	Downloads, Software Install Site</a></li>
<li><a id="buttonDocumentation" href="http://wiki.eclipse.org/GMF_Documentation" title="Documentation">
	Tutorials, Examples, Reference Documentation</a></li>
<li><a id="buttonSupport" href="http://wiki.eclipse.org/GMF_Documentation" title="Support">
	Bug Tracker, Newsgroup</a></li>
<li><a id="buttonInvolved" href="http://wiki.eclipse.org/Graphical_Modeling_Framework" 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);

?>
