<?php

/*******************************************************************************
 * Copyright (c) 2009-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:
 *    
 *******************************************************************************/

	$Nav->setLinkList(null);
	
	# Set the theme for your project's web pages.
	$theme = "solstice";

	# Define your project-wide Navigation here
	# This appears on the left of the page if you define a left nav
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
	# these are optional
	
	# If you want to override the eclipse.org navigation, uncomment below.
	$Nav->setLinkList(array());
	
	# Break the navigation into sections
	$Nav->addNavSeparator("GEF", "/gef", "_self", 3);
	
   	$Nav->addNavSeparator("Documentation", "/gef/documentation.php", "_self", 3);
   	$Nav->addCustomNav("New and Noteworthy", "http://wiki.eclipse.org/GEF/New_and_Noteworthy", "_self", 3);
   	$Nav->addCustomNav("Reference Documentation", "http://wiki.eclipse.org/GEF/Reference%20Documentation", "_self", 3);
   	$Nav->addCustomNav("Articles, Tutorials, Slides", "http://wiki.eclipse.org/GEF/Articles%2C_Tutorials%2C_Slides", "_self", 3);
   	$Nav->addCustomNav("Examples", "http://wiki.eclipse.org/GEF/Examples", "_self", 3);
   	
   	$Nav->addNavSeparator("Downloads", "/gef/downloads.php", "_self", 3);
	
	$Nav->addNavSeparator("Getting Involved", "/gef/getting_involved.php", "_self", 3);
	$Nav->addCustomNav("Contributor Guide", "http://wiki.eclipse.org/GEF_Contributor_Guide", "_self", 3);
	$Nav->addCustomNav("Contributors Mailing List", "http://dev.eclipse.org/mailman/listinfo/gef-dev", "_self", 3);
	$Nav->addCustomNav("Open Bugs & Enhancements", "https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&product=GEF&short_desc=&short_desc_type=allwordssubstr&long_desc=&long_desc_type=allwordssubstr&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&order=Reuse+same+sort+as+last+time", "_self", 3);
	
	$Nav->addNavSeparator("Support", "/gef/support.php", "_self", 3);
	$Nav->addCustomNav("FAQ", "http://wiki.eclipse.org/index.php/GEF_Developer_FAQ", "_self", 3);
	$Nav->addCustomNav("Troubeshooting Guide", "http://wiki.eclipse.org/index.php/GEF_Troubleshooting_Guide", "_self", 3);
	$Nav->addCustomNav("Community Forum", "http://www.eclipse.org/forums/index.php?t=thread&frm_id=81", "_self", 3);
	$Nav->addCustomNav("Report a Bug", "https://bugs.eclipse.org/bugs/enter_bug.cgi?product=GEF", "_self", 3);
	
	$Nav->addNavSeparator("About", "http://www.eclipse.org/projects/project_summary.php?projectid=tools.gef", "_self", 3);

	# Define keywords, author and title here, or in each PHP page specifically
	$pageKeywords	= "eclipse, gef, draw2d, zest";
	$pageAuthor		= "Alexander Nyssen";

	# top navigation bar
	# To override and replace the navigation with your own, uncomment the line below.
	$Menu->setMenuItemList(array());
	$Menu->addMenuItem("GEF", "/gef", "_self");
	$Menu->addMenuItem("Documentation", "/gef/documentation.php", "_self");
	$Menu->addMenuItem("Download", "/gef/downloads.php", "_self");
	$Menu->addMenuItem("Getting Involved", "/gef/getting_involved.php", "_self");
	$Menu->addMenuItem("Support", "/gef/support.php", "_self");
    $Menu->addMenuItem("About", "http://www.eclipse.org/projects/project_summary.php?projectid=tools.gef", "_self");
	
	# To define additional CSS or other pre-body headers
	$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/gef/style.css"/>');
    
	# To enable occasional Eclipse Foundation Promotion banners on your pages (EclipseCon, etc)
	$App->Promotion = TRUE;
	
	# If you have Google Analytics code, use it here
	$App->SetGoogleAnalyticsTrackingCode("UA-2566337-9");
?>
