<?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());

$pageTitle 	= "Henshin - Examples";
$pageKeywords	= "EMF, Henshin, model transformation, examples";
$pageAuthor	= "Christian Krause";

# Figure out which example should be displayed:
$example = '';
if (isset($_GET['example'])) {
    $example = preg_replace('/\W/', '', $_GET['example']);
}
if (!empty($example) && file_exists("examples/$example/index.html")) {
    $target = "examples/$example/index.html";
} else {
    $target = "examples/index.html";
}

# Display the target file:
ob_start();
include "$target";
$contents = ob_get_contents();
ob_end_clean();

# Paste your HTML content between the EOHTML markers!	
$html = <<<EOHTML

<style type="text/css">
table { 
    border-collapse:collapse;
}
td {
    border: 1px solid black;
    vertical-align:top;
    text-align:right;
    overflow:hidden;
}
th {
    border: 1px solid black;
    font-weight: bold;
    text-align: center;
}
tr {
    border: 1px solid black;
}
</style>

<div id="maincontent">
<div id="midcolumn" style="width:735px;">
$contents
</div>
</div>

<link type="text/css" rel="stylesheet" href="shjs/css/sh_ide-eclipse.css">
<script type="text/javascript" src="shjs/sh_main.js"></script>
<script type="text/javascript" src="shjs/lang/sh_java.js"></script>
<script type="text/javascript">
sh_highlightDocument();
</script>

EOHTML;

# Generate the web page
$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);

?>