<?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'
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "e4 Project";
	$pageKeywords	= "Eclipse, e4";
	$pageAuthor		= "e4 team";
	
	# 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 markers!	
ob_start();
?>		

	<div id="midcolumn">
		<h1><?= $pageTitle ?></h1>
		<div class="homeitem3col">
			<h3>About e4</h3>
		    e4 is an incubator project for community exploration of future 
		    technologies for the Eclipse Platform. 
		    <p>
		      Originally this project was 
		      used for the development of the underlying engine of the Eclipse 4 
		      platform which concluded with the release of Eclipse 4.
		    </p> 
		    <p>
		      After this the project incubated the new E4 Rich Client Tooling 
		      used to visually create the Application Model. This project also 
		      graduated and is now part of Eclipse Platform. 
		    </p>
		    <p>
		      You can find the E4 tooling in the 
		      <a href="http://download.eclipse.org/releases/mars">Release Train repository</a>. 
		      The projects that are currently cooking here are:
		    </p>
		    
			<h3><b>Eclipse Spies</b></h3>
 				E4 spies is a set of tools to help in developing application using Eclipse 4. 
      	        These tools are very helpful when creating a "pure E4" project 
      	        the spies makes the development of "pure e4" applications easier 
      	        and helps to understand the underlying E4 concepts like "Application Model", 
      	        "Events", "Contexts", "Preferences" and "CSS Styling".  
      	   	
		   <h3><b>Smart Project Importer Framework</b></h3>
  			Currently, when importing a project, users are facing the difficult choices 
      	    of what project they are importing and how to import it. The various 
      	    technologies involved in a project can easily be detected by some automated 
      	    check, such as presence of specific files, some content in a file or files with 
      	    a specific extension. The purpose of the framework is to use such interesting data 
      	    to automatically detect the nature of the project and automatically configure it at 
      	    best, with very minimal effort from the user.
 
      	   <p>
		    For more details, see the <a href="https://wiki.eclipse.org/E4/UI/Smart_Import">project wiki.</a>.
		   </p>
  		</div>
	</div>
	
	<div id="rightcolumn">
		<div class="sideitem">
		
		<br/>      		
      		<div class="block-box block-box-classic">
				<h3>Eclipse Model Spies</h3>
				   	  <div class="content">
						Want to take a look under the covers? Download the latest snapshot!
						<br/><br/>
						<a href="http://download.eclipse.org/e4/snapshots/org.eclipse.e4.tools/">Eclipse Spies Repository</a>
					  </div>
			</div>

      		<div class="block-box block-box-classic">
				<h3>Smart Import Framework</h3>
				<div class="content">
					The Smart Project Import Framework is the latest experiment cooking in our e4 labs.
					<br/><br/>
					<a href="http://download.eclipse.org/e4/snapshots/org.eclipse.e4.ui/">Eclipse E4 UI Repository</a>
				</div>
			</div>
					   
      		<div class="block-box block-box-classic">
				<h3>Eclipse Model tooling (Graduated!)</h3>
				<div class="content">
			    	Several e4 components graduated into the Eclipse Platform project to
      				produce the <a href="http://www.eclipse.org/eclipse4">Eclipse 4</a> stream of releases.
      		    </div>
      		 </div>

     		<div class="block-box block-box-classic">
				<h3>We build with Hudson</h3>
				<div class="content">
	   		     <a href="http://hudson.eclipse.org/e4">Eclipse 4 Hudson Build Server</a>
	   		    </div>
	   		</div>         
		</div>
	</div>
	
	<?= $rightcolumn ?>
	
<?php
	$html = ob_get_contents();
	ob_end_clean();

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