<?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">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><a href="/tigerstripe/downloads">Jan 23rd, 2009: Tigerstripe 0.4.5 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);
?>
