<?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: 		Denis Roy
# Date:			2005-06-16
#
# Description: Type your page comments here - these are not sent to the browser
#
#
#****************************************************************************

#
# Begin: page-specific settings.  Change these.
$pageTitle 		= "Tigerstripe";
$pageKeywords	= "Type, page, keywords, here";
$pageAuthor		= "Eric Dillon";
# End: page-specific settings
#

# Paste your HTML content between the EOHTML markers!
$html = <<<EOHTML

<div id="maincontent">

<div id="midcolumn">
<h1>$pageTitle</h1>
		<div>
			<h3>An Eclipse Technology Subproject</h3>
			<p>Tigerstripe is a framework for Model Driven Engineering (MDE) with special support for the Telecommunications Industry.</p>
			<img src="/tigerstripe/images/tsScreenShot.gif"/>
		</div>
		
		<div class="homeitem3col">
			<h3>Get the latest about Tigerstripe !</a></h3>
			<ul>
				<li>Looking to get started with Tigerstripe, for more informations, or insight? Visit our <a href="http://wiki.eclipse.org/Tigerstripe">wiki!</a></li>
				<li>Looking for the latest build of Tigerstripe? Get it from <a href="downloads/allDownloads.php#latest">Here</a></li>
				<li>Tigerstripe Generators can be checked-out from the "<a href="generators">generators</a>" page</li>
				</ul>
		</div>
		<hr class="clearer" />
						
		<div class="homeitem">
			<h3>Why Tigerstripe?</h3>
			<p>Tigerstripe is focusing on themes that we found were typically not covered in existing MDE frameworks:</p> 
			<ul>
				<li><a href="http://wiki.eclipse.org/Why_Tigerstripe_%3F#Focused_Modeling">Users of MDE frameworks may not be UML experts</a>...</li> 
				<li><a href="http://wiki.eclipse.org/Why_Tigerstripe_%3F#Large_Model_Support">Enterprise Models are BIG</a>...</li> 
				<li><a href="http://wiki.eclipse.org/Why_Tigerstripe_%3F#Distributed_Teams">Smaller pieces of Enterprise Models are owned by various Teams</a>...</li> 
				<li><a href="http://wiki.eclipse.org/Why_Tigerstripe_%3F#MDE_Roles">MDE involves multiple roles</a>...</li> 
			</ul>
			<hr class="clearer" />
 		  	<div align="right">
				<a href="http://wiki.eclipse.org/Why_Tigerstripe_%3F">Read more...</a>
		 	</div>
		</div>
		
		<div class="homeitem">
			<h3>Project News and Events</h3>
			<ul>
				<li><a href="/tigerstripe/downloads">Jan 25th, 2010: Tigerstripe 0.5M2. Last milestone build of 0.5 before release</li>
				<li><a href="/tigerstripe/downloads">Aug 27th, 2009: Tigerstripe 0.5M1. Second milestone build of 0.5</li>
				<li><a href="/tigerstripe/downloads">June 26th, 2009: Galileo support! Tigerstripe 0.5M0 is available!</li>
				<li><a href="/tigerstripe/downloads">May 7th, 2009: Tigerstripe 0.4.6 is released!</li>
				<li>...</li>
			</ul>
		</div>
		
	</div>

	<div id="rightcolumn">
 		<div class="sideitem">
		   <h6>Incubation</h6>
 		  <div align="center">
 		  	<a href="/projects/what-is-incubation.php">
 		  		<img align="center" src="/images/egg-incubation.png" border="0" alt="Incubation" />
 		  	</a>
 		  </div>
 		</div>
 		<div class="sideitem">
 			<h6>New to Tigerstripe?</h6>
 			<ul>
 				<li><a href="http://wiki.eclipse.org/Tigerstripe_Community_Resources">Community Resources</a></li>
 				<li><a href="/tigerstripe/downloads.php">Downloads</a></li>
 				<li><a href="/tigerstripe/generators">Generators</a></li>
 				<li><a href="/tigerstripe/documentation/index.php">Documentation</a></li>
 				<li><a href="/tigerstripe/mailing-lists.php">Mailing Lists</a></li>
 				<li><a href="http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.tigerstripe">Newsgroup</a></li>
 				<li><a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Tigerstripe">Report Bug</a></li>
 			</ul>
 		</div>
	</div>
</div>
EOHTML;


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