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

	#*****************************************************************************
	#
	# template.php
	#
	# Author: 		Wayne Beaton
	# Date:			2006-06-06
	#
	# Description: 
	# This page contains pointers to download and tutorial information for
	# individuals interested in using Eclipse for Java development.
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Customize Your Callisto Experience";
	$pageKeywords	= "callisto eclipse 3.2 custom customize projects features resource screencam screen cam tutorial ";
	$pageAuthor		= "Wayne Beaton";
	
	# 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", 1);
	# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 1);
	#$Nav->addCustomNav("<img src=\"http://www.eclipsecon.org/2007/image125x125.gif\"/>","http://www.eclipsecon.org/2007", "_self", 1);
	
	# End: page-specific settings
	#
			
	require_once("links.php");
	
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML
<script type="text/javascript">
function show_section(name) {
	if (document.getElementById(name).style.display=='block') return;
	document.getElementById(name +'-down').style.display='none';
	document.getElementById(name).style.display='block'
}
function hide_section(name) {
	if (document.getElementById(name).style.display=='none') return;
	document.getElementById(name +'-down').style.display='inline';
	document.getElementById(name).style.display='none'
}
</script>
<link rel="stylesheet" type="text/css" href="callisto.css" media="screen" />

<div class="callistoRealEstate paddingLeft">
	<div class="maincontent">
        <table cellspacing=0 class="callistoButtons">
        	<tr>
        		<td width="50"><img src="images/custom.jpg"></a></td>
				<td width="100%"class="noRightBorder">$pageTitle</td>
			</tr>
		</table>

        <a href="http://www.eclipsecon.org/?tag=eclipse-callisto-custom"><img style="margin-top:5px;" align="right" src="http://www.eclipsecon.org/2007/image125x125.gif"/></a>

		<p>The Callisto Experience starts with a small download in the form of the
		Eclipse Platform Runtime Binaries. From this starting point, using the
		<a href="$callisto_discovery">Callisto Discovery Site</a>, you can add as few or as many of the features
		produced by the ten projects involved in the Callisto release train as you
		need.</p>
				
      	<div class="homeitem">
      		<h3>What do you need?</h3>

			<p><strong><a href="http://download.eclipse.org/eclipse/downloads/drops/R-3.2-200606291905/index.php">Eclipse 3.2</a> is required for Callisto.</strong> 
			There is no upgrade path from previous versions of Eclipse.</p>
      		

      		<ul>
      			<li style="border-style: none">The <a href="$platform_runtime_binaries">Eclipse Platform Runtime</a> <span style="white-space:nowrap">Binaries<img id="platform-down" src="images/down.png" onclick="show_section('platform');"/></span>
      						<div id="platform" style="border-style:solid;border-width:1px;margin-left:5%;display:none">
      							<h3><img onclick="hide_section('platform');" align="right" src="images/close.png"/>Eclipse SDK</h3>
	      						The Eclipse Platform Runtime Binaries provides base integrated development
	      						environment (IDE) functionality, but without support for any specific programming 
	      						languages or tools. From the Platform Runtime Binaries, you can connect to the
	      						Callisto Discovery Site to install the features you need.
      						</div>
      					</li>
      			</li>
      			<li style="border-style: none">Optional features available via the <a href="$callisto_discovery">Callisto&nbsp;Discovery&nbsp;Site</a>
      				<ul>
		      			<li style="border-style: none">C/C++ Development tools <span style="white-space:nowrap">(<a href="/cdt">CDT</a>)<img id="cdt-down" src="images/down.png" onclick="show_section('cdt');"/></span>
		      				<div id="cdt" style="border-style:solid;border-width:1px;margin-left:5%;display:none">
		      					<h3><img onclick="hide_section('cdt');" align="right" src="images/close.png"/>CDT</h3>
			      				The CDT provides advanced functionality for C/C++ developers.
			      				Combining the CDT with the Platform Runtime forms 
			      				a first-class C/C++ IDE.
		      					<h4>Tutorials and Help</h4>
							    <ul>
							    	<li style="list-style-image: url(images/movie.png);border-style: none"><a href="$install_cdt">Installing and using the C/C++ Development Tools</a></li>
									<li style="list-style-image: url(images/tutorial.png);border-style: none"><a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/cdt-home/user/Tutorials.html?cvsroot=Tools_Project">CDT Tutorials...</a></li>
								</ul>
		      				</div>
		      			</li>		      			
      					     					
      					<li style="border-style: none">Data Tools <span style="white-space:nowrap">(<a href="/datatools">DTP</a>)<img id="dtp-down" src="images/down.png" onclick="show_section('dtp');"/></span>
      						<div id="dtp" style="border-style:solid;border-width:1px;margin-left:5%;display:none">
      							<h3><img onclick="hide_section('dtp');" align="right" src="images/close.png"/>Data Tools</h3>
	      						Data Tools provides tools for accessing, viewing and manipulating databases and
	      						other data sources.
      						</div>
      					</li>
      					
      					<li style="border-style: none">Eclipse Modeling Framework <span style="white-space:nowrap">(<a href="/emf">EMF</a>)<img id="emf-down" src="images/down.png" onclick="show_section('emf');"/></span>
      						<div id="emf" style="border-style:solid;border-width:1px;margin-left:5%;display:none">
      							<h3><img onclick="hide_section('emf');" align="right" src="images/close.png"/>Eclipse Modeling Framework</h3>
      							EMF is a modeling framework and code generation facility for building tools and other 
      							applications based on a structured data model.
      						</div>
      					</li>
      					
      					<li style="border-style: none">Graphical Editing Framework <span style="white-space:nowrap">(<a href="/gef">GEF</a>)<img id="gef-down" src="images/down.png" onclick="show_section('gef');"/></span>
      						<div id="gef" style="border-style:solid;border-width:1px;margin-left:5%;display:none">      							
      							<h3><img onclick="hide_section('gef');" align="right" src="images/close.png"/>Graphical Editing Framework</h3>
      							The Graphical Editing Framework (GEF) allows developers to take an existing 
      							application model and quickly create a rich graphical editor.
      						</div>
      					</li>
      					
      					<li style="border-style: none">Graphical Modeling Framework <span style="white-space:nowrap">(<a href="/gmf">GMF</a>)<img id="gmf-down" src="images/down.png" onclick="show_section('gmf');"/></span>
      						<div id="gmf" style="border-style:solid;border-width:1px;margin-left:5%;display:none">
      							<h3><img onclick="hide_section('gmf');" align="right" src="images/close.png"/>Graphical Modeling Framework</h3>
      							The Eclipse Graphical Modeling Framework (GMF) provides a 
      							generative component and runtime infrastructure for developing 
      							graphical editors.
      						</div>
      					</li>
 
      					<li style="border-style: none">Java Development Tools <span style="white-space:nowrap">(<a href="/jdt">JDT</a>)<img id="jdt-down" src="images/down.png" onclick="show_section('jdt');"/></span>
      						<div id="jdt" style="border-style:solid;border-width:1px;margin-left:5%;display:none">
      							<h3><img onclick="hide_section('jdt');" align="right" src="images/close.png"/>Java Development Tools</h3>
	      						The Java Development Tools (JDT) provides tools that support
	      						the development of any Java application, including Eclipse plug-ins. 
      							<ul>
					      		    <li style="list-style-image: url(images/movie.png);border-style: none"><a href="http://www.eclipse.org/downloads/download.php?r=1&file=/technology/phoenix/demos/testfirst/testfirst.html">Test First Development using Eclipse</a></li>
					      		</ul>
      						</div>
      					</li>  
      					
      					<li style="border-style: none">Java EE and Web Tools <span style="white-space:nowrap">(<a href="/webtools">WTP</a>)<img id="wtp-down" src="images/down.png" onclick="show_section('wtp');"/></span>
      						<div id="wtp" style="border-style:solid;border-width:1px;margin-left:5%;display:none">
      							<h3><img onclick="hide_section('wtp');" align="right" src="images/close.png"/>Java EE and Web Tools</h3>
	      						The Eclipse Web Tools Platform (WTP) extends the Eclipse 
      							platform with tools for developing Java Enterprise Edition and
      							Web applications.
      							<ul>
					      		    <li style="list-style-image: url(images/tutorial.png);border-style: none"><a href="http://www.eclipse.org/webtools/community/tutorials/BuildJ2EEWebApp/BuildJ2EEWebApp.html">Building and Running a Web Application</a></li>
									<li style="list-style-image: url(images/tutorial.png);border-style: none"><a href="http://www.eclipse.org/dali/viewlets/01-Add_Persistence_viewlet_swf.html">Adding Java Persistence API (JPA) Support to a Project</a></li>
									<li style="list-style-image: url(images/tutorial.png);border-style: none"><a href="http://www.eclipse.org/webtools/community/communityresources.html#tutorials">More Web and Java EE Tutorials...</a></li>
								</ul>
      						</div>
      					</li>  
      					
      					<li style="border-style: none">Reporting Tools <span style="white-space:nowrap">(<a href="/birt">BIRT</a>)<img id="birt-down" src="images/down.png" onclick="show_section('birt');"/></span>
      						<div id="birt" style="border-style:solid;border-width:1px;margin-left:5%;display:none">
      							<h3><img onclick="hide_section('birt');" align="right" src="images/close.png"/>Reporting Tools</h3>
	      						BIRT is a reporting system that integrates with your application to produce 
	      						compelling reports for both web and PDF.
	      						<ul>
					      		    <li style="list-style-image: url(images/tutorial.png);border-style: none"><a href="http://www.eclipse.org/birt/phoenix/tutorial/basic">Building a Simple Report with BIRT</a></li>
									<li style="list-style-image: url(images/movie.png);border-style: none"><a href="http://download.eclipse.org/birt/downloads/demos/FirstReport/MyFirstReport.html">My First Report</a></li>
									<li style="list-style-image: url(images/tutorial.png);border-style: none"><a href="http://www.eclipse.org/birt/phoenix/tutorial/">More BIRT Tutorials and screen casts...</a></li>
								</ul>
      						</div>
      					</li>
      					
      					<li style="border-style: none">Test and Performance Tools <span style="white-space:nowrap">(<a href="/tptp">TPTP</a>)<img id="tptp-down" src="images/down.png" onclick="show_section('tptp');"/></span>
      						<div id="tptp" style="border-style:solid;border-width:1px;margin-left:5%;display:none">
      							<h3><img onclick="hide_section('tptp');" align="right" src="images/close.png"/>Test and Performance Tools</h3>
	      						The Eclipse Test and Performance Tools Platform (TPTP) Project 
	      						provides an open platform supplying powerful frameworks and 
	      						services that allow software developers to build unique test 
	      						and performance tool, both open source and commercial, that 
	      						can be easily integrated with the platform and with other tools.
      							<h4>Suggested reading</h4>
					      		<ul>      		  	
					      			<li style="list-style-image: url(images/tutorial.png);border-style: none"><a href="http://www.eclipse.org/tptp/home/documents/conferences/eclipseCon2005/EclipseCon_2005_Tutorial_22_Antony_Miguel_Paul_Slauenwhite.pdf">Using TPTP Logging and Monitoring Tools</a></li>
					      		</ul>
      						</div>
      					</li>
      					
      					<li style="border-style: none">Visual Editor <span style="white-space:nowrap">(<a href="/vep">VE</a>)<img id="ve-down" src="images/down.png" onclick="show_section('ve');"/></span>
      						<div id="ve" style="border-style:solid;border-width:1px;margin-left:5%;display:none">
      							<h3><img onclick="hide_section('ve');" align="right" src="images/close.png"/>Visual Editor</h3>
	      						The Eclipse Visual Editor (VE) project is a vendor-neutral, open 
      							development platform supplying frameworks for creating GUI 
      							builders, and exemplary, extensible tool implementations for 
      							<a href="/swt">SWT</a>/<a href="/rcp">RCP</a>.
      						</div>
      					</li>
      				</ul>
   				</li>
      		</ul>
      	</div>    	
      	<div class="homeitem">
      		<h3>Tutorials and Help</h3>
      		<ul>
      		    <li style="list-style-image: url(images/movie.png);border-style: none"><a href="http://www.eclipse.org/downloads/download.php?r=1&file=/technology/phoenix/demos/install-eclipse/install-eclipse.html">Installing the Eclipse SDK</a></li>
      		    <li style="list-style-image: url(images/movie.png);border-style: none"><a href="$install_callisto">Installing Features from the Callisto Discovery Site</a></li>
      			<li style="list-style-image: url(images/movie.png);border-style: none"><a href="$install_cdt">Installing and using the C/C++ Development Tools</a></li>
				<li style="list-style-image: url(images/movie.png);border-style: none"><a href="http://www.eclipse.org/downloads/download.php?r=1&file=/technology/phoenix/demos/install-wtp/install-wtp.html">Installing and Using the Eclipse Web Tools</a></li>
				<li style="list-style-image: url(images/tutorial.png);border-style: none"><a href="http://www.eclipse.org/birt/phoenix/build/">Installing BIRT</a></li>
				  <li style="list-style-image: url(images/movie.png);border-style: none"><a href="http://www.eclipse.org/downloads/download.php?r=1&file=/technology/phoenix/demos/install-ve/install-ve.html">Installing and using the Eclipse Visual Editor</a></li>
			     			    		
      		</ul>
      	</div>
      	
	</div>

</div>

EOHTML;

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