<?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: 		Freddy Allilaire
	# Date:			2005-12-05
	#
	# Description: Type your page comments here - these are not sent to the browser
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "About AMW";
	$pageKeywords	= "";
	$pageAuthor		= "Freddy Allilaire";
	
	# End: page-specific settings
	#
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

	<!-- Main part -->
	<div id="midcolumn">
		<h1>$pageTitle</h1>

		<a name="AMWArea"></a>
		<h3>AMW Area</h3
		<img alt="AMW Logo" src="resources/amwLogo.png" valign="top" style="padding-left: 10px;" align="right">
        <p align="justify">
      		The ATLAS Model Weaver (AMW) is being developed by the <a href="http://www.sciences.univ-nantes.fr/lina/gdd">ATLAS group</a>,
	    	<a href="http://www.inria.fr/">INRIA</a>.
      	</p>
      	<p>
      		The prototype is implemented as an EMF plugin.The AMW uses the EMF reflective API to automatically generate a standard editor based on the
      		weaving metamodel. Other user interface facilities may be added using predefined extension points.
      	</p>
      	<p>
			Other features of the model weaver:
			<ul class="midlist">
				<li>It enables weaving models and metamodels. They are stored as XMI documents.</li>
      			<li>
      				Every model element has an unique identifier to be able to reference woven elements. We use the XMI IDs for element identifiction,
      				though different namespace policies may be implemented and plugged into the workbench.
      			</li>
      			<li>
			      New metamodel extensions are created as KM3 files. The extensions may be deployed as Eclipse plugins.
			    </li>
			    <li>
			      It provides support to derived features. For instance one may create a reference orders with derived supplier and consumers.
			    </li>
			</ul>
      	</p>
      	<hr class="clearer" />
      	
	</div>

EOHTML;


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