| <?php | |
| require_once('../template.php'); | |
| require_once('../util.php'); | |
| // Create a parser and parse the examples.xml document. | |
| $categories = simplexml_load_file("examples.xml")->category; | |
| // Collect all examples by visiting all leaf nodes | |
| $examples = array(); | |
| foreach ($categories as $category) { | |
| foreach ($category->example as $example) { | |
| array_push($examples, $example); | |
| } | |
| } | |
| $currentExampleName = isset($_REQUEST['example']) ? strip_tags($_REQUEST['example']) : null; | |
| $example = null; | |
| $exampleIndex = 0; | |
| if ($currentExampleName) { | |
| $i = 0; | |
| foreach ($examples as $ex) { | |
| $i++; | |
| if ($ex["src"] == $currentExampleName) { | |
| $example = $ex; | |
| $exampleIndex = $i; | |
| break; | |
| } | |
| } | |
| } | |
| else { | |
| $example = $examples[0]; | |
| $exampleIndex = 1; | |
| } | |
| h(); | |
| ?> | |
| <div class="row"> | |
| <!-- main part --> | |
| <div class="span8"> | |
| <h1 class="page-header">Example: <?=$example["title"]?></h1> | |
| <!-- first row of content --> | |
| <div class="row"> | |
| <div class="span8"> | |
| <?if ($example["interim"] == "true"){?> | |
| <div class="alert alert-info alert-block"> | |
| <button type="button" class="close" data-dismiss="alert">×</button> | |
| This example uses features which are only available in the <a href="../download">latest interim version</a> of Epsilon. | |
| </div> | |
| <?} else if ($example["interim"] == "false"){?> | |
| <div class="alert alert-info alert-block"> | |
| <button type="button" class="close" data-dismiss="alert">×</button> | |
| This example uses features which are only available if you are running Epsilon from the latest version of its source code. | |
| </div> | |
| <?}?> | |
| </div> | |
| <div class="span8 tabbable"> | |
| <ul class="nav nav-tabs"> | |
| <?php | |
| $i = 1; | |
| foreach ($example->file as $file){ | |
| $path = $file["name"]; | |
| $slashIndex = strrpos($path, '/'); | |
| if ($slashIndex > -1) { | |
| $name = substr($path, $slashIndex + 1); | |
| } | |
| else { | |
| $name = $path; | |
| } | |
| if($i < 2) { ?> | |
| <li class="active"><a href="#tab<?=$i?>" data-toggle="tab"><?=$name?></a></li> | |
| <? } else {?> | |
| <li><a href="#tab<?=$i?>" data-toggle="tab"><?=$name?></a></li> | |
| <? } | |
| $i++; | |
| } | |
| foreach ($example->metamodel as $file){ | |
| if($i < 2) { ?> | |
| <li class="active"><a href="#tab<?=$i?>" data-toggle="tab"><?=$file["name"]?></a></li> | |
| <? } else {?> | |
| <li><a href="#tab<?=$i?>" data-toggle="tab"><?=$file["name"]?></a></li> | |
| <? } | |
| $i++; | |
| } ?> | |
| <li><a href="#tab<?=$i?>" data-toggle="tab">Get it!</a></li> | |
| </ul> | |
| <div class="tab-content"> | |
| <?php | |
| $i = 1; | |
| foreach ($example->file as $file){ | |
| if($i < 2) { ?> | |
| <div class="tab-pane active" id="tab<?=$i?>"> | |
| <? } else { ?> | |
| <div class="tab-pane" id="tab<?=$i?>"> | |
| <? } | |
| $url = Epsilon::getSVNExamplesLocation(); | |
| $url = $url.$example["src"]; | |
| $url = $url."/".$file["name"]; | |
| if ($file["image"] == "true"){ ?> | |
| <img src="<?=$url?>"/> | |
| <? } else { | |
| $content = readUrlContent($url); | |
| ?> | |
| <pre class="prettyprint lang-<?=getFileExtension($file["name"])?>"><?=$content?></pre> | |
| <?}?> | |
| </div> | |
| <? $i++;} ?> | |
| <?foreach ($example->metamodel as $file){?> | |
| <? if($i < 2) { ?> | |
| <div class="tab-pane active" id="tab<?=$i?>"> | |
| <? } else { ?> | |
| <div class="tab-pane" id="tab<?=$i?>"> | |
| <? } ?> | |
| <? | |
| $url = Epsilon::getSVNExamplesLocation(); | |
| $url = $url."org.eclipse.epsilon.examples.metamodels"; | |
| $url = $url."/".$file["name"]; | |
| $content = readUrlContent($url); | |
| ?> | |
| <pre class="prettyprint lang-<?=getFileExtension($file["name"])?>"><?=$content?></pre> | |
| </div> | |
| <? $i++; }?> | |
| <div class="tab-pane" id="tab<?=$i?>"> | |
| <p> | |
| <a href="../doc/articles/running-from-source">Clone</a> Epsilon's <a href="https://git.eclipse.org/c/epsilon/org.eclipse.epsilon.git/">Git repository</a> and then: | |
| <ul> | |
| <li> navigate to <a href="https://git.eclipse.org/c/epsilon/org.eclipse.epsilon.git/tree/examples">examples</a> | |
| <?if ($example["standalone"] == "false"){?> | |
| <li> import the <a href="https://git.eclipse.org/c/epsilon/org.eclipse.epsilon.git/tree/examples/org.eclipse.epsilon.examples.metamodels">org.eclipse.epsilon.examples.metamodels</a> project | |
| <?}?> | |
| <li> import the <a href="https://git.eclipse.org/c/epsilon/org.eclipse.epsilon.git/tree/examples/<?=$example["src"]?>"><?=$example["src"]?></a> project | |
| <?foreach ($example->project as $project){?> | |
| <li> import the <a href="https://git.eclipse.org/c/epsilon/org.eclipse.epsilon.git/tree/examples/<?=$project["src"]?>"><?=$project["src"]?></a> project | |
| <?}?> | |
| </ul> | |
| </p> | |
| <?if (!($example["runnable"] == "false")){?> | |
| <p>Once you have checked out/imported the code, to run the example you need to go through the following steps: | |
| <ol> | |
| <?if ($example["standalone"] == "false"){?> | |
| <li> register all .ecore metamodels in the <strong>org.eclipse.epsilon.examples.metamodels</strong> project (select all of them and then right click and select <strong>Register EPackages</strong>) | |
| <?}?> | |
| <li> register any .ecore metamodels in the <strong><?=$example["src"]?></strong> project | |
| <li> right click the .launch file in the <strong><?=$example["src"]?></strong> project | |
| <li>select <strong>Run as...</strong> and click the first item in the menu that pops up | |
| </ol> | |
| </p> | |
| <?}?> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- end first row of content --> | |
| </div> | |
| <!-- end main part --> | |
| <!-- sidebar --> | |
| <div class="span4"> | |
| <!-- first element --> | |
| <? sB('What\'s this?'); ?> | |
| <p><?=$example->description?></p> | |
| <? sE(); ?> | |
| <!-- end first element --> | |
| <? sB('What are .emf files?'); ?> | |
| <p> | |
| .emf files are Ecore metamodels expressed using the <a href="../doc/articles/emfatic">Emfatic</a> textual syntax. | |
| </p> | |
| <? sE(); ?> | |
| <? sB('More examples...'); ?> | |
| <? foreach ($categories as $category) { ?> | |
| <h5><?=$category["title"]?></h5> | |
| <ul> | |
| <? foreach ($category->example as $example) { ?> | |
| <li><a href="index.php?example=<?=$example["src"]?>"><?=$example["title"]?></a> | |
| <?}?> | |
| </ul> | |
| <? } ?> | |
| <? sE(); ?> | |
| <? sB('Even more examples...'); ?> | |
| <p> More examples are available in the <a href="<?=Epsilon::getSVNExamplesLocation()?>">examples</a> folder of the Git repository.</p> | |
| <? sE(); ?> | |
| </div> | |
| <!-- end sidebar --> | |
| </div> | |
| <?php | |
| f(array( | |
| '<script> | |
| prettyPrint(); | |
| </script>' | |
| )); | |
| ?> |