<?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("GEF@github.com", "https://github.com/eclipse/gef#eclipse-graphical-editing-framework-gef", "_self", 3);
   	$Nav->addNavSeparator("GEF@projects.eclipse.org", "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("GEF@github.com", "https://github.com/eclipse/gef#eclipse-graphical-editing-framework-gef", "_self");
	$Menu->addMenuItem("GEF@projects.eclipse.org", "http://www.eclipse.org/projects/project_summary.php?projectid=tools.gef", "_self");
    
	# 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");
?>
