//////////////////////////////////////////
* Copyright (c) 2015, 2016 Eclipse Foundation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*    Wayne Beaton (Eclipse Foundation)- initial API and implementation
*    Cedric Brun (Obeo) 
//////////////////////////////////////////

[[modeling]]
== Modeling

=== Code Generation

http://www.eclipse.org/acceleo[Acceleo] introduced a new mechanism to launch code generators as part of a Maven build which is way easier and more robust by integrating with Tycho.

image::images/acceleo-launcher.png[]

You will find several examples in https://github.com/cbrun/acceleo-launcher-examples/[this repository] ranging from launchging an UML to `C` code generation to exporting a Modeling project as a website.


=== Model Editors

==== Amalgam

The http://www.eclipse.org/modeling/amalgam[Amalgam] project brings a new view to navigate and explore models. Ecore models are supported right away and the view can be extended to support your domain specific models.

image::images/amalgam-explorer.png[]

==== EcoreTools

When using the Ecore graphical modeler references might now be displayed directly within the class shapes if it's target is not in the diagram.

image::images/ecoretools-refnodes.png[]


Inherited references will also be displayed if the super types are not in the diagram.

image::images/ecoretools-inheritedcontent.png[]


=== Model Comparison

The Neon release brings experimental support for comparing diagrams of http://www.eclipse.org/sirius[Sirius] based modelers.

image::images/compare-sirius-family.png[]

  
With a right-click on a model element or resource in the viewer, a new context menu now offers you to merge all _non-conflicting_ differences that are _contained_ in the selected model element or resource with one click.
With local models (both writable):

image::images/compare-local.png[]

With a read-only side (for example when using EGit):

image::images/compare-readonly.png[]

Each button now has a specific tooltip for each case depending on the selected element. It will display the best information depending on the context: which object will be affected by the merge action, and which side will be modified (or not) by the action.

image::images/compare-context-tooltips.png[]

=== Custom Graphical Editors

With the new version of http://www.eclipse.org/sirius[Sirius] you can now define rich property views alongside the diagram definition without having to write a line of code.
This capability is introduced as an experimental feature for Neon and will be extended in the next months based on the user community feedback.

image::images/sirius-properties.png[]


Packs of SVG shapes can now be contributed through a plugin to be reused in other modelers:

image::images/svg-stencils.png[]

image::images/svg-stencils-pick.gif[]

SVG rendering has been improved and is now pixel-perfect https://bugs.eclipse.org/bugs/show_bug.cgi?id=442268[whatever the zoom level].

Before:

image::images/svg-render-before.png[]

With Sirius 4.0:

image::images/svg-render-after.png[]

It is now possible to define dash edge styles for both the nodes and the containers (like it was already possible for edges).

image::images/sirius-border-styles.png[]

And the border node position relative to its parent can now be constrained on a specific side (NORTH, EAST, WEST or SOUTH).

image::images/bordernodeposition.png[]

The "Link with editor" button has been improved and is now bidirectional.

image::images/bidi-link.gif[]

You now have the possibility to configure which elements to automatically select after a tool execution, using this it is possible to streamline the user experience 
by making sure that it is always possible to directly type right after the application of the tool. 

image::images/elements-to-select.png[]

The labels which are attached to an edge are now staying closer to it during a user modification.

image::images/edge-stability.gif[]

A new mechanism is introduced to externalize the messages in a `.odesign` model.

image::images/i18n.png[]

