blob: db4370b9f66efef51d9b8e3f72687ae71cd38a72 [file] [log] [blame]
<?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");
require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/common/project-info.class.php");
$App = new App(); $Nav = new Nav(); $Menu = new Menu();
$projectInfo = new ProjectInfo("modeling.gmf");
$projectInfo->generate_common_nav( $Nav );
include ($App->getProjectCommon());
#*****************************************************************************
#
# gmf-new-1.0.php
#
# Author: Richard C. Gronback
# Date: 2006-07-11
#
# Description:
#
#
#****************************************************************************
#
# Begin: page-specific settings. Change these.
$pageTitle = "What's New and Noteworthy - 1.0";
$pageKeywords = "eclipse,project,graphical,modeling,model-driven";
$pageAuthor = "Richard C. Gronback";
# Add page-specific Nav bars here
# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
# $Nav->addNavSeparator("My Page Links", "downloads.php");
# $Nav->addCustomNav("My Link", "mypage.php", "_self", 3);
# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 3);
# End: page-specific settings
#
# Paste your HTML content between the EOHTML markers!
$html = <<<EOHTML
<div id="maincontent">
<div id="midcolumn">
<table border="0" cellpadding="10" cellspacing="10" width="100%">
<tbody>
<tr>
<td align="left"><h1>$pageTitle</h1></td>
<td align="right"><img align="right" src="http://www.eclipse.org/gmf/images/logo_banner.png" /></td>
</tr>
</tbody>
</table>
<hr/>
<table border="0" cellspacing="5" cellpadding="2" width="100%">
<tbody>
<tr>
<td width="69%" class="bannertext">
Here are some of the more noteworthy things available in release build 1.0
(June 30, 2006) which is now available for <a href="http://download3.eclipse.org/modeling/gmp/downloads/drops/R-1.0-200606271200/index.php" target="_self">download</a>.
<br/><br/>See the <a href="http://download3.eclipse.org/modeling/gmp/downloads/drops/R-1.0-200606271200/buildNotes.php">R1.0 build notes</a> for details about bugs fixed and other changes.
</td>
</tr>
<tr>
<td width="69%" class="bannertext">
Here is the list of previous New & Noteworthy documents for 1.0 milestone builds:<br/>
<a href="http://www.eclipse.org/gmf/new/gmf-new-1.0M3.php">1.0 M3 New & Noteworthy</a><br/>
<a href="http://www.eclipse.org/gmf/new/gmf-new-1.0M4.php">1.0 M4 New & Noteworthy</a><br/>
<a href="http://www.eclipse.org/gmf/new/gmf-new-1.0M5.php">1.0 M5 New & Noteworthy</a><br/>
<a href="http://www.eclipse.org/gmf/new/gmf-new-1.0M6.php">1.0 M6 New & Noteworthy</a><br/>
</td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="10" cellspacing="0" width="100%">
<tbody>
<tr>
<td colspan="2">
<hr/>
<h2>Tooling</h2>
<hr/>
</td>
</tr>
<tr><a name="ecore-diagram"/>
<td align="right" valign="top" width="10%">
<b>Domain model</b>
</td>
<td align="left" valign="top" width="70%">
<p>Generally, there is a domain-specific model behind the diagram. GMF relies on models expressed with EMF's ECore meta-model.</p>
<p><img src="images1.0/ecorefragment.png" alt="Fragment of ECore diagram"/></p>
<p>This fragment of an ECore diagram shows the domain model of an ECore diagram, namely EMF's ECore model</p>
<i>Diagrams for domain model comprising of several packages</i><br/><br/>
<p>Packages are often used to break large models down (though, neither ECore nor UML2 models use this technique). GMF respects models comprising of several packages and generates code that references appropriate factories and meta-packages</p>
<i>Diagrams without domain model at all (pure design modeling)</i><br/><br/>
<p>Diagram elements do not require a mapping to domain elements. It's perfectly legal to have diagram elements that don't have underlying domain entity, or even complete diagram without domain model.</p>
<p><img src="images1.0/puredesign.png" alt="Pure-design diagram"/></p>
<i>Domain models based on XSD</i><br/><br/>
<p>ECore meta-models derived from XSD (thus, serialized into XML with appropriate schema) are supported. Provided you can plug in EMF's ResourceFactory, there are no limits on persistence of your domain model.</p>
<i>Links backed up with either EReference or EClass</i><br/><br/>
<p>To model relations, both EReference and EClass are supported as model instances behind visual element</p>
<p><img src="images1.0/linkref.png" alt="EReference-based link"/>&nbsp;&nbsp;<img src="images1.0/linkclass.png" alt="EClass-based link"/></p>
</td>
</tr>
<tr>
<td align="right" valign="top" width="10%">
<b>Generated Editor Features</b>
</td>
<td align="left" valign="top" width="70%">
<i>Target runtime</i><br/><br/>
<p>GMF-Runtime bundle provides a lot of improvements to regular GEF editors, as well as new features and is default target of code generation process. See Runtime section of New & Noteworthy documents for mode details.</p>
<p>Part of SDK-experimental is a 'Lite' codegen option, which allows you to generate code that is pure GEF, imposing no additional runtime requirements but Platform, EMF, EMFT (namely, transaction and OCL) and GEF.</p>
<i>Synchronized diagrams</i><br/><br/>
<p>Term "synchronized diagram" refers to visual surface that tracks top-level elements being added/removed and refreshes visuals accordingly. Thus, a new element added to domain model will be automatically added to diagraming surface. Non-synchronized diagrams require the user to explicitly add elements of interest. The choice between synchronized and non-synchronized diagrams relies upon the toolsmith's understanding of a diagram's intended use.</p>
<i>Single/distinct file to persist domain and diagram information</i><br/><br/>
<p>GMF is flexible regarding whether your domain model is persisted in the same file with visual information or separately, although some tools that take your domain model may not be so flexible. Thus, an option is provided in GenModel whether to keep file with domain model separate from file with diagram (size, position, colors, etc) information.</p>
<i>Initialize diagram file from domain model, starting from any root (multiple diagrams per model)</i><br/><br/>
<p>As part of diagram code generation, an action to initialize diagram content from existing domain model instances is provided.</p>
<p>Since Init Diagram File Action allows specifying any applicable model element as a root diagram element, it could be applied for the elements of the same domain model several times. As a result several diagrams of the same type visualizing different parts of the same model or different diagrams visualizing same model element could be created. Most notable use cases:</p>
<ul>
<li>Model (UML2/Ecore/user-defined class model) contains several packages. It is possible to create one package diagram for each of these packages.</li>
<li>Model (UML2/User-defined) has two different diagramming aspects - package could be visualized as ClassDiagram or StateDiagram. User can initialize two different diagrams using the same domain model element (package) as a diagram root element. As a result, the same model could be modified using two different diagrams</li>
</ul>
<p><img src="images1.0/initdiagramfileaction.png" alt="Context menu with the action"/></p>
<i>Shortcuts</i><br/><br/>
<p>Shortcuts are a mechanism to show elements from other diagrams. Diagrams should be aware of each other at time of generation. Shortcuts help to keep diagrams clean while alowing to depict some particular aspect of other domain/subsystem/component.</p>
<p><img src="images1.0/shortcuts.jpg" alt="Diagram with shortcuts"/></p>
<i>Labels</i><br/><br/>
<p>It's easy to define labels for diagram elements either with fixed content or based on EAttribute value(s). Labels floating around owning node may be defined (a.k.a. external labels). There's no limit on number of labels per diagram element, and no labels at all is ok as well.</p>
<p>Label's edit and view patterns (using <tt>java.text.MessageFormat</tt> values) allows for value formatting.</p>
<i>Visualize containments as links</i><br/><br/>
<p>Containment references may be visualized both as inner elements and as diagram links.</p>
<p><img src="images1.0/phantomelements.png"/><br/>
"Main Topic" elements owns both Resource and Subtopic elements. Resources are visualized as inner element (e.g. TopicResource1), while e.g. Subtopic2 gets containment relationship to Main Topic based on link.</p>
<i>New &lt;Your&gt;Diagram Wizard</i><br/><br/>
<p>Part of diagram code generation is wizard to create new diagram. These wizards may be found in Examples category of "New wizard"</p>
<p><img src="images1.0/wizard.png" alt="Wizard to create new diagram"/></p>
<i>Compartments</i><br/><br/>
<p>Compartments is a logical grouping facility. Usually with 'collapse' feature to hide grouped elements, and a title. Screenshot illustrates collapsed compartment with attributes of Class figure</p>
<p><img src="images1.0/compartments.png" alt="Node with compartments"/></p>
<i>Child elements</i><br/><br/>
<p>Both grouped with compartments and directly managed by parent child elements are possible.</p>
<p>Toolsmith may choose whether to display child elements as list of labels or to use full-fledged shapes</p>
<p><img src="images1.0/children.png" alt="Node with children and compartments"/></p>
<i>Property sheet</i><br/><br/>
<p>Multi-tabbed, extensible property sheet provides access to both domain and notation models properties.</p>
<p><img src="images1.0/propertysheet.png" alt="Property sheet"/></p>
</td>
</tr>
<tr><a name="validation"/>
<td align="right" valign="top" width="10%">
<b>Audits, Metrics and Validation</b>
</td>
<td align="left" valign="top" width="70%">
<i>Audits</i><br/><br/>
<p>GMF mapping allows definition of diagram audits in the form of rules which must be satisfied for a valid diagram. The rules can be targeted to domain or runtime notation meta-model or specific visual elements of the diagram. The audit rule expressions are registered as constraints with EMFT Validation Framework and published into the framework constraints registry.</p>
<p>The diagram validation action performs a check of audit rules, also involving EMF EValidator if there is any registered for the domain meta-model. All violations are reported as diagram resource problem markers which are navigable to the affected visual elements in the diagram.</p>
<p>Optionaly, validation status decorators can be enabled in order to highlight invalid elements and provide instant problem information when mouse hovers over the decorator.</p>
<img src="images1.0/audits.png" alt="Audits screenshot"/><br/>
<i>Supported langages</i>
<p>The logic of audit rules is written as a boolean typed expression which can be formulated in one of the supported languages. OCL and Java can be used for meta-model aware expressions while regexp, nregexp are useful when working with data-type values convertable to string. The latter one stands for negation of regular expression and can be used if a condition resulting in true is difficult to express. All expressions in interpreted languages are validated during modeling phase.</p>
<i>Metrics</i><br/><br/>
<p>Metric rules can be defined in the mapping model and evaluated in runtime. The rule numeric expressions can be targeted to either the domain meta-model or diagram visual elements. The result view of metrics calculations shows the values for targeted elements and indicate those out of bounds.</p>
<img src="images1.0/metricsdef.png" alt="Metrics screenshot"/></br>
<p>For metric calculation expressions, all supported languages capable of producing a numeric value can be used. If Java language is used in order to handle more complex evaluation logic, corresponding java operation skeleton is generated and the user is responsible for providing the custom code and marking as not generated code which needs to be preserved.</p>
<img src="images1.0/javarule_impl.png" alt="Java implementation screenshot"/>
</td>
</tr>
<tr>
<td align="right" valign="top" width="10%">
<b>Tooling - UI</b>
</td>
<td align="left" valign="top" width="70%">
<i>Dashboard</i><br/><br/>
<p>Dedicated view depicts all steps one should go through to generate a plug-in with diagram. Handy links to appropriate tools and wizards should make it simple.</p>
<img src="images1.0/dashboard.png" alt="Dashboard view screenshot"/><br/>
<i>Cheatsheets</i><br/><br/>
<p>Don't want to read tutorial and then start with frightenly empty workspace? Utilize the provided cheat sheet to guide you through the whole tutorial right in your workspace.</p>
<i>Jumpstart Wizards</i><br/><br/>
<p>GMF Tooling comes with few provisional wizards to facilitate getting started with definition models from a selected domain model.</p>
<p><img src="images1.0/gmfwizards.png" alt="Wizards available with GMF"/></p>
</td>
</tr>
<tr>
<td align="right" valign="top" width="10%">
<b>Tooling - Validation</b>
</td>
<td align="left" valign="top" width="70%">
<i>OCL constraints for GMFMap and GMFGen</i><br/><br/>
<p>GMF Tooling employs EMF Validation framework and provides sophisticated validator implementation that evaluates constraints defined as meta-model annotation. OCL is supported in these constraint definitions. GMF defines and validates constraints for GMFGen and GMFMap models only, though the validator can be used with any model.</p>
</td>
</tr>
<tr>
<td align="right" valign="top" width="10%">
<b>Bootstrap and samples</b>
</td>
<td align="left" valign="top" width="70%">
<i>ECore diagram (part of Callisto and Examples distribution)</i><br/><br/>
<p>Diagramming functionality for Ecore domain was generated and included in GMF distributions. It is possible to initialize ECore diagram using any existing .ecore file and continue editing meta-model using GMF diagramming functionality. See screenshot <a href="#ecore-diagram">above</a></p>
<i>GMFGraph WYSIWYG editor (SDK-experimental)</i><br/><br/>
<p><img src="images1.0/gmfgrapheditor.png" alt="GMFGraph WYSIWYG diagram"/></p>
<i>TaiPan</i><br/><br/>
<p>Simple and easy to start example, illustrating most of the GMF features. Take 3 related projects (model, emf.edit and generated diagram) from CVS: <br/><tt>:pserver:anonymous@dev.eclipse.org/cvsroot/modeling, org.eclipse.gmf/examples/org.eclipse.gmf.examples.taipan*</tt></p>
</td>
</tr>
<tr>
<td align="right" valign="top" width="10%">
<b>GMFGraph</b>
</td>
<td align="left" valign="top" width="70%">
<i>Standalone figures plug-in</i><br/><br/>
<p>To create standalone plug-in with figures, either use New Plug-in template or context menu</p>
<p><img src="images1.0/gmfgraph_standalone_wizard.png" alt="Plugin template wizard"/></p>
<p><img src="images1.0/gmfgraph_standalone_context.png" alt="Context menu for .gmfgraph"/></p>
<i>Using legacy/existing complex code with CustomFigure</i><br/><br/>
<p>GEF has been around for quite a while, and surely there are a lot of graphical figures already coded. It's easy to use them within GMF's graphical definition (GMFGraph) - just put fully-qualified class name of the figure into CustomFigure, and id of the figure's plug-in into CustomFigure's owning FigureGallery. It's advisable to define single FigureGallery per figure plug-in, holding/describing all the figures in that plug-in. Then, it's easy to reference these figures from any .gmfgraph model</p>
<i>Composite figures</i><br/><br/>
<p><img src="images1.0/gmfgraph_layouts.png" alt="Layout use in GMFGraph"/><br/>Layouts to support composite figure creation</p>
</td>
</tr>
<tr>
<td align="right" valign="top" width="10%">
<b>GMF GenModel (.gmfgen)</b>
</td>
<td align="left" valign="top" width="70%">
<i>Overridable/extensible templates</i><br/><br/>
<p>Like with EMF, one could put his own templates into separate folder, and generator will use them to generate diagram code. Unlike EMF, GMF doesn't support partial overriding of templates.</p>
<i>Reconcile</i><br/><br/>
<p>GenModel specifies attributes that are essential for code generation (like plug-in id, name, packages, etc) and though GenModel might get changed while refining your diagram definition, such properties are rarely changed once set. Thus, GMF preserves attributes of GenModel between GMFMap->GMFGen transformations (for full list of properties being reconciled see our Wiki pages)</p>
</td>
</tr>
<tr>
<td align="right" valign="top" width="10%">
<b>EMFT</b>
</td>
<td align="left" valign="top" width="70%">
<i>Transaction API in use</i><br/><br/>
<p>Diagram changes often involve a lot of commands to be executed. Transaction API makes managing all these easy.</p>
<i>OCL validation</i><br/><br/>
<p>GMF Tooling utilized OCL support provided by EMFT. See <a href="#validation">Audits, Metrics and Validation</a> topic for more details</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
EOHTML;
# Generate the web page
$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>