
<?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 		= "Eclipse for Plug-in and RCP Developers";
	$pageKeywords	= "callisto plug-in rcp rich client platform eclipse 3.2 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
<link rel="stylesheet" type="text/css" href="callisto.css" media="screen" />

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

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

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

		<p>The Eclipse Software Development Kit (SDK) contains everything you need to build
		Eclipse applications, including plug-ins for the development environment and Eclipse Rich Client Platform (<a href="http://wiki.eclipse.org/index.php/Rich_Client_Platform">RCP</a>) applications.</p>
		<p>The new Eclipse SDK 3.2 release features some exciting new capabilities for plug-in and RCP developers, including:
		<ul>
			<li>Java 6 support</li>
			<li>Support for Mac OSX on Intel and Preview support for Windows Vista</li>
			<li><a href="/swt">SWT</a> Enhancements including support for OpenGL, virtual trees, custom table cell drawing</li>
			<li>Improvements in Plug-in Development Environment (<a href="http://www.eclipse.org/pde/">PDE</a>) to make building RCP applications easier</li>
			<li>Common Navigator Framework</li>
			<li>New standalone OSGi framework</li>
		</ul>	
		<p>For a more complete list, check out the <a href="$new_noteworthy">New and Noteworthy</a>.</p>
		
		<p>The Eclipse SDK can be extended to provide additional functionality by adding features from the 
		<a href="$callisto_discovery">Callisto Discovery Site</a>.</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="$eclipse_sdk">Eclipse SDK</a> <span style="white-space:nowrap">3.2<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 3.2</h3>
	      						The SDK provides Java development tools.
	      						<h4>Tutorials and Help</h4>
					      		<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 3.2</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/testfirst/testfirst.html">Test First Development using Eclipse</a></li>
					      		</ul>
      						</div>
      					</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">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>
      					<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">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">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>
	      						The Eclipse Data Tools Platform (DTP) is a set of extensible frameworks and
								exemplary tools for developing data-centric applications in Eclipse.
      						</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 3.2</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="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>
      			<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>
      			
      	<div class="homeitem">
      		<h3>Suggested reading</h3>
      		<ul>
      			<li style="list-style-image: url(images/document.png);border-style: none"><a href="http://www.eclipse.org/articles/">Eclipse Corner Articles</a></li>
      			<li style="list-style-image: url(images/document.png);border-style: none"><a href="http://local.phoenix.eclipse.org/articles/Whitepaper-Platform-3.1/eclipse-platform-whitepaper.html">Eclipse Platform Technical Overview</a></li>
      			<li style="list-style-image: url(images/book.png);border-style: none"><a href="http://www.aw-bc.com/catalog/academic/product/0,1144,032142672X,00.html">Eclipse: Building Commercial-Quality Plug-ins</a></li>
      			<li style="list-style-image: url(images/book.png);border-style: none"><a href="http://www.aw-bc.com/catalog/academic/product/0,1144,0321205758,00.html">Contributing to Eclipse: Principles, Patterns, and Plug-Ins</a></li>
      			<li style="list-style-image: url(images/book.png);border-style: none"><a href="http://www.aw-bc.com/catalog/academic/product/0,1144,0321334612,00.html">Eclipse Rich Client Platform: Designing, Coding, and Packaging Java&trade; Applications</a></li>
      			<li style="list-style-image: url(images/document.png);border-style: none">Building a Common Navigator based viewer
      				<a href="http://scribbledideas.blogspot.com/2006/05/building-common-navigator-based-viewer.html">Part I</a>,
      				<a href="http://scribbledideas.blogspot.com/2006/05/building-common-navigator-based-viewer_22.html">Part II</a>,
      				<a href="http://scribbledideas.blogspot.com/2006/06/building-common-navigator-based-viewer.html">Part III</a>, and
      				<a href="http://scribbledideas.blogspot.com/2006/06/building-common-navigator-based-viewer_18.html">Part IV</a>
      			</li>
      		</ul>
      	</div>      	
	</div>

</div>




EOHTML;

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