<?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'

	#*****************************************************************************
	#
	# index.php
	#
	# Author: 		Markus Knauer
	# Date:			2007-02-20
	#
	# Description: Download page of the Eclipse Packaging Project
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "EPP Package Content";
	$pageKeywords	= "eclipse, download, packages, packaging, features, content";
	$pageAuthor		= "Markus Knauer";
	
	# Add page-specific Nav bars here
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
	# $Nav->addNavSeparator("My Page Links", 	"downloads.php");
	# $Nav->addCustomNav("My Link", "mypage.php", "_self", 3);
	# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 3);

	# End: page-specific settings
	#
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

<div id="maincontent">


<!-- MIDCOLUMN START -->
<div id="midcolumn">

<h1>$pageTitle</h1>

<p>The initial content of the four different packages was collected
on the EPP newsgroup. Currently the packages contain the following
features:</p>

<div class="homeitem">
<h3>Eclipse Tools for Java Developer</h3>
<p>Contains the basic features that are essential to a Java Programmer, including
the Java Development Tools, a CVS client, XML Editor and the Mylyn tools.</p>
<p><a href="http://dev.eclipse.org/newslists/news.eclipse.technology.packaging/msg00042.html">Newsgroup thread</a></p>
<p>
 org.eclipse.platform<br />
 org.eclipse.cvs<br />
 org.eclipse.jdt<br />
 org.eclipse.xsd<br />
 org.eclipse.emf.common<br />
 org.eclipse.emf.common.ui<br />
 org.eclipse.emf.ecore<br />
 org.eclipse.emf.ecore.edit<br />
 org.eclipse.emf.edit<br />
 org.eclipse.emf.edit.ui<br />
 org.eclipse.xsd.edit<br />
 org.eclipse.wst.xml_ui.feature<br />
 org.eclipse.wst.common_ui.feature<br />
 org.eclipse.gef<br />
 org.eclipse.mylyn_feature<br />
 org.eclipse.mylyn.context_feature<br />
 org.eclipse.mylyn.ide_feature<br />
 org.eclipse.mylyn.java_feature<br />
 org.eclipse.mylyn.bugzilla_feature<br />
</p>
</div>

<div class="homeitem">
<h3>Eclipse Tools for Java Enterprise Developer</h3>
<p>A huge set of tooling with enterprise features, starting with Java Development 
Tools, including Webtools, JSF, Mylyn andfor other features.</p>
<p><a href="http://dev.eclipse.org/newslists/news.eclipse.technology.packaging/msg00040.html">Newsgroup thread</a></p>
<p>
 org.eclipse.pde<br />
 org.eclipse.platform<br />
 org.eclipse.cvs<br />
 org.eclipse.jdt<br />
 org.eclipse.emf<br />
 org.eclipse.emf.ecore.sdo<br />
 org.eclipse.xsd<br />
 org.eclipse.emf.common<br />
 org.eclipse.emf.common.ui<br />
 org.eclipse.emf.ecore<br />
 org.eclipse.emf.ecore.edit<br />
 org.eclipse.emf.edit<br />
 org.eclipse.emf.edit.ui<br />
 org.eclipse.xsd.edit<br />
 org.eclipse.wst.xml_ui.feature<br />
 org.eclipse.wst<br />
 org.eclipse.jst<br />
 org.eclipse.jpt.feature<br />
 org.eclipse.gef<br />
 org.eclipse.datatools.connectivity.feature<br />
 org.eclipse.datatools.connectivity.oda.designer.feature<br />
 org.eclipse.datatools.connectivity.oda.feature<br />
 org.eclipse.datatools.doc.user<br />
 org.eclipse.datatools.enablement.apache.derby.feature<br />
 org.eclipse.datatools.enablement.feature<br />
 org.eclipse.datatools.enablement.hsqldb.feature<br />
 org.eclipse.datatools.enablement.ibm.feature<br />
 org.eclipse.datatools.enablement.jdbc.feature<br />
 org.eclipse.datatools.enablement.msft.feature<br />
 org.eclipse.datatools.enablement.mysql.feature<br />
 org.eclipse.datatools.enablement.oda.designer.feature<br />
 org.eclipse.datatools.enablement.oda.feature<br />
 org.eclipse.datatools.enablement.oracle.feature<br />
 org.eclipse.datatools.enablement.postgresql.feature<br />
 org.eclipse.datatools.enablement.sybase.feature<br />
 org.eclipse.datatools.modelbase.feature<br />
 org.eclipse.datatools.sqldevtools.data.feature<br />
 org.eclipse.datatools.sqldevtools.ddl.feature<br />
 org.eclipse.datatools.sqldevtools.feature<br />
 org.eclipse.datatools.sqldevtools.parsers.feature<br />
 org.eclipse.datatools.sqldevtools.results.feature<br />
 org.eclipse.mylyn_feature<br />
 org.eclipse.mylyn.context_feature<br />
 org.eclipse.mylyn.ide_feature<br />
 org.eclipse.mylyn.java_feature<br />
 org.eclipse.mylyn.pde_feature<br />
 org.eclipse.mylyn.bugzilla_feature<br />
</p>
</div>

<div class="homeitem">
<h3>Eclipse for RCP Plugin Developer</h3>
<p>This packages contains a complete set of tools for developers who want to create 
plug-ins and Rich Client Applications based on Eclipse. It includes a complete SDK 
with source code and additionally an XML editor and helpful features from the Mylyn 
project.</p>
<p><a href="http://dev.eclipse.org/newslists/news.eclipse.technology.packaging/msg00043.html">Newsgroup thread</a></p>
<p>
 org.eclipse.platform<br />
 org.eclipse.sdk<br />
 org.eclipse.xsd<br />
 org.eclipse.emf.common<br />
 org.eclipse.emf.common.ui<br />
 org.eclipse.emf.ecore<br />
 org.eclipse.emf.ecore.edit<br />
 org.eclipse.emf.edit<br />
 org.eclipse.emf.edit.ui<br />
 org.eclipse.xsd.edit<br />
 org.eclipse.wst.xml_ui.feature<br />
 org.eclipse.wst.common_ui.feature<br />
 org.eclipse.gef<br />
 org.eclipse.mylyn_feature<br />
 org.eclipse.mylyn.context_feature<br />
 org.eclipse.mylyn.ide_feature<br />
 org.eclipse.mylyn.java_feature<br />
 org.eclipse.mylyn.pde_feature<br />
 org.eclipse.mylyn.bugzilla_feature<br />
</p>
</div>

<div class="homeitem">
<h3>Eclipse Tools for C and C++ Developer</h3>
<p>You need this package for C or C++ programming. The package does <it>not</it>
contain the compiler itself. If you are using Windows, please install cygwin or 
MinGW. Linux users can use it with the GNU toolchain that is already available
on most Linux systems.</p>
<p><a href="http://dev.eclipse.org/newslists/news.eclipse.technology.packaging/msg00080.html">Newsgroup thread</a></p>
<p>
org.eclipse.platform<br />
org.eclipse.cdt<br />
org.eclipse.cvs<br />
</p>
</div>

<hr class="clearer" />
</div>
<!-- MIDCOLUMN END -->

<!-- RIGHTCOLUMN START -->
<div id="rightcolumn">
<div class="sideitem">
</div>
<!-- RIGHTCOLUMN END -->

</div>

EOHTML;


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