blob: 5949410ae43020845dcdd35dae83a425e588344b [file] [log] [blame]
h1. Release Notes for Sirius
{toc:style=disc|minLevel=2|maxLevel=3}
This document contains the release notes for recent major releases of Sirius. See also "the release notes from previous versions":Release_Notes_Previous.html for details about older releases.
h2(#sirius3.1.0). Changes in Sirius 3.1.0
h3. User-Visible Changes
* <span class="label label-success">Added</span> A new feature allows to snap to all shapes (instead of just to snap to brother shapes). The <kdb>F4</kdb> shortcut key activates this mode when you resize a node, move a node or move a bendpoint of edge, see "documentation":./user/diagrams/Diagrams.html#snap_to_shapes for details.
* <span class="label label-success">Added</span> A new feature allows to move the edge group (Edge, Label, Border Nodes) if the <kdb>F3</kdb> shortcut is pressed during the edge moving/draging. This feature is only available for the case of edges with border node as source and target. See "documentation":./user/diagrams/Diagrams.html#move_edge_group for more details.
* <span class="label label-success">Added</span> The label of edges now stays as much as possible near the edge when it is moved.
Sample before Sirius 3.1:
!images/edgeLabelMoveBeforeSirius3.1.gif!
Same sample since Sirius 3.1:
!images/edgeLabelMoveAfterSirius3.1.gif!
* <span class="label label-info">Modified</span> The _Snap to Grid_ and _Snap to Shapes_ are now automatically disabled on Sequence diagrams. As indicated in the user documentation, to work correctly, Sirius sequence diagrams must have a tight control on where the graphical elements are placed on the diagram and on their synchronization with the underlying semantic model. see "documentation":./user/sequences/Sequence%20Diagrams.html#introduction for details. Previously, the user has to explicitely disable the snap features.
* <span class="label label-info">Modified</span> The Link with Editor behavior has changed. The link with editor was previously unidirectional from the Common Navigator (Model Explorer view or Project view) toward the active representation. By now, when selecting one or several elements in the representation, the corresponding semantic elements are selected in the Common Navigator.
* <span class="label label-info">Modified</span> The "Arrange Linked Bordered Nodes" tabbar action has been renamed to "Arrange Linked Border Nodes" as it is border nodes which are layouted and not bordered nodes.
h3. Specifier-Visible Changes
* <span class="label label-info">Modified</span> You have now really the capability to set the @BorderSizeComputationExpression@ as 0 for style of @ContainerMapping@. Before Sirius 3.1.0, a size of 0 is interpreted as 1 at runtime. For compatibility reason, all existing @BorderSizeComputationExpression@ equals to 0 for style of @ContainerMapping@ are automatically set to 1 (ditto for results of this expression in representations file for container elements). For @ContainerMapping@, the default value of @BorderSizeComputationExpression@ for new style is now 1, except for _Worskpace Image_ where the value is 0.
* <span class="label label-info">Modified</span> The support for containers with vertical or horizontal _compartments_ on diagrams was introduced in Sirius 3.0.0 as an experimental feature. Several improvements and corrections have been done around the behaviors of this feature which is now ready to have its experimental state removed. Validation rules and tooltips in the VSM editor are here to help the specifier create a consistent mapping structure.
* <span class="label label-info">Modified</span> <span class="label label-info">Experimental</span> New, experimental support for recursive _compartments_ on diagrams: the _children presentation_ property of a _Container Mapping_, which is defined as a _compartment_ (its parent _ContainerMapping_ has a _VerticalStack_ or _HorizontalStack_ _children presentation_), can now also be set to _Vertical Stack_ and _Horizontal Stack_. It allows to define complex stacks of _compartments_ mixing both stack directions. While working reliably, this support is marked experimental in Sirius 3.1.0 as there are still some behaviors which do not behave as expected. If you make use of this feature, be aware that some details may still change in future releases, including 3.1.x maintenance releases.
* <span class="label label-info">Modified</span> The _Acceleo Query Language_ (AQL) interpreter has been improved. It will now be able to display warnings and errors in the Interpreter view. The message displayed in the Interpreter view after an evaluation has also been improved to display the qualified name of the type of the value computed (ePackageName::eClassName). The improvements realized can be viewed by clicking on the image below.
!images/improvedsiriusinterpreter_thumbnail.png!:images/improvedsiriusinterpreter.png
h3. Developer-Visible Changes
h4. Partial support for internationalization
Sirius 3.1 introduces partial support for internationalization: all literal strings from the runtime part of Sirius are now externalized and can be localized by third parties by providing the appropriate "language packs" as OSGi fragments. Note that this does not concern the VSM editor's UI, the VSMs themselves, or the parts of the UI inherited from Eclipse/EMF/GEF/GMF and other libraries and frameworks used by Sirius.
Some API changes were required to enable this. While technically breaking changes if interpreting strictly the OSGi versioning rules, the major version number of the impacted bundles was not incremented as the changes only concern classes that should not impact the vast majority of users. Most breaking changes concern the plug-in/activator classes from each bundle. They are:
* <span class="label label-success">Added</span>@org.eclipse.sirius.diagram.layoutdata.LayoutDataPlugin@, a subclass of @org.eclipse.emf.common.EMFPlugin@ has been added. The corresponding OSGi bundle activator is the internal class @LayoutDataPlugin.Implementation@.
* <span class="label label-success">Added</span>@org.eclipse.sirius.diagram.sequence.SequenceDiagramPlugin@, a subclass of @org.eclipse.emf.common.EMFPlugin@ has been added. The corresponding OSGi bundle activator is the internal class @SequenceDiagramPlugin.Implementation@.
* <span class="label label-success">Added</span>@org.eclipse.sirius.common.xtext.internal.XtextIntegrationPlugin@, a subclass of @org.eclipse.emf.common.EMFPlugin@ has been added. The corresponding OSGi bundle activator is the internal class @XtextIntegrationPlugin.Implementation@.
* <span class="label label-success">Added</span> @org.eclipse.sirius.ext.base.BasePlugin@, a subclass of @org.eclipse.emf.common.EMFPlugin@ has been added. The corresponding OSGi bundle activator is the internal class @BasePlugin.Implementation@.
* <span class="label label-success">Added</span> @org.eclipse.sirius.ext.draw2d.Draw2DExtPlugin@, a subclass of @org.eclipse.emf.common.EMFPlugin@ has been added. The corresponding OSGi bundle activator is the internal class @Draw2DExtPlugin.Implementation@.
* <span class="label label-success">Added</span> @org.eclipse.sirius.ext.e3.ui.Eclipse3UIExtPlugin@, a subclass of @org.eclipse.emf.common.EMFPlugin@ has been added. The corresponding OSGi bundle activator is the internal class @Eclipse3UIExtPlugin.Implementation@.
* <span class="label label-success">Added</span> @org.eclipse.sirius.ext.emf.EMFExtPlugin@, a subclass of @org.eclipse.emf.common.EMFPlugin@ has been added. The corresponding OSGi bundle activator is the internal class @EMFExtPlugin.Implementation@.
* <span class="label label-success">Added</span> @org.eclipse.sirius.synchronizer.internal.SynchronizerPlugin@, a subclass of @org.eclipse.emf.common.EMFPlugin@ has been added. The corresponding OSGi bundle activator is the internal class @SynchronizerPlugin.Implementation@.
* <span class="label label-success">Added</span> @org.eclipse.sirius.tree.tools.internal.TreePlugin@, a subclass of @org.eclipse.emf.common.EMFPlugin@ has been added. The corresponding OSGi bundle activator is the internal class @TreePlugin.Implementation@.
* <span class="label label-info">Modified</span> @org.eclipse.sirius.common.acceleo.mtl.ide.AcceleoMTLInterpreterIDEPlugin@ is no longer an OSGi @BundleActivator@, and instead extends @org.eclipse.emf.common.EMFPlugin@. The actual bundle activator is the new internal class @AcceleoMTLInterpreterIDEPlugin.Implementation@.
* <span class="label label-info">Modified</span> @org.eclipse.sirius.common.acceleo.mtl.ide.AcceleoMTLInterpreterPlugin@ is no longer an OSGi @BundleActivator@, and instead extends @org.eclipse.emf.common.EMFPlugin@. The actual bundle activator is the new internal class @AcceleoMTLInterpreterPlugin.Implementation@.
* <span class="label label-info">Modified</span> @org.eclipse.sirius.common.ocl.DslOclPlugin@ is no longer a @org.eclipse.core.runtime.Plugin@ (nor an OSGi @BundleActivator@), and instead extends @org.eclipse.emf.common.EMFPlugin@. The actual bundle activator is the new internal class @DslOclPlugin.Implementation@.
* <span class="label label-info">Modified</span> @org.eclipse.sirius.common.tools.DslCommonPlugin@ is no longer a @org.eclipse.core.runtime.Plugin@ (nor an OSGi @BundleActivator@), and instead extends @org.eclipse.emf.common.EMFPlugin@. The actual bundle activator is the new internal class @DslCommonPlugin.Implementation@.
* <span class="label label-info">Modified</span> @org.eclipse.sirius.diagram.DiagramPlugin@ is no longer a @org.eclipse.core.runtime.Plugin@ (nor an OSGi @BundleActivator@), and instead extends @org.eclipse.emf.common.EMFPlugin@. The actual bundle activator is the new internal class @DiagramPlugin.Implementation@.
* <span class="label label-info">Modified</span> @org.eclipse.sirius.ecore.extender.business.internal.ExtenderPlugin@ is no longer a @org.eclipse.core.runtime.Plugin@ (nor an OSGi @BundleActivator@), and instead extends @org.eclipse.emf.common.EMFPlugin@. The actual bundle activator is the new internal class @ExtenderPlugin.Implementation@.
* <span class="label label-info">Modified</span> @org.eclipse.sirius.table.tools.internal.TablePlugin@ is no longer a @org.eclipse.core.runtime.Plugin@ (nor an OSGi @BundleActivator@), and instead extends @org.eclipse.emf.common.EMFPlugin@. The actual bundle activator is the new internal class @TablePlugin.Implementation@.
* <span class="label label-info">Renamed, Modified</span> @org.eclipse.sirius.eef.adapters.Activator@ has been renamed into @org.eclipse.sirius.eef.adapters.EEFAdapterPlugin@ and is no longer an OSGi bundle activator (hence the name change, to avoid confusion). Instead it extends @org.eclipse.emf.common.EMFPlugin@. The actual bundle activator is the new internal class @EEFAdapterPlugin.Implementation@.
* <span class="label label-info">Renamed, Modified</span> @org.eclipse.sirius.common.acceleo.interpreter.Activator@ has been renamed into @org.eclipse.sirius.common.acceleo.interpreter.InterpreterViewPlugin@ and is no longer an OSGi bundle activator (hence the name change, to avoid confusion). Instead it extends @org.eclipse.emf.common.EMFPlugin@. The actual bundle activator is the new internal class @InterpreterViewPlugin.Implementation@.
* <span class="label label-info">Renamed, Modified</span> @org.eclipse.sirius.table.ui.ext.Activator@ has been renamed into @org.eclipse.sirius.table.ui.ext.TableUIExtPlugin@ and is no longer an OSGi bundle activator (hence the name change, to avoid confusion). Instead it extends @org.eclipse.emf.common.EMFPlugin@. The actual bundle activator is the new internal class @TableUIExtPlugin.Implementation@.
* <span class="label label-info">Renamed, Modified</span> @org.eclipse.sirius.ui.ext.Activator@ has been renamed into @org.eclipse.sirius.ui.ext.SiriusUIExtPlugin@ and is no longer an OSGi bundle activator (hence the name change, to avoid confusion). Instead it extends @org.eclipse.emf.common.EMFPlugin@. The actual bundle activator is the new internal class @SiriusUIExtPlugin.Implementation@.
* <span class="label label-info">Renamed, Modified</span> @org.eclipse.sirius.tree.ui.ext.Activator@ has been renamed into @org.eclipse.sirius.tree.ui.ext.TreeUIExtPlugin@ and is no longer an OSGi bundle activator (hence the name change, to avoid confusion). Instead it extends @org.eclipse.emf.common.EMFPlugin@. The actual bundle activator is the new internal class @TreeUIExtPlugin.Implementation@.
* <span class="label label-info">Renamed</span> @org.eclipse.sirius.diagram.sequence.ui.SequenceDiagramPlugin@ has been renamed into @org.eclipse.sirius.diagram.sequence.ui.SequenceDiagramUIPlugin@ for consistency and to avoid potential name clashes with the new @org.eclipse.sirius.diagram.sequence.SequenceDiagramPlugin@.
Additional non-breaking changes:
* <span class="label label-success">Added</span> @org.eclipse.sirius.ext.base.I18N@ has been added. It provides common utility code to support internationalization.
* <span class="label label-success">Added</span> The translation keys (and default values) have been added to all the concerned bundles, in their @plugin.properties@ file. These (translated) messages are available at runtime as static fields of new @Messages@ classes, added to all concerned bundles (always in the same package as their plug-in/activator class). The concerned bundles are:
** @org.eclipse.sirius.ext.base@
** @org.eclipse.sirius.ecore.extender@
** @org.eclipse.sirius.synchronizer@
** @org.eclipse.sirius.common@
** @org.eclipse.sirius.common.acceleo.aql@
** @org.eclipse.sirius.common.acceleo.aql.ide@
** @org.eclipse.sirius.common.acceleo.mtl@
** @org.eclipse.sirius.common.acceleo.mtl.ide@
** @org.eclipse.sirius.common.ui@
** @org.eclipse.sirius.eef.adapters@
** @org.eclipse.sirius.interpreter@
** @org.eclipse.sirius.tree@
** @org.eclipse.sirius.tree.ui@
h4. Changes in @org.eclipse.sirius.common@
* <span class="label label-success">Added</span> The new interface @org.eclipse.sirius.common.tools.api.interpreter.IInterpreterWithDiagnostic@ has been added. It allows an interpreter to evaluate an expression and return not only the result of the evaluation but also a diagnostic.
* <span class="label label-success">Added</span> The new class @org.eclipse.sirius.common.tools.api.contentassist.ContentProposalWithReplacement@ has been added. It allows interpreters to provide proposals for the code completion which can replace an existing part of the expression used. This behavior can be used if the user has started to type a value that would be returned by the code completion. For example, if the user types "aql:self.na" and if he selects the content proposal "name", it can replace the existing part of the expression "na" to write "aql:self.name" instead of just appending "name" to create "aql:self.naname".
* <span class="label label-success">Added</span> The new class @org.eclipse.sirius.common.tools.api.contentassist.ContentProposalBuilder@ used to build the content proposals with their various parameters more easily.
h4. Changes in @org.eclipse.sirius.ext.gef@
* <span class="label label-success">Added</span> The new class @org.eclipse.sirius.ext.gef.query.EditPartQuery@ has been added. It allows to retrieve all children of the current part.
h4. Changes in @org.eclipse.sirius.ext.gmf.runtime@
* <span class="label label-success">Added</span> 2 new @getIntersection@ methods have been added in org.eclipse.sirius.ext.gmf.runtime.editparts.GraphicalHelper. They are similar to the existing @getIntersection@ methods, but they consider the nearest point on the figure if there is no intersection.
h4. Changes in @org.eclipse.sirius@
* <span class="label label-success">Added</span> The method @addEvaluateSelectionExpressionTask@ has been added in class @org.eclipse.sirius.tools.api.command.AbstractCommandFactory@ to allow selection after tool execution.
* <span class="label label-success">Added</span> The class @org.eclipse.sirius.common.tools.api.interpreter.StandardServices@ has been added. This class owns methods used for service: interpreter.
* <span class="label label-info">Modified</span> @org.eclipse.sirius.ecore.extender.business.api.permission.IPermissionAuthority.canDeleteInstance(EObject)@ when called for an object will not be called for children of this object as we know it will return true because if we can delete a parent object we can delete its children.
* <span class="label label-info">Modified</span> @org.eclipse.sirius.tools.api.command.DCommand@ no more inherits of @IUndoableCommand@ because useless since undo/redo is managed by EMF Transaction.
* <span class="label label-danger">Removed</span> @org.eclipse.sirius.business.api.helper.task.ICommandTask.undo()/redo()@ methods removed because they are useless since undo/redo is managed by EMF Transaction.
* <span class="label label-danger">Removed</span> @org.eclipse.sirius.tools.api.command.IUndoableCommand@ interface removed because it is useless since undo/redo is managed by EMF Transaction.
h4. Changes in @org.eclipse.sirius.common@
* <span class="label label-success">Added</span> The method @invokeMethod@ has been added in class @org.eclipse.sirius.common.tools.api.util.ReflectionHelper@ to call a private method. Warning: This method must be used carefully.
* <span class="label label-success">Added</span> The method @invokeMethodWithoutException@ has been added in class @org.eclipse.sirius.common.tools.api.util.ReflectionHelper@ to call a private method. This method returns true (and not the result of the method) if it is called without exception. It returns false otherwise. Warning: This method must be used carefully.
h4. Changes in @org.eclipse.sirius.ui@
* <span class="label label-success">Added</span> @org.eclipse.sirius.ui.business.api.session.SessionEditorInput.getInput()@ method has been added to get the real input for a @DRepresentation@.
* <span class="label label-success">Added</span> @org.eclipse.sirius.ui.business.api.session.SessionEditorInput.getSession(boolean)@ method has been added to let the caller choose to create and open a new @Session@ or not when the known session is closed or does not exist. The @getSession@ method calls getSession(true).
* <span class="label label-warning">Deprecated</span> @org.eclipse.sirius.ui.business.api.session.SessionEditorInput.dispose()@ method has been deprecated as a @IEditorInput@ can be reused by several instances of @IEditorPart@ through the navigation history view.
* <span class="label label-success">Added</span> @org.eclipse.sirius.ui.business.api.dialect.DialectUIServices.selectAndReveal(DialectEditor, List<DRepresentationElement>)@ method has been added to explicitly indicate to reveal elements out of the screen (hidden because of the scrollbars location) when selecting them.
h4. Changes in @org.eclipse.sirius.diagram.ui@
* <span class="label label-success">Added</span> The class @org.eclipse.sirius.diagram.ui.graphical.edit.policies.RegionRegionContainerResizableEditPolicy@ has been added to handle @DNodeContainer@ which are both @Region@ and @RegionContainer@: during resize they might have to propagate the resize to their children and/or parents.
* <span class="label label-success">Added</span> @org.eclipse.sirius.diagram.ui.edit.api.part.IDiagramNodeEditPart/IDiagramBorderNodeEditPart.getNodeLabel()@ methods has been moved up to @org.eclipse.sirius.diagram.ui.edit.api.part.IAbstractDiagramNodeEditPart.getNodeLabel()@ as both @IDiagramNodeEditPart@ and @IDiagramBorderNodeEditPart@ inherits of @IAbstractDiagramNodeEditPart@.
* <span class="label label-success">Added</span> @org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds.ARRANGE_BORDER_NODES@ added to replace @org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds.ARRANGE_BORDERED_NODES_TOOLBAR@ which is deprecated
* <span class="label label-success">Added</span> @org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds.ARRANGE_BORDER_NODES_TOOLBAR@ added to replace @org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds.ARRANGE_BORDERED_NODES@ which is deprecated
* <span class="label label-success">Added</span> @org.eclipse.sirius.diagram.ui.graphical.edit.policies.SetConnectionBendpointsAndLabelCommmand@ is a new class that allows to update edge label when updating bendpoints. Several existing Sirius commands now extends this new class.
* <span class="label label-warning">Deprecated</span> @org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds.ARRANGE_BORDERED_NODES@ deprecated in favor @org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds.ARRANGE_BORDER_NODES@ as it is an action id about border nodes layout.
* <span class="label label-warning">Deprecated</span> @org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds.ARRANGE_BORDERED_NODES_TOOLBAR@ deprecated in favor @org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds.ARRANGE_BORDER_NODES_TOOLBAR@ as it is an action id about border nodes layout.
* <span class="label label-danger">Removed</span> @org.eclipse.sirius.diagram.ui.graphical.edit.policies.EdgeCreationEditPolicy@ has been removed as it should not be in API and has been replaced by internal @org.eclipse.sirius.diagram.ui.internal.edit.policies.SiriusConnectionEditPolicy@.
* <span class="label label-danger">Removed</span> The method @setUseLocalCoordinates(boolean)@ has been removed from @org.eclipse.sirius.diagram.ui.tools.api.figure.GradientRoundedRectangle@, @org.eclipse.sirius.diagram.ui.tools.api.figure.ViewNodeContainerParallelogram@, @org.eclipse.sirius.diagram.ui.tools.api.figure.ViewNodeContainerRectangleFigureDesc@ as it was generated by GMF tooling and never used in Sirius whose edit parts and edit policies expect @org.eclipse.draw2d.IFigure.useLocalCoordinates()@ to always return false for its figures.
h4. Changes in @org.eclipse.sirius.tests.support@
* <span class="label label-success">Added</span> The class @org.eclipse.sirius.tests.support.api.AbstractToolDescriptionTestCase@ has been created. It contains utility methods about tools.
* <span class="label label-info">Modified</span> The class @org.eclipse.sirius.tests.support.api.SiriusDiagramTestCase@ has been modified
** It inherits from @AbstractToolDescriptionTestCase@
** The method @applyContainerCreationTool(String,DDiagram,EObject)@ has been added.
** The method @applyGenericTool(String,DDiagram,EObject)@ has been added.
h4. Changes in @org.eclipse.sirius.tests.swtbot.support@
* <span class="label label-success">Added</span> The methods @closePerspective(String)@, @closeSiriusPerspective()@ and @closeModelingPerspective()@ have been added in class @org.eclipse.sirius.tests.swtbot.support.api.perspective.DesignerPerspectives@ to allow the closing of perspectives.
* <span class="label label-success">Added</span> The @org.eclipse.sirius.tests.swtbot.support.api.condition.PerspectiveActivatedCondition@ new offers the capability to inverse the test. This condition becomes a DeactivatedCondition instead of an ActivatedCondition by using the new constructor with inverse parameter.
* <span class="label label-success">Added</span> The methods @isSnapToShape@ and @isSnapToGrid()@ have been added in class @org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor@. They allow to know the state of the corresponding properties.
* <span class="label label-success">Added</span> The method @org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor.dragWithKey(int, int, int, int, int)@, and so @SWTBotSiriusGefViewer.dragWithKey@ and @SWTBotSiriusFigureCanvas.mouseDragWithKey@), has an additional parameter, compared to @drag(int, int, int, int)@ method, to precise the key code to press during the drag'n'drop. It is possible to call this method with SWT.None to retrieve the standard behavior of @drag@ method. This method also has a correct behavior for the move of bendpoints of edges.
* <span class="label label-success">Added</span> @org.eclipse.sirius.tests.swtbot.support.api.condition.TopCondition@: New condition to wait that top of the edit part is on the expected location.
* <span class="label label-success">Added</span> @org.eclipse.sirius.tests.swtbot.support.api.condition.BendpointLocationCondition@: New condition to wait that a bendpoint is on the expected x or y location.
h2(#sirius3.0.0). Changes in Sirius 3.0.0
h3. User-Visible Changes
* <span class="label label-success">Added</span> The ability to print table representations has been re-introduced.
* <span class="label label-success">Added</span> The quick outline feature has been added for tree and table editors, see documentation for details.
* <span class="label label-success">Added</span> The label of a list or container can now be hidden by the user from the outline, the tabbar or the contextual menu.
* <span class="label label-success">Added</span> In the _Appearance_ tab, in addition to _Bold_ and _Italic_, it is now possible to set the font formatting style to _Underline_ and _Strike through_ (or any combination of these).
* <span class="label label-success">Added</span> Container elements on diagrams now support vertical and horizontal compartments layout (this is only visible if the modeler configuration makes use of this new feature).
* <span class="label label-success">Added</span> In table and tree editors, a _Refresh_ can now be launched by hitting <kbd>F5</kbd> like in diagrams (previously the only way was to click on the _Refresh_ icon or menu item).
* <span class="label label-success">Added</span> In table editors, hitting the <kdb>Del</kdb> key is now equivalent to selecting _Delete Line_ in the context menu.
* <span class="label label-success">Added</span> On diagrams, it is now possible to set a custom background image on list containers.
* <span class="label label-info">Modified</span> In the _Viewpoint Selection_ dialog and wizard page, the "plug-in" decorator for viewpoints loaded from plug-ins is removed, and a "Folder" decorator for viewpoints loaded from the current workspace has been added. This makes the icons more visible in the most common where viewpoints come from installed plug-ins.
h3. Specifier-Visible Changes
* <span class="label label-success">Added</span> <span class="label label-info">Experimental</span> Optional support for the experimental _Acceleo Query Language_ (AQL) has been added to write interpreted expressions. It is provided by the @org.eclipse.sirius.common.acceleo.aql@ (required for evaluating the expressions) and @org.eclipse.sirius.common.acceleo.aql.ide@ (optional, only needed to provide specification-time features like expression completion) plug-ins. AQL is similar to Acceleo 3/MTL, but simpler and provides much better performance in the Sirius context. If you make use of this feature, be aware that some details may still change in future releases, including 3.0.x maintenance releases. See "the AQL documentation":https://www.eclipse.org/acceleo/documentation/aql.html for more details on the language itself.
* <span class="label label-success">Added</span> <span class="label label-info">Experimental</span> New, experimental support for containers with vertical or horizontal _compartments_ on diagrams: the _children presentation_ property of a _Container Mapping_ has two new values: _Vertical Stack_ and _Horizontal Stack_. They indicate that a container will present its children containers as a vertical/horizontal stack of compartments. While working reliably, this support is marked experimental in Sirius 3.0.0 as there are still some combinations of mappings, styles and behaviors which do not behave as expected. If you make use of this feature, be aware that some details may still change in future releases, including 3.0.x maintenance releases.
* <span class="label label-success">Added</span> Everywhere an image path can be configured in the VSM, a new button is present on the right of the text field. It opens a dialog to select an image, either from the workspace or from an installed plug-in.
* <span class="label label-success">Added</span> Everywhere an interpreted expression can be configured in the VSM, a new button is present on the right of the text field. It opens a multi-line dialog to edit long expression more easily. Auto-completion is supported inside the multi-line dialog.
* <span class="label label-success">Added</span> Compressed SVG images (@*.svgz@) are now supported everywhere normal SVG images were supported.
* <span class="label label-success">Added</span> When developing a modeler in "live mode", with the VSM in the same workspace as the sample session(s) which use it, VSM expressions which use @service:@ or @aql:@ can now invoke Java services which are defined in the workspace (with no need to launch a separate runtime).
* <span class="label label-success">Added</span> A quick outline is now accessible in the VSM editor by using the shortcut <kbd>Ctrl+o</kbd>. It supports filtering on both an element's name and properties for quick, keyboard-only navigation in complex VSMs.
* <span class="label label-success">Added</span> The "hide label by default capability" has been added to the container styles.
* <span class="label label-success">Added</span> In addition to _Bold_ and _Italic_, _Underline_ and _Strike Through_ styles have been added on the label font format.
* <span class="label label-success">Improved</span> Many VSM elements which are required are now created automatically. For example the default layer of a _Diagram Description_ is automatically added to new _Diagram Descriptions_.
* <span class="label label-success">Improved</span> Some default values have been modified to better reflect actual usage. This does not impact existing VSM and only applies to newly created elements.
** The label position on a _Node_ mapping is now _node_ by default (instead of _border_ before).
** The _Arc Width_ and _Arc Height_ are now 10 by default (instead of 1 before).
** The _Enable popup bars_ is now set by default on new diagrams.
** No default value for interpreted expressions use the Acceleo 3 / MTL syntax anymore, but only use the core @var:@ and @feature:@ interpreters, which are always present.
* <span class="label label-success">Improved</span> The precision of the VSM validation, especially regarding the typing of computed expressions, has been greatly improved. Other validation rules like static image paths have also been added or improved.
* <span class="label label-info">Modified</span> In the VSM editor, the context menu entries (categories and items) have been reorganized to put most common actions/items first.
* <span class="label label-info">Modified</span> In diagrams, the style previously named "Lozenge" is now called "Diamond".
* <span class="label label-info">Modified</span> In the _Open_ menu on a representation, the menu is computed from the navigation tool's label instead of its name/id.
* <span class="label label-info">Modified</span> All Acceleo 3 references have been removed from the Sirius metamodels to avoid a dependency to Acceleo 3. An automatic migration has been added during the loading of the VSM to avoid a change of behavior. This migration adds explicitly the old default value (@[eContents()->size()/]@) in the VSM, that was implicit before. Customers who want to completely remove this dependency must remove the Acceleo 3 expressions from there VSM after the migration.
* <span class="label label-info">Modified</span> The default icons paths of _Selection Wizard_ and _Pane-Based Selection Wizard_ used to reference invalid icons, so the corresponding tools had no icon per default in the palette. The default icons paths have been corrected to reference the icons displayed for those elements in the VSM editor.
* <span class="label label-info">Modified</span> "@*@" can now be used as feature name of a table's _Feature Column_ to skip the feature name validation during the cell creation. This allow to compute the label of cells for lines whose semantic element types have no common _EStructuralFeature_ (inherited or with same name).
h3. Developer-Visible Changes
The most important and impacting changes in this release are (details below in plug-in specific sections):
* <span class="label label-success">Added</span> The new extension point @org.eclipse.sirius.ui.siriuspropertiescelleditor@, defined in @org.eclipse.sirius.ui@, can be used to provide customized cell editors for semantic element's properties as shown in the properties view on a Sirius representation.
* <span class="label label-success">Added</span> The new class @org.eclipse.sirius.eef.components.SiriusAwarePropertiesEditingComponent@ can be used as root class of the generated EEF components to greatly improve performances when using both EEF properties views with Sirius representations.
* <span class="label label-info">Modified</span> The minimum version of EEF required for using @org.eclipse.sirius.eef.adapters@ is now 1.5.0 (from 1.2 before). EEF 1.5 is source and binary-compatible with EEF 1.2 to 1.4, and no re-generation of the EEF views should be needed to switch to 1.5.
* <span class="label label-info">Modified</span> The @org.eclipse.sirius.business.internal.session.IsModifiedSavingPolicy@ saving policy, introduced in Sirius 2.0.0 but not enabled at that time is now the default. The previous implementation, @org.eclipse.sirius.business.api.session.SavingPolicyImpl@ is still available if needed.
* <span class="label label-info">Modified</span> All metamodels defined by Sirius have been modified to use EMF's @MinimalEObjectImpl.Container@ as base class, which reduces memory consumption compared to previous versions.
* <span class="label label-info">Modified</span> The @RGBValues@ type used in Sirius to represent colors has been converted into an immutable EMF EDataType, which also reduces memory consumption compared to previous versions.
* <span class="label label-info">Modified</span> The @AirdResourceImpl@ type, use for the @*.aird@ resources, no longer inherits from GMF's @GMFResource@ or depend on GMF in any way. This makes the @org.eclipse.sirius@ now completely independent on GMF.
* <span class="label label-info">Modified</span> The @DAnalsysis.models@ reference has been replaced by the @DAnalsysis.semanticModels@ attribute, in conjunction with the new @ResourceDescriptor@ data-type. The @DAnalysis.getModels()@ Java method is still present for compatibility and returns the same values, but the returned list can not be modified. All changes must be made directly on @DAnalsysis.semanticModels@ and will be reflected in the value returned by @DAnalysis.getModels()@. While not technically deprecated yet, @DAnalysis.getModels()@ should be avoided and may be removed in a future release.
* <span class="label label-info">Moved</span> Extensions in @plugin.xml@ that provide UI functionalities have been moved to new @org.eclipse.sirius.*.ext@ plug-ins, to make the contributions to the UI optional. If your product consumed directly the Sirius plug-ins instead of the high-level features, you may need to add the new plug-ins if you want the Sirius UI contributions to stay available.
* <span class="label label-danger">Removed</span> Many unused types defined in the metamodels have been removed. This should not impact normal client code. Existing models will be automatically migrated on loading if needed.
* <span class="label label-danger">Removed</span> Sirius no longer installs the @AirDCrossReferenceAdapterImpl@, which was a subclass of GMF's @CrossReferenceAdapter@ on session resources (@*.aird@). If your code relied on GMF's implementation to find inverse references, it can use the Sirius session's @Session.getSemanticCrossReferencer()@ instead, which provides the same service (and more) and avoids the redundant installation of GMF's version.
Packaging changes:
* <span class="label label-success">Added</span> Two new feature have been added concerning the new support for the AQL language:
** @org.eclipse.sirius.runtime.aql@ includes the minimum required to execute AQL queries at runtime. It must be present on end-users' systems for modelers which use AQL expressions to work.
** @org.eclipse.sirius.aql@ includes both the runtime requirements and the development-time features like support for auto-completion of AQL expressions in the VSM editor.
* <span class="label label-success">Added</span> The new feature @org.eclipse.sirius.specifier@ includes everything needed to have a complete Sirius specification environment, with support for all dialects. It includes support for Acceleo 3/MTL queries, but not for AQL (provided by @org.eclipse.sirius.aql@) or OCL (provided by @org.eclipse.sirius.runtime.ocl@). Future Sirius releases will probably swap AQL and Acceleo 3, making AQL the defaut and part of the main feature, and Acceleo 3/MTL optional in a separate feature.
* <span class="label label-success">Added</span> All Sirius releases and milestones are available as zipped archives in addition to a normal p2 repository/update-site. For each version and platform (e.g. 3.0.0 on Eclipse Mars), two archives are available: one with the Sirius core, and one with the Sirius automated test suites and the sample modelers they rely on. See the "Sirius wiki":https://wiki.eclipse.org/Sirius/Update_Sites and release pages for more details and links to these archives, for example @http://download.eclipse.org/sirius/updates/releases/2.0.5/@. This is retro-active on all previously released versions of Sirius, but not on milestones before 3.0.0.
Other changes:
* <span class="label label-success">Added</span> Sirius now provides an "Oomph":http://www.eclipse.org/oomph setup file to automatically create a fully configured Eclipse installation ready for contributing patches to Sirius. The latest version can be obtained "here":http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/plain/releng/org.eclipse.sirius.settings/Sirius.setup.
* <span class="label label-success">Added</span> New patches proposed by contributors on the "Sirius Gerrit":https://git.eclipse.org/r/#/admin/projects/sirius/org.eclipse.sirius now automatically trigger a sub-set of the Sirius automated test suites, which give a good feedback on the absence of regressions introduced by the proposed patch.
h4. Changes in @org.eclipse.sirius.common@
* <span class="label label-success">Added</span> The @org.eclipse.sirius.common.tools.api.util.SiriusCrossReferenceAdapter@ interface and the @org.eclipse.sirius.common.tools.api.util.SiriusCrossReferenceAdapterImpl@ have been added to have the capability to disable the proxy resolution. This feature is typically used to prevent loading a resource during its unloading. *Warning* : _Every additional custom CrossReferenceAdapter_ should extend @SiriusCrossReferenceAdapterImpl@ or at least implement @SiriusCrossReferenceAdapter@ with the same implementation as @SiriusCrossReferenceAdapterImpl@.
* <span class="label label-success">Added</span> @org.eclipse.sirius.common.tools.api.util.ECrossReferenceAdapterWithUnproxyCapability@ is a specific kind of @SiriusCrossReferenceAdapter@. It provides the capability to resolve all proxy cross references to a given resource. It is now used by the Session as semantic cross referencer. This type is exposed as API but it is not intended to be used/referenced/extended by user code (as the below @LazyCrossReferencer@ type).
* <span class="label label-success">Added</span> The static method @org.eclipse.sirius.common.tools.api.util.ReflectionHelper.getFieldValueWithoutException(Class<?>, String)@ has been added to return an internal static value of a class.
* <span class="label label-success">Added</span> @org.eclipse.sirius.common.tools.api.resource.ResourceSetSync@ has a new state @CHANGES_CANCELED@ used to define the state where the user canceled its changes.
* <span class="label label-success">Added</span> The @org.eclipse.sirius.common.tools.api.resource.ImageFileFormat@ class has been added (it was in @org.eclipse.sirius.ext.swt@ before).
* <span class="label label-success">Added</span> The method @org.eclipse.sirius.common.tools.api.util.EclipseUtil.getConfigurationElementsFor()@ has been added: it calls @org.eclipse.core.runtime.Platform.getExtensionRegistry().getConfigurationElementsFor()@ only if @Platform.isRunning()@.
* <span class="label label-success">Added</span> The interface @org.eclipse.sirius.business.api.migration.IMigrationParticipant@ exposes a new method @postXMLEndElement([..])@ which is called during a migration operation. This method should be overridden by participants which have to hook the loading process after each end of XML tag. The corresponding abstract class @org.eclipse.sirius.business.api.migration.AbstractMigrationParticipant@ provides a default empty implementation.
* <span class="label label-success">Added</span> A new class @org.eclipse.sirius.common.tools.api.interpreter.JavaExtensionsManager@ can now be used by langages interpreters to benefit from a consistent handling of Java extensions and support for loading Java services from the workspace.
* <span class="label label-success">Added</span> The class @org.eclipse.sirius.common.tools.api.interpreter.TypeName@ has been introduced to represent in the codebase any type which was previously represented as a plain String.
* <span class="label label-success">Added</span> A new interface @org.eclipse.sirius.common.tools.api.interpreter.TypedValidation@ has been introduced for @IInterpreter@ implementations able to provide richer information when validating an expression. This information is captured through a @org.eclipse.sirius.common.tools.api.interpreter.ValidationResult@ instance.
* <span class="label label-success">Added</span> The class @org.eclipse.sirius.common.tools.api.interpreter.VariableType@ has been introduced to represent the possible types a variable can have in a Viewpoint specification model.
* <span class="label label-success">Added</span> The utility class @org.eclipse.sirius.common.tools.api.interpreter.IInterpreterContextUtils@ has been introduced to factorize code related to managing @IInterpreterContext@ instances.
* <span class="label label-success">Added</span> The class @org.eclipse.sirius.business.api.dialect.description.MultiLanguagesValidator@ has been introduced to provide a safe and more efficient way to switch to the proper @IInterpreter@ instance when validating expressions.
* <span class="label label-success">Added</span> <span class="label label-danger">Removed</span> The class @org.eclipse.sirius.common.tools.api.util.RefreshIdFactory@ has been replaced with @org.eclipse.sirius.common.tools.api.util.RefreshIdsHolder@ which no longer rely on a global singleton but attach information to an EObject representing the current scope. This impacts @org.eclipse.sirius.diagram.business.api.query.AbstractDNodeQuery@ , @org.eclipse.sirius.common.tools.api.util.CartesianProduct@ and @org.eclipse.sirius.common.tools.api.util.EObjectCouple@ which are now requiring now a @RefreshIdsHolder@ instance.
* <span class="label label-info">Modified</span>@org.eclipse.sirius.common.tools.api.util.LazyCrossReferencer@ now extends @ECrossReferenceAdapterWithUnproxyCapability@ and implements @resolveProxyCrossReferences(Resource)@.
* <span class="label label-info">Moved</span> The @org.eclipse.sirius.common.tools.api.util.LazyCrossReferencer.enableResolve()@ and @disableResolve()@ methods has been moved to @SiriusCrossReferenceAdapter.enableResolveProxy()@ and @disableResolveProxy()@.
* <span class="label label-info">Modified</span> The static method @org.eclipse.sirius.common.tools.api.interpreter.DefaultInterpreterContextFactory.createInterpreterContext(...)@ now requires a @Map<String, VariableType>@ for the accessible variables instead of a @Map<String, String>@.
* <span class="label label-info">Modified</span> The methods @org.eclipse.sirius.common.tools.api.interpreter.IInterpreterContext.getVariables()@ and @org.eclipse.sirius.business.api.dialect.description.IInterpretedExpressionQuery.getAvailableVariables()@ are now returning a map containing @VariableType@ instances instead of encoded Strings.
* <span class="label label-info">Modified</span> The method @org.eclipse.sirius.common.tools.api.interpreter.IInterpreterStatus.getTargetTypes()@ no longer returns a list of encoded Strings but a @VariableType@ instance instead.
* <span class="label label-warning">Deprecated</span> The method @org.eclipse.sirius.common.tools.api.interpreter.IInterpreterContext.getTargetTypes()@ has been deprecated in favor of @org.eclipse.sirius.common.tools.api.interpreter.IInterpreterContext.getTargetType()@ which returns a @VariableType@ instance instead of encoded Strings.
h4. Changes in @org.eclipse.sirius.common.ui@
* <span class="label label-success">Added</span> Classes from @org.eclipse.sirius.common.ui.tools.api.dialog.quickoutline@ packages are available in API to allow editor to provide quick outline feature easily.
* <span class="label label-success">Added</span> The methods @displaySyncExec(Runnable)@ , @displayAsyncExec(Runnable)@ and @synchronizeWithUIThread()@ have been added in class @org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil@ to encapsulate accesses to the current @Display@ instance.
* <span class="label label-info">Moved</span> Extensions in @plugin.xml@ that provide UI functionalities have been moved to @org.eclipse.sirius.common.ui.ext@.
h4. Changes in @org.eclipse.sirius@
* <span class="label label-success">Added</span> The method @org.eclipse.sirius.business.api.session.danalysis.DAnalysisSessionHelper.findContainerForAddedRepresentation(DAnalysis, DRepresentation)@ has been added to return a @DRepresentationContainer@ from the @DAnalysis@ parameter and the added @DRepresentation@.
* <span class="label label-success">Added</span> The method @org.eclipse.sirius.business.api.migration.IMigrationParticipant.updateCreatedObject(EObject newObject, String loadedVersion)@ has been added to update object values in VSM before loading this objects from XML file.
* <span class="label label-success">Added</span> The method @org.eclipse.sirius.tools.api.ui.RefreshEditorsPrecommitListener.disable()@ has been added to disable the next refresh attempt in the current precommit loop iteration.
* <span class="label label-success">Added</span> The new constant @org.eclipse.sirius.business.api.helper.SiriusUtil.ENVIRONMENT_URI_SCHEME@ declares environment URI scheme.
* <span class="label label-success">Added</span> The new constant @org.eclipse.sirius.business.api.helper.SiriusUtil.VIEWPOINT_ENVIRONMENT_RESOURCE_URI@ declares @environment:/viewpoint@ resource URI.
* <span class="label label-success">Added</span> The new constant @org.eclipse.sirius.viewpoint.description.util.DescriptionResourceImpl.OPTION_SIRIUS_USE_URI_FRAGMENT_AS_ID@ added to define a option to enable the use of a id map for odesign resource, id being uri's fragment.
* <span class="label label-success">Added</span> The query @org.eclipse.sirius.business.api.query.EObjectQuery@ has now a new constructor with an additional parameter, ECrossReferenceAdapter. This can be usefull if there is many calls to inverse references methods for the same Session. This avoids to get the semantic cross referencer from the EObject each time. This query also proposes a new method @getInverseReferences(Set<EReference>)@.
* <span class="label label-success">Added</span> There is a new capability on Dialect. This capability is to refresh only impacted elements concerned by a list of notifications. It is used, for example, to refresh the opened representations when the user chooses manual refresh mode. Each dialect that want to offer this capability must implement @org.eclipse.sirius.business.api.dialect.DialectServices.refreshImpactedElements(DRepresentation, Collection<Notification>, IProgressMonitor)@. A default implementation that does nothing is done in @org.eclipse.sirius.business.api.dialect.AbstractRepresentationDialectServices@.
* <span class="label label-success">Added</span> A new method has been added in the query @org.eclipse.sirius.business.api.query.DAnalysisQuery@ named @getMainModels()@. This method returns a Set of the main model and the other non controlled models.
* <span class="label label-success">Added</span> A new method has been added in @org.eclipse.sirius.viewpoint.DAnalysis@ named @getSemanticResources()@. This method returns a list of @org.eclipse.sirius.business.api.resource.ResourceDescriptor@ which is a descriptor of the semantic resource.
* <span class="label label-info">Modified</span> @org.eclipse.sirius.viewpoint.RGBValues@ has been changed from an @EClass@ to an @EDataType@, it is not an @EObject@ anymore.
* <span class="label label-success">Added</span> The API @org.eclipse.sirius.business.api.metamodel.helper.FontFormatHelper@ has been added. It helps to update label format multi valued features.
* <span class="label label-info">Modified</span> @org.eclipse.sirius.business.api.session.SessionListener.SEMANTIC_CHANGE@ is no more send to @SessionListener@ and @SessionManagerListener@ listeners on save when a semantic resource is saved. Use a @ResourceSyncClient@ listener on @ResourceSetSync@ to have know if a semantic resource is saved.
* <span class="label label-info">Modified</span> The default constructor has been changed in @org.eclipse.sirius.tools.api.command.semantic.RemoveSemanticResourceCommand@.
** The boolean value @removeReferencingResources@ has been added to indicate if the referencing resources are also to remove.
** The boolean value @removeFromControlledResources@ has been removed because controlled resources are managed internally.
* <span class="label label-info">Modified</span> The boolean value @removeReferencingResources@ has been added in @org.eclipse.sirius.business.api.session.Session.removeSemanticResource@ method to indicate if the referencing resources are also to remove.
* <span class="label label-info">Modified</span> The @getModels()@ method in @org.eclipse.sirius.viewpoint.DAnalysis@ returns a non-modifiable list. Use @getSemanticResources()@ instead.
* <span class="label label-info">Moved</span> The @isBbocked()@ and @setBlocked()@ methods on the @org.eclipse.sirius.viewpoint.DAnalysisSessionEObject@ EClass have been removed, as they were not actually used in the internal code.
* <span class="label label-warning">Deprecated</span> @org.eclipse.sirius.business.api.helper.task.ICommandTask.undo()/redo()@ methods are deprecated because they are useless since undo/redo is managed by EMF Transaction.
* <span class="label label-warning">Deprecated</span> @org.eclipse.sirius.tools.api.command.IUndoableCommand@ interface are deprecated because it is useless since undo/redo is managed by EMF Transaction.
* <span class="label label-warning">Deprecated</span> @org.eclipse.sirius.business.api.helper.task.TaskExecutor.undo()/redo()@ methods are deprecated because they are useless since undo/redo is managed by EMF Transaction.
* <span class="label label-danger">Removed</span> The @org.eclipse.sirius.business.api.session.Session.createSemanticResource()@ method has been removed. Use @Session.addSemanticResource()@ instead.
* <span class="label label-danger">Removed</span> The @ExtendedPackage@ @EDataType@ which was defined in the @http://www.eclipse.org/sirius/1.1.0@ package was not actually used anywhere and has been removed.
* <span class="label label-danger">Removed</span> The @DView@ methods @getAllRepresentations()@, @getReferencedRepresentations()@ and @getHiddenRepresentations()@ have been removed: @getReferencedRepresentations()@ and @getHiddenRepresentations()@ were never actually used, making @getAllRepresentations()@ strictly equivalent to @getOwnedRepresentations()@. Code that used @getAllRepresentations()@ can simply use @getOwnedRepresentations()@ instead.
* <span class="label label-danger">Removed</span> The API @org.eclipse.sirius.viewpoint.DSourceFileLink@ has been removed.
* <span class="label label-danger">Removed</span> The API @org.eclipse.sirius.viewpoint.DNavigable@ has been removed.
* <span class="label label-danger">Removed</span> The API @org.eclipse.sirius.viewpoint.DNavigationLink@ has been removed.
* <span class="label label-danger">Removed</span> The API @org.eclipse.sirius.viewpoint.DValidable@ has been removed.
* <span class="label label-danger">Removed</span> The enum @org.eclipse.sirius.viewpoint.NavigationTargetType@ has been removed.
* <span class="label label-danger">Removed</span> The API @org.eclipse.sirius.viewpoint.DLabelled@ has been removed.
* <span class="label label-danger">Removed</span> The API @org.eclipse.sirius.viewpoint.DContainer@ has been removed.
h4. Changes in @org.eclipse.sirius.ui@
* <span class="label label-success">Added</span> The method @org.eclipse.sirius.ui.business.api.dialect.DialectUIServices.completeToolTipText(String, EObject, EStructuralFeature)@ has been added to customize the tooltip displayed in the VSM editor by using the feature of the current object. The old method @org.eclipse.sirius.ui.business.api.dialect.DialectUIServices.completeToolTipText(String, EObject)@ has been deprecated.
* <span class="label label-success">Added</span> The class @org.eclipse.sirius.ui.tools.api.properties.SiriusExtensiblePropertySource@ has been added. It allows developers to make their properties views CellEditor customizable by using the new extension point @org.eclipse.sirius.ui.siriuspropertiescelleditor@
* <span class="label label-success">Added</span> The interface @org.eclipse.sirius.ext.emf.ui.ICellEditorProvider@ has been added to allow clients to provide their own @CellEditor@ - in the Sirius semantic properties views - through the new extension point @org.eclipse.sirius.ui.siriuspropertiescelleditor@.
* <span class="label label-success">Added</span> The method @org.eclipse.sirius.ui.business.api.session.IEditingSession.detachEditor(DialectEditor, boolean)@ has been added to choose whether we should revert the user changes when detaching the editor.
* <span class="label label-success">Added</span> A @org.eclipse.sirius.ui.tools.api.views.LockDecorationUpdater@ is now available to add it on a @org.eclipse.ui.navigator.CommonNavigator@ to be refreshed when notifications are send to @org.eclipse.sirius.ecore.extender.business.api.permission.IAuthorityListener@.
* <span class="label label-success">Added</span> A new job @org.eclipse.sirius.ui.tools.api.views.RefreshLabelImageJob@ has been added to refresh the icon of specified elements on a @org.eclipse.ui.navigator.CommonNavigator@.
* <span class="label label-info">Moved</span> Extensions in @plugin.xml@ that provide UI functionalities have been moved to @org.eclipse.sirius.ui.ext@.
h4. Changes in @org.eclipse.sirius.ecore.extender@
* <span class="label label-info">Modified</span> The method @org.eclipse.sirius.ecore.extender.business.api.accessor.ModelAccessor.eRemoveInverseCrossReferences()@ has been changed to return the list of changed objects by the inverse cross references removal.
* <span class="label label-info">Modified</span> The method @org.eclipse.sirius.ecore.extender.business.api.accessor.IMetamodelExtender.eRemoveInverseCrossReferences()@ has been changed to return the list of changed objects by the inverse cross references removal.
* <span class="label label-info">Modified</span> The method @org.eclipse.sirius.ecore.extender.business.api.accessor.CompositeMetamodelExtender.eRemoveInverseCrossReferences()@ has been changed to return the list of changed objects by the inverse cross references removal.
* <span class="label label-danger">Removed</span> The exception @org.eclipse.sirius.ecore.extender.IllegalURIException@ has been removed. It was not actually thrown anywhere in the code.
h4. Changes in @org.eclipse.sirius.editor@
* <span class="label label-success">Added</span> The static method @org.eclipse.sirius.editor.tools.api.assist.TypeContentProposalProvider.bindPluginsCompletionProcessors(AbstractPropertySection, Text)@ has been added. This method is very similar to @org.eclipse.sirius.editor.tools.api.assist.TypeContentProposalProvider.bindCompletionProcessor(AbstractPropertySection, Text)@, the difference is that it binds the completion processors available in plugins to the text.
h4. Changes in @org.eclipse.sirius.diagram@
* <span class="label label-success">Added</span> The @org.eclipse.sirius.diagram.tools.api.command.ChangeLayerActivationCommand@ has been added. This command was previously internal.
* <span class="label label-success">Added</span> The new constant @org.eclipse.sirius.diagram.business.api.helper.SiriusDiagramUtil.DIAGRAM_ENVIRONMENT_RESOURCE_URI@ declares the @environment:/diagram@ resource URI.
* <span class="label label-success">Added</span> The method @org.eclipse.sirius.diagram.business.api.diagramtype.IDiagramDescriptionProvider.completeToolTipText(String, EObject, EStructuralFeature)@ has been added to customize the tooltip displayed in the VSM editor by using the feature of the current object. The old method @org.eclipse.sirius.diagram.business.api.diagramtype.IDiagramDescriptionProvider.completeToolTipText(String, EObject)@ has been deprecated.
* <span class="label label-success">Added</span> New methods have been added to @org.eclipse.sirius.diagram.business.api.query.ContainerMappingQuery@ to test the children presentation mode of the current @ContainerMapping@: @isVerticalStackContainer()@, @isHorizontalStackContainer()@, @isRegionContainer()@ and @isRegion()@.
* @org.eclipse.sirius.diagram.business.api.query.AbstractDNodeQuery@ now requires a @org.eclipse.sirius.common.tools.api.util.RefreshIdsHolder@ to check for equality in the context of a refresh operation.
* <span class="label label-danger">Removed</span> The @DNodeList.lineWidth@ attribute has been removed from the metamodel, the corresponding generated elements do not exist anymore: @org.eclipse.sirius.diagram.DNodeList.getLineWidth()@, @org.eclipse.sirius.diagram.DNodeList.setLineWidth()@, @org.eclipse.sirius.diagram.DiagramPackage.DNODE_LIST__LINE_WIDTH@, @org.eclipse.sirius.diagram.DiagramPackage.getDNodeList_LineWidth()@, @org.eclipse.sirius.diagram.DiagramPackage.Literals.DNODE_LIST__LINE_WIDTH()@.
* <span class="label label-danger">Removed</span> @org.eclipse.sirius.diagram.ComputedStyleDescriptionRegistry.cache@ reference has been removed from the metamodel as it is no more useful, to limit memory consumed by computed @StyleDescription@ we directly look for them in the @ComputedStyleDescriptionRegistry.computedStyleDescriptions@ list.
h4. Changes in @org.eclipse.sirius.diagram.ui@
* <span class="label label-success">Added</span> <span class="label label-info">Modified</span> The @org.eclipse.sirius.diagram.ui.tools.api.figure.ImageFigureWithAlpha@ interface has been added to identify Figures having the capability to return an alpha value from a coordinate. @org.eclipse.sirius.diagram.ui.tools.api.figure.AbstractCachedSVGFigure@ and @org.eclipse.sirius.diagram.ui.tools.api.figure.AbstractTransparentImage@ now implement this new interface.
* <span class="label label-success">Added</span> The method @org.eclipse.sirius.diagram.ui.tools.api.figure.locator.DBorderItemLocator.resetBorderItemMovedState()@ has been added to allow to reset the state of @borderItemHasMoved@. This method must be used carefully only in case where @setConstraint(Rectangle)@ is called to compute temporary a @getValidLocation(Rectangle, IFigure, Collection, List)@, one time with a new value and just after with the old value.
* <span class="label label-success">Added</span> The constant @org.eclipse.sirius.diagram.ui.tools.api.image.DiagramImagesPath.HIDDEN_LABEL_DECORATOR@ has been added to represent the path of hidden label decorator used in the outline.
* <span class="label label-success">Added</span> The class @org.eclipse.sirius.diagram.ui.business.api.provider.DDiagramElementContainerLabelItemProvider@ has been added to represent container and list labels as virtual nodes in the Show/Hide wizards.
* <span class="label label-info">Modified</span> The @org.eclipse.sirius.diagram.ui.tools.api.figure.locator.DBorderItemLocator@ did not take into account the rectangle size passed to @getValidLocation@. To resolve that limitation, several protected methods that took a Point as location now take a Rectangle:
** @locateOnBorder(Point, int, int, IFigure, Collection<IFigure>, List<IFigure>)@ now takes a @Rectangle@ instead a @Point@: @locateOnBorder(Rectangle, int, int, IFigure, Collection<IFigure>, List<IFigure>)@;
** @locateOnSouthBorder@, @locateOnNorthBorder@, @locateOnWestBorder@ and @locateOnEastBorder@ signatures is now @(Rectangle, int, IFigure, Collection<IFigure>, List<IFigure>)@;
** @locateOnParent@ signature is now @locateOnParent(Rectangle, int, IFigure)@;
** @conflicts@ signature is now @conflicts(Rectangle, IFigure, Collection<IFigure>, List<IFigure>)@.
* <span class="label label-info">Moved</span> The constant @DiagramImagesPath.LINK_TO_VIEWPOINT_IMG@ has been moved to @org.eclipse.sirius.ui.tools.api.image.ImagesPath.LINK_TO_VIEWPOINT_IMG@. This is more coherent because the corresponding image is in core @org.eclipse.sirius.common.ui@ plugin.
* <span class="label label-info">Moved</span> @org.eclipse.sirius.diagram.ui.tools.api.layout.PinHelper@ moved from @org.eclipse.sirius.diagram.ui@ plugin to @org.eclipse.sirius.diagram@ plugin, i.e. @org.eclipse.sirius.diagram.tools.api.layout.PinHelper@ with @PinHelper.IsPinned(IDiagramElementEditPart)@ removed in favor of @PinHelper.IsPinned(DDiagramElement)@.
* <span class="label label-info">Moved</span> External java actions declared as @org.eclipse.sirius.diagram.ui.tools.internal.actions.pinning.pinElementsActionId@ and @org.eclipse.sirius.diagram.ui.tools.internal.actions.pinning.unpinElementsActionId@ are now declared as @org.eclipse.sirius.diagram.tools.internal.actions.pinning.pinElementsActionId@ and @org.eclipse.sirius.diagram.tools.internal.actions.pinning.unpinElementsActionId@ in @org.eclipse.sirius.diagram@ plugin.
* <span class="label label-info">Moved</span> Extensions in @plugin.xml@ that provides UI functionalities have been moved to @org.eclipse.sirius.diagram.ui.ext@.
* <span class="label label-warning">Deprecated</span> @org.eclipse.sirius.diagram.ui.tools.api.util.GMFNotationHelper.findGMFDiagram()@ became deprecated in favor of @DiagramCreationUtil.findAssociatedGMFDiagram()/getAssociatedGMFDiagram()@
* <span class="label label-danger">Removed</span> The @org.eclipse.sirius.diagram.ui.edit.api.part.IDiagramEdgeEditPart.getEAdapterStrokeColor@ method has been removed as the corresponding adapter was uneffective and is no more used and installed on the edge edit parts.
* <span class="label label-danger">Removed</span> @org.eclipse.sirius.diagram.ui.tools.api.figure.InvisibleResizableCompartmentFigure@ class has been removed, use a @org.eclipse.gmf.runtime.diagram.ui.figures.ShapeCompartmentFigure@ with a @org.eclipse.draw2d.MarginBorder@ or a null border instead.
* <span class="label label-danger">Removed</span> The method @org.eclipse.sirius.diagram.ui.edit.api.part.IDiagramElementEditPart.getEAdapterSemanticElements()@ has been removed (and all its implementations). For manual refresh, this adapter has been replaced with the @RefreshEditorsPrecommitListener@.
* <span class="label label-danger">Removed</span> The method @org.eclipse.sirius.diagram.ui.part.SiriusDiagramEditorUtil.findView()@ has been deleted in flavor of @SiriusGMFHelper.getGmfView()@. If you was using @SiriusDiagramEditorUtil.findView()@ with a semantic element in parameter, retrieve before the corresponding @DDiagram@ or @DDiagramElement@ and use @SiriusGMFHelper.getGmfView(DSemanticDecorator)@ from this last to get the corresponding GMF View. To get a @DDiagram@ or @DDiagramElement@ from a semantic element, you can use @EObjectQuery.getInverseReferences(EReference)@ API, see @org.eclipse.sirius.diagram.ui.business.api.view.ValidateAction.getDSemanticDecorator()@ for an example.
h4. Changes in @org.eclipse.sirius.table@
* <span class="label label-danger">Removed</span> The methods @org.eclipse.sirius.table.business.api.helper.TableHelper.getColumn()@ have been removed because they are not useful, @TableHelper.getColumn(DLine, int)@ can be replaced by @DTable.getColumns().get(int)@ and @TableHelper.getColumn(DTable, String)@ should not be used as we can have several columns with a same featureName.
* <span class="label label-danger">Removed</span> The method @org.eclipse.sirius.table.business.api.helper.TableHelper.getEClassifier(DLine, int)@ has been removed because it is not useful, use @TableHelper.getEClassifier(line, column)@ instead.
* <span class="label label-danger">Removed</span> The method @org.eclipse.sirius.table.business.api.helper.TableHelper.getTableElement(DTableElementStyle)@ has been removed because it is not useful, @DTableElementStyle.eContainer()@ can be used instead.
* <span class="label label-danger">Removed</span> The methods @org.eclipse.sirius.table.business.api.helper.TableHelper.getCell(DCellStyle)@ has been removed because they are not useful, use @DCellStyle.eContainer@ instead.
* <span class="label label-danger">Removed</span> The methods @org.eclipse.sirius.table.business.api.helper.TableHelper.getCell(RGBValues)@ has been removed, @RGBValues@ is not an @EObject@ anymore. The method was looking in the eContainer hierarchy of a an instance of @RGBValues@ to find the parent @DCell@.
* <span class="label label-danger">Removed</span> The method @org.eclipse.sirius.table.business.api.helper.TableHelper.getCreateCellTool(DCell)@ has been removed because it is not useful, use @TableHelper.getCreateCellTool(line, column)@ instead.
* <span class="label label-danger">Removed</span> The method @org.eclipse.sirius.table.business.api.helper.TableHelper.getCellDefaultForegroundColor()@ has been removed because it is not useful, use @EnvironmentSystemColorFactory.getDefault().getSystemColorDescription("gray")@ instead.
* <span class="label label-danger">Removed</span> The interface @DTableElementUpdater@ has been removed from metamodel. It is now unnecessary. This interface was here to provide operations to activate and deactivate the listeners, that have been replaced by the @RefreshImpactedElementsCommand@ launched from @RefreshEditorsPrecommitListener@.
h4. Changes in @org.eclipse.sirius.table.ui@
* <span class="label label-info">Moved</span> Extensions in @plugin.xml@ that provide UI functionalities have been moved to @org.eclipse.sirius.table.ui.ext@.
h4. Changes in @org.eclipse.sirius.tree@
* <span class="label label-success">Added</span> The method @org.eclipse.sirius.tree.business.api.interaction.DTreeItemUserInteraction.refreshContent(boolean fullRefresh)@ has been added to allow full refresh from a specified @DTreeItem@.
* <span class="label label-success">Added</span> The EMF Command @org.eclipse.sirius.tree.business.api.command.DTreeItemLocalRefreshCommand@ has been added to call @DTreeItemUserInteraction.refreshContent(boolean fullRefresh)@ in an EMF Command.
* <span class="label label-success">Added</span> The method @org.eclipse.sirius.tree.business.api.interaction.DTreeItemUserInteraction.expand(IProgressMonitor)@ has been added similar to @DTreeItemUserInteraction.expand()@ but taking a @IProgressMonitor@ in parameter to have progression on @DTreeItem@ expanding.
* <span class="label label-success">Added</span> The method @org.eclipse.sirius.tree.business.api.interaction.DTreeItemUserInteraction.collapse(IProgressMonitor)@ has been added similar to @DTreeItemUserInteraction.collapse()@ but taking a @IProgressMonitor@ in parameter to have progression on @DTreeItem@ collapsing.
* <span class="label label-success">Added</span> The method @org.eclipse.sirius.tree.business.api.interaction.DTreeItemUserInteraction.expandAll(IProgressMonitor)@ has been added similar to @DTreeItemUserInteraction.expandAll()@ but taking a @IProgressMonitor@ in parameter to have progression on @DTreeItem@ expanding.
* <span class="label label-success">Added</span> The method @org.eclipse.sirius.tree.business.api.interaction.DTreeItemUserInteraction.refreshContent(boolean, IProgressMonitor)@ has been added similar to @DTreeItemUserInteraction.refreshContent(boolean)@ but taking a @IProgressMonitor@ in parameter to have progression on @DTreeItem@ expanding.
* <span class="label label-success">Added</span> The method @DTreeUserInteraction.expand(IProgressMonitor)@ has been added similar to @org.eclipse.sirius.tree.business.api.interaction.DTreeUserInteraction.expand()@ but taking a @IProgressMonitor@ in parameter to have progression on @DTreeItem@ expanding.
* <span class="label label-success">Added</span> The method @DTreeUserInteraction.expandAll(IProgressMonitor)@ has been added similar to @org.eclipse.sirius.tree.business.api.interaction.DTreeUserInteraction.expandAll()@ but taking a @IProgressMonitor@ in parameter to have progression on @DTreeItem@ expanding.
* <span class="label label-info">Modified</span> The constructor @org.eclipse.sirius.tree.business.api.command.DTreeItemExpansionChangeCommand.DTreeItemExpansionChangeCommand(GlobalContext, TransactionalEditingDomain, DTreeItem, IProgressMonitor, boolean)@ has an additional @IProgressMonitor@ parameter.
* <span class="label label-danger">Removed</span> The interface @DTreeElementUpdater@ has been removed from metamodel. It is now unnecessary. This interface was here to provide operations to activate and deactivate the listeners, that have been replaced by the @RefreshImpactedElementsCommand@ launched from @RefreshEditorsPrecommitListener@.
h4. Changes in @org.eclipse.sirius.tree.ui@
* <span class="label label-info">Modified</span> The method @org.eclipse.sirius.tree.ui.properties.section.common.AbstractDTreePropertySection.update(final TransactionalEditingDomain domain, final Notification notification)@ has been replaced by @org.eclipse.sirius.tree.ui.properties.section.common.AbstractDTreePropertySection.update(ResourceSetChangeEvent)@ to allow to update only once per ResourceSetChangeEvent and let subclasses make additional filtering on the notifications.
* <span class="label label-info">Modified</span> The return type of the method @org.eclipse.sirius.tree.ui.properties.section.common.AbstractDTreePropertySection.getEventListener()@ has been changed from @DemultiplexingListener@ to @ResourceSetListener@.
* <span class="label label-info">Modified</span> The type of @org.eclipse.sirius.tree.ui.properties.section.common.AbstractDTreePropertySection.eventListener@ has been changed from @DemultiplexingListener@ to @ResourceSetListener@.
* <span class="label label-info">Moved</span> Extensions in @plugin.xml@ that provide UI functionalities have been moved to @org.eclipse.sirius.tree.ui.ext@.
h4. Changes in @org.eclipse.sirius.synchronizer@
* <span class="label label-success">Added</span> The method @org.eclipse.sirius.synchronizer.ModelToModelSynchronizer.update(CreatedOutput, boolean, IProgressMonitor)@ has been added similar to @org.eclipse.sirius.synchronizer.ModelToModelSynchronizer.update(CreatedOutput, boolean)@ but taking a @IProgressMonitor@ in parameter to have progression on synchronization.
* <span class="label label-info">Modified</span> The method @org.eclipse.sirius.synchronizer.SemanticPartitionInvalidator.hasFastResult(EObject, SemanticPartition, CreatedOutput)@ now takes a @CreatedOutput@ as additional parameter element to allow to have the parent output element.
* <span class="label label-info">Modified</span> The method @org.eclipse.sirius.synchronizer.SemanticPartition.evaluate(EObject, CreatedOutput)@ now takes a @CreatedOutput@ as additional parameter. This @CreatedOutput@ represents the output model element which will become the parent of the elements created from the evaluation result.
h4. Changes in @org.eclipse.sirius.ext.swt@
* <span class="label label-info">Moved</span> The @org.eclipse.sirius.ext.swt.ImageFileFormat@ class has been moved in @org.eclipse.sirius.common.tools.api.resource@ (in the @org.eclipse.sirius.common@ plugin).
h4. Changes in @org.eclipse.sirius.ext.e3.ui@
* <span class="label label-success">Added</span> The classes @org.eclipse.sirius.ext.e3.ui.dialogs.FilteredTree@ and @org.eclipse.sirius.ext.e3.ui.dialogs.PatternFilter@ have been added in order to have the latest functionalites of @org.eclipse.ui.dialogs.FilteredTree@ with Eclipse Juno.
h4. Changes in @org.eclipse.sirius.ext.emf.tx@
* <span class="label label-success">Added</span> The class @org.eclipse.sirius.ext.emf.tx.DelegatingValidateEditSupport@ has been added to be able to have a @ValidateEditSupport@ which delegate to an existing @ValidateEditSupport@.
h4. Changes in @org.eclipse.sirius.eef.adapters@
This plug-in now requires the version 1.5.0 of @org.eclipse.emf.eef.runtime@ bundle.
* <span class="label label-success">Added</span> The new class @org.eclipse.sirius.eef.components.SiriusAwarePropertiesEditingComponent@ can be used as root class of the generated EEF components to greatly improve performances when using both EEF properties views with Sirius representations. Refer to _Using the Extended Editing Framework with Sirius_ documentation for details.
* <span class="label label-info">Modified</span>The following packages are set to @x-internal:=true@
** @org.eclipse.sirius.eef.actions@
** @org.eclipse.sirius.eef.adapters@
h4. Changes in @org.eclipse.sirius.tests.junit.support@
* <span class="label label-success">Added</span> The method @org.eclipse.sirius.tests.support.api.EclipseTestsSupportHelper.setReadOnlyStatus(boolean, IResource...)@ has been added to change the read only status of the given resources.
* <span class="label label-success">Added</span> The @warnings@ member variable has been added to @org.eclipse.sirius.tests.support.api.SiriusTestCase@ to allow the recording of warning logs. Methods @doesAWarningOccurs()@, @clearWarnings()@, @setWarningCatchActive(boolean)@, @isWarningCatchActive()@ and @getWarningLoggersMessage()@ have also been added to manage the @warnings@ member variable in the same way as the existing @errors@ member variable.
* <span class="label label-success">Added</span> The method @org.eclipse.sirius.tests.support.api.SiriusTestCase.loadModeler(URI, EditingDomain)@ has been added to load a VSM resource and make the @Viewpoints@ it defines accessible via the @SiriusTestsCase.viewpoints@ field.
* <span class="label label-success">Added</span> The class @org.eclipse.sirius.tests.support.api.ImageComposer@ has been added to the test API to do assertions on image decorators.
* <span class="label label-success">Added</span> The enum @SiriusTestCase.ResourceURIType@ and the method @SiriusTestCase.toURI(final String, ResourceURIType)@ have been added to allow choosing the type of URI created (@platform:@ or @plugin:@).
* <span class="label label-info">Modified</span> The @SiriusTestCase.genericSetUp(List<URI>, List<URI>, boolean, URI)@ method has been set to protected so that it can be called from concrete test cases. This method allows initializing session.
* <span class="label label-info">Moved</span> The class @TreeItemLabelFontFormatQuery@ was moved into @org.eclipse.sirius.tests.support.api@ (from @org.eclipse.sirius.tests.swtbot.support.api.widget@), as it can be used in non-SWTBot tests..
* <span class="label label-warning">Deprecated</span> The method @org.eclipse.sirius.tests.support.api.SiriusDiagramTestCase.setReadOnly(IFile)@ has been deprecated, @org.eclipse.sirius.tests.support.api.EclipseTestsSupportHelper.setReadOnlyStatus(boolean, IResource...)@ can be used instead.
h4. Changes in @org.eclipse.sirius.tests.swtbot.support@
* <span class="label label-success">Added</span> The @warnings@ member variable has been added to @org.eclipse.sirius.tests.swtbot.support.api.AbstractSiriusSwtBotGefTestCase@ to allow the recording of warning logs. Methods @doesAWarningOccurs()@, @setWarningCatchActive(boolean)@, @isWarningCatchActive()@ and @getWarningLoggersMessage()@ have also been added to manage the @warnings@ member variable in the same way as the existing @errors@ member variable.
* <span class="label label-success">Added</span> The method @org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor.getDRepresentation()@ has been added to return the @org.eclipse.sirius.viewpoint.DRepresentation@ instance available in the diagram editor.
* <span class="label label-info">Modified</span> The method @org.eclipse.sirius.tests.swtbot.support.api.AbstractSiriusSwtBotGefTestCase.getSectionButton()@ now only takes the button's tooltip instead of a numerical position index and the tooltip.
* <span class="label label-info">Modified</span> The methods @org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusHelper.selectPropertyTabItem(String)@ now returns a @boolean@ that is true when the property tab item is found, false otherwise.
* <span class="label label-info">Moved</span> The class @TreeItemLabelFontFormatQuery@ was moved into @org.eclipse.sirius.tests.support.api@ (from @org.eclipse.sirius.tests.swtbot.support.api.widget@), as it can be used in non-SWTBot tests..
* <span class="label label-warning">Deprecated</span> The methods @org.eclipse.sirius.tests.swtbot.support.api.business.UIPerspective.deleteProject(UIProject)@ and @org.eclipse.sirius.tests.swtbot.support.api.business.UIPerspective.deleteProject(String)@ have been deprecated, @org.eclipse.sirius.tests.support.api.EclipseTestsSupportHelper.setReadOnlyStatus(boolean, IResource...)@ can be used instead.
h4. New plug-ins
The following UI plug-ins has been added:
* <span class="label label-success">Added</span> @org.eclipse.sirius.ui.ext@
* <span class="label label-success">Added</span> @org.eclipse.sirius.common.ui.ext@
* <span class="label label-success">Added</span> @org.eclipse.sirius.diagram.ui.ext@
* <span class="label label-success">Added</span> @org.eclipse.sirius.table.ui.ext@
* <span class="label label-success">Added</span> @org.eclipse.sirius.tree.ui.ext@
These plug-ins own the extension definitions related to perspective, views, newWizard, menus, contextual menus, editors and preference pages that were previously in @org.eclipse.sirius.xxx.ui@ plug-ins.
Now, downstream projects can define features that do not contain @org.eclipse.sirius.xxx.ui.ext@, allowing them not have all that functionalities they may not want.
h2(#sirius2.0.0). Changes in Sirius 2.0.0
h3. User-Visible Changes
* It is now possible to select element that intersects the selection rectangle and not that is completely contained by the selection rectangle. This new behavior is enabled when user selects elements from right to left. The normal mode (previous mode) remains when the user selects elements from left to right.
* The edges appearance is now kept, as much as possible, when one of its extremity is moved. A move of an extremity should move only the closest segment of the edge.
* The edges appearance is kept as much as possible when a node (container or not) is moved. A move of a node now impacts only the closest segment of the linked edges.
!images/moveNode-edgeImpact-changedBehavior.gif!
* When a node, container or not, is resized to the left, upwards, or both, the location of its children (elements inside a container and border nodes) is not changed. It is possible to retrieve the previous behavior by pressing the F3 function key during the resize.
!images/containerResize-changedBehavior.gif!
* The "snap to shapes" is now enabled by default (see _Sirius > Sirius Diagram > Rulers and Grid_ preference page). This is true only for new diagrams. The existing diagrams are not impacted.
* The "Navigate" top-level contextual menu entry with mixed actions for creating new representations and opening existing ones has been changed by two top-level menus:
** One named "New", which lists only the available actions to create new representations on the selected element.
** One named "Open", which lists only the existing representations on the selected element.
* When a shape is resized (no matter the direction), the edge(s) connection location (toward or from this one) is kept. Before that, edges connections moved according to the ratio of the resizing.
Example with this initial state before resizing:
!images/shapeResize1.png!
Result after resizing without this feature (the edges have moved):
!images/shapeResize2.png!
Result after resizing with this feature (the edges keep the same location):
!images/shapeResize3.png!
* There is now the possibility to distribute the selected shapes (see "Sirius User Manual/Diagrams/Features Overview/Distribute elements":user/diagrams/Diagrams.html#distribute for more details):
** Distribute gaps horizontally
** Distribute centers horizontally
** Distribute gaps vertically
** Distribute centers vertically
* The end user can now remove all bend-points between the two edge ends. This action is available on edge context menu "Remove Bend-points" or by using the shortcut "Ctrl" + "Shift" + "-".
* Reconnection of an edge will only now move the minimum necessary bendpoints instead of reseting it to default.
* A new action has been added to reset the diagram (or container) origin: the diagram (or container) bounds (the rectangle formed by the highest, the leftmost, the lowest and the rightmost children elements) can have a negative origin or can be shifted toward the bottom-right with a blank zone at the top-left. This action aims to move all diagram (or container) elements so that the it retrieves its origin while keeping elements layout.
h3. Specifier-Visible Changes
* The specifier can now choose to hold the edge ends toward the center of the source, target or both. New fields within the "advance" tab of EdgeStyle description have been added to choose for which source or target mappings an edge should be centered. See "Edges Styles > Edge Centering":specifier/diagrams/Diagrams.html#edges_styles in the specifier manual for more details.
* When creating a new Viewpoint Specification Project using the supplied wizard: _New > Viewpoint Specification Project_, the VSM name is now given according to the project name. If the project name is suffixed with "design", the VSM name is provided by the last word before this suffix. Otherwise, the VSM name is given by the last word of the project name.
* "Lozenge" is replaced by "Diamond" in diagram style.
h3. API Changes
h4. Changes in @org.eclipse.sirius@
* The @org.eclipse.sirius.business.api.session.ViewpointSelector@ class has been added, with easy-to-use methods to select/deselect viewpoint in a given session.
* The @VIEWPOINT_REGISTRY_INITIAL_SIZE@ preference and @VIEWPOINT_REGISTRY_INITIAL_SIZE_DEFAULT_VALUE@ default value has been removed from @org.eclipse.sirius.tools.api.preferences.DCorePreferences@.
* The method @org.eclipse.sirius.business.api.query.DRepresentationQuery.isDanglingRepresentation()@ has been added to introduce the possibility to check if a representation is a dangling representation, ie. if its a DSemanticDecorator, its target is null or does not belong to a session.
* @org.eclipse.sirius.ecore.extender.business.api.permission.exception.LockedInstanceException@ now can take several EObjects in constructor and a method @LockedInstanceException.getLockedElements()@ has been added to get all EObjects put in constructor.
@org.eclipse.sirius.tools.api.command.InvalidPermissionCommand@ now can take several EObjects in constructor to throw a @LockedInstanceException@ with several EObjects.
* The @org.eclipse.sirius.business.api.helper.task.AbstractDeleteDRepresentationElementTask@ class has been renamed into @DeleteEObjectTask@.
* The interface @org.eclipse.sirius.tools.api.command.listener.IChangeListener@ and all classes related to this mechanism (@ChangeListenerFactory@, @TriggerOperation@) have been removed as this mechanism proves to be inefficient. It can be replaced by a pre/post commit listener or a @org.eclipse.sirius.business.api.session.ModelChangeTrigger@
* The @org.eclipse.sirius.tools.api.ui.IExternalAction2@ interface has been removed. It was created to disable some @IChangeListener@ when the action indicates it will not delete elements.
* @org.eclipse.sirius.business.api.dialect.DialectServices.refresh(DRepresentation, boolean, IProgressMonitor@ has been added to specify if we want partial refresh or not. By default partial refresh is done. full refresh is only implements for tree dialect.
* @org.eclipse.sirius.business.api.dialect.AbstractRepresentationDialectServices.refresh(DRepresentation, IProgressMonitor)@ has been added to call by default @DialectServices.refresh(DRepresentation, false, IProgressMonitor)@ to do a partial refresh.
* @org.eclipse.sirius.business.api.dialect.command.RefreshRepresentationsCommand.RefreshRepresentationsCommand(TransactionalEditingDomain, boolean, IProgressMonitor, DRepresentation...)@ and @RefreshRepresentationsCommand(TransactionalEditingDomain, boolean, IProgressMonitor, Collection<DRepresentation>)@ constructors has been added to specify a partial refresh or a full refresh.
* @org.eclipse.sirius.business.api.dialect.DRepresentationNotificationFilter@ has been added to have
a common precommit/postcommit notifications filter to tree/table dialect.
* @org.eclipse.sirius.tools.api.profiler.SiriusTasksKey.CHANGE_SWT_LINE_COLAPSE_STATE_KEY@ constant has been deprecated in favor of @SiriusTasksKey.CHANGE_SWT_LINE_COLLAPSE_STATE_KEY@ to fix a typo.
* @org.eclipse.sirius.business.api.color.AbstractColorUpdater.DEFAULT_RED_VALUE/DEFAULT_GREEN_VALUE/DEFAULT_BLUE_VALUE@ constants have been added to have access to default @RGBValues@'s values. This is used during refresh when there isn't any @ColorDescription@, for example in tree dialect where background color definition is optional.
* The @org.eclipse.sirius.business.api.tool.ToolFilterDescriptionListener.ToolFilterDescriptionListener()@ constructor now takes an @IInterpreter@ as additional parameter to capture the current interpreter and avoid calls to the @IInterpreterRegistry@ for each evaluation of the tool filter expressions.
* @org.eclipse.sirius.business.api.query.AirdResourceQuery.getAirDCrossReferenceAdapter()@ and @org.eclipse.sirius.business.internal.resource.AirdCrossReferencerAdapter@ have been removed. The adapter was here to customize GMF's own @org.eclipse.gmf.runtime.emf.core.util.CrossReferenceAdapter@. However considering the way Sirius uses GMF, this adapter is not needed.
h4. Changes in @org.eclipse.sirius.ui@
* In @org.eclipse.sirius.ui.business.api.session.UserSession@, the methods @selectSirius()@, @selectOnlySirius()@ and @findSiriusByName()@ have been renamed into @selectViewpoint()@, @selectOnlyViewpoint()@ and @findViewpointByName()@ to correct a wrong rebranding.
h4. Changes in @org.eclipse.sirius.common@
* The method @org.eclipse.sirius.common.tools.api.resource.ResourceSetSync.getResourceSetSync(TransactionalEditingDomain)@ has been added to look for a @ResourceSetSync@ without creating a new one if no synchronizer currently exists.
* The class @org.eclipse.sirius.common.tools.api.util.SmartAdapter@ has been removed as this mechanism proves to be inefficient. The only user of this mechanism was the @org.eclipse.sirius.tools.api.command.listener.IChangeListener@ which has also been removed.
* The class @org.eclipse.sirius.common.tools.api.ecore.WorkspaceEPackageRegistry@ has been moved to the @org.eclipse.sirius.editor@ plugin. @org.eclipse.sirius.common.tools.DslCommonPlugin.getWorkspaceEPackageRegistry@ has been removed. The same method has been added in @org.eclipse.sirius.editor.editorPlugin.SiriusEditorPlugin@.
* A new class @org.eclipse.sirius.common.tools.api.resource.ResourceMigrationMarker@ has been introduced for adopters. This marker can be attached to a Resource in order to indicate that some automatic migration *might* have change the structure of the model during the loading (with no isModified flag). Sirius will then use this information to consider saving the file even if there is no logical change.
h4. Changes in @org.eclipse.sirius.common.ui@
* The method @org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil.addSelectionListener(IWorkbenchPart, ISelectionListener)@ has been added to register a new selection listener to the site for the workbench part. This method looks for a @ISelectionService@ by calling @IServiceLocator.getService()@ on the site.
* The method @org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil.removeSelectionListener(IWorkbenchPart, ISelectionListener)@ has been added to unregister an existing selection listener from site for the workbench part. This method looks for a @ISelectionService@ by calling @IServiceLocator.getService()@ on the site.
h4. Changes in @org.eclipse.sirius.diagram@
* The @org.eclipse.sirius.diagram.ui.business.api.view.refresh@ package and all its content has been move into the @org.eclipse.sirius.diagram@ plug-in, under the name @org.eclipse.sirius.diagram.business.api.view.refresh@.
* A new extension point @org.eclipse.sirius.diagram.canonicalSynchronizerFactoryOverride@ has been defined. Its only intended implementer is the @org.eclipse.sirius.diagram.ui@ plug-in. It is used by the diagram dialect's core to delegate to the UI plug-in the canonical synchronizer logic, which depends on the UI.
* In @org.eclipse.sirius.diagram.business.api.refresh.CanonicalSynchronizer@, a new method @postCreation()@ has been added. It is called exactly once, right after a diagram has been created and synchronized the first time.
* @org.eclipse.sirius.diagram.description.style.EdgeStyleDescription@ metamodel class has three more features: @centeredSourceMappings@, @centeredTargetMappings@ and @AlwaysCenter@. Those features let the specifier determine for which mappings the edge source/target should be centered or whether the source/target should be systematically centered. The @endsCentering@ values are restricted by the new @org.eclipse.sirius.diagram.description.CenteringStyle@ enumeration.
* @org.eclipse.sirius.diagram.EdgeStyle@ metamodel class has now an attribute @centered@ of type @org.eclipse.sirius.diagram.description.CenteringStyle@, to determine whether the edge target or source ends should be centered.
h4. Changes in @org.eclipse.sirius.diagram.ui@
* The @org.eclipse.sirius.diagram.ui.business.api.view.refresh@ package and all its content has been move into the @org.eclipse.sirius.diagram@ plug-in, under the name @org.eclipse.sirius.diagram.business.api.view.refresh@.
* The method @org.eclipse.sirius.diagram.ui.business.internal.query.DNodeContainerQuery.getDefaultDimension()@ has been added to compute the default size of a DNodeContainer.
* The parameter @additionalFiguresForConflictDetection@ has been added to several methods of @org.eclipse.sirius.diagram.ui.tools.api.figure.locator.DBorderItemLocator@. This parameter is used in case of simultaneous border nodes moves. This list corresponds to the already known border nodes feedbacks. They are used to detect conflicts with other moved nodes.
* @org.eclipse.sirius.diagram.ui.business.api.query.ConnectionEditPartQuery@ now provides two new methods @isEdgeWithRectilinearRoutingStyle()@ and @isEdgeWithObliqueRoutingStyle()@ that respectively checks if an edge has a rectilinear routing style or an oblique routing style.
* @org.eclipse.sirius.diagram.ui.business.api.query.ConnectionQuery@ now provides two new methods @getAbsoluteBendpointsConstraint()@ and @getRelativeBendpointsConstraint()@ that returns an option of list of @Bendpoint@ of a connection whether they are respectively @AbsoluteBendpoint@ or @RelatveBendpoint@.
* @org.eclipse.sirius.diagram.ui.business.api.query.EdgeQuery@ also provides two new methods @isEdgeWithRectilinearRoutingStyle()@ and @isEdgeWithObliqueRoutingStyle()@ that respectively checks if an edge has a rectilinear routing style or an oblique routing style.
* @org.eclipse.sirius.diagram.ui.tools.api.requests.DistributeRequest@: A new @ChangeBoundsRequest@ to manage distribution of shapes.
* A constant @REQ_DISTRIBUTE@ has been added in @org.eclipse.sirius.diagram.ui.tools.api.requests.RequestConstants@ to identify the new type of request, @DistributeRequest@.
* Constants have been added in @org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds@ for the new drop down menu in tabbar and for the four new distribute actions.
* Constants have been added in @org.eclipse.sirius.diagram.ui.tools.api.image.DiagramImagesPath@ for the icon path of the four new distribute actions.
* A new method has been added in @org.eclipse.sirius.diagram.ui.business.api.view.SiriusLayoutDataManager@ to retrieve the opposite edge layout data of another edge layout data. An edge layout data stored in the incomingEdgeLayoutDatas ref of its parent data can have an opposite edge layout data in the outgoingEdgeLayoutDatas of the other ends.
* A Constant @org.eclipse.sirius.diagram.ui.tools.api.requests.RequestConstants.REQ_RESET_ORIGIN@ has been added to identify requests to get the ResetOrigin command.
* A new method @org.eclipse.sirius.diagram.ui.business.api.query.NodeQuery.isContainer()@ has been added to test whether the GMF node visualID corresponds to a ContainerEditPart.
h4. Changes in @org.eclipse.sirius.tree.ui@
* @org.eclipse.sirius.tree.ui.business.api.helper.TreeUIHelper.toContentHTMl()@ has changed of behavior: refresh of @DTree@ is now partial, i.e. not done for children of collapsed @DTreeItemContainer@. Consequently code calling @TreeUIHelper.toContentHTMl()@ must do a full refresh if children of collapsed @DTreeItemContainer@ must be displayed in returned HTML.
* @org.eclipse.sirius.tree.ui.business.api.helper.TreeUIHelper.toTreeDescriptor()@ same as for @TreeUIHelper.toContentHTMl()@
h4. Changes in @org.eclipse.sirius.tree@
* @org.eclipse.sirius.tree.business.api.interaction.DTreeUserInteraction.refreshContent(boolean, IProgressMonitor)@ has been added to specify if we want partial refresh or not.
* @org.eclipse.sirius.tree.business.api.command.DTreeItemExpansionChangeCommand@ has been added to execute an expansion/collapse of @DTreeItem@. On expansion a refresh of children is done.
h4. Changes in @org.eclipse.sirius.synchronizer@
* @org.eclipse.sirius.synchronizer.CreatedOutput.synchronizeChildren()@ has been added to allow doing a partial refresh of tree, i.e. to not refresh children of collapsed tree item.
* @org.eclipse.sirius.synchronizer.ModelToModelSynchronizer.update(CreatedOutput, boolean)@ has been added to specify if we want partial refresh or not.
h4. Changes in @org.eclipse.sirius.ecore.extender@
* @org.eclipse.sirius.ecore.extender.business.api.accessor.IMetamodelExtender.eRemoveInverseCrossReferences(EObject, ECrossReferenceAdapter, EReferencePredicate)@ has been added as a way to remove the inverse cross references without removing an @EObject@ from its container. For example it can be used to avoid the dangling references to an indirectly detached object without removing it from its already detached container and avoid additional REMOVE notifications. The method has been extracted from and is now used by @IMetamodelExtender.eDelete()@.
* @org.eclipse.sirius.ecore.extender.business.api.accessor.ModelAccessor.eRemoveCrossReferences(EObject, ECrossReferenceAdapter, EReferencePredicate)@ has been added as a way to remove the inverse cross references without removing an @EObject@ from its container after a check by the permission authority that all changeable feature to modify can be edited.
h4. Changes in @org.eclipse.sirius.ext.gmf.runtime@
* Several utilities have been added in @org.eclipse.sirius.ext.gmf.runtime.editparts.GraphicalHelper@:
** @applyZoomOnPoint(IGraphicalEditPart, Point)@: Apply the current zoom (of @IGraphicalEditPart@'s diagram) on the @Point@ and return the @Point@ for convenience.
** @applyInverseZoomOnPoint(IGraphicalEditPart, Point)@: Apply the inverse of the current zoom (of @IGraphicalEditPart@'s diagram) on the @Point@ and return the @Point@ for convenience.
** @appliedZoomOnRelativePoint(IGraphicalEditPart, Point)@ is now deprecated. Use @applyZoomOnPoint(IGraphicalEditPart, Point)@ instead.
** @getAnchorPoint(IGraphicalEditPart parent, Anchor anchor)@: Get the @Point@ (absolute draw2d coordinates) corresponding to this @Anchor@.
** @getAnchorPoint(IGraphicalEditPart parent, IdentityAnchor anchor)@: Get the @Point@ (absolute draw2d coordinates) corresponding to this @IdentityAnchor@.
** @getIntersection(Point, Point, IGraphicalEditPart, boolean)@: Get intersection between a line between lineOrigin and lineTerminus, and the rectangle bounds of the @IGraphicalEditPart@. If there are several intersections, the shortest is returned.
** @getAbsoluteBounds(IGraphicalEditPart)@: Get the absolute bounds of this @IGraphicalEditPart@.
** @getAbsoluteBoundsIn100Percent(IGraphicalEditPart)@: Get the absolute bounds of this @IGraphicalEditPart@ but adapted according to the current zoom level.
** @isSnapToGridEnabled(EditPart)@: Return true if the snapToGrid is enabled for the diagram containing this edit part, false otherwise.
h4. Changes in @org.eclipse.sirius.tests.swtbot.support@
* The method @SWTBotSiriusDiagramEditor.setSnapToGrid(boolean)@ has been added. It allows to disable or enable the snapToGrid option for this editor.
* The method @SWTBotSiriusDiagramEditor.setSnapToGrid(boolean, double, int)@ has been added. It allows to disable or enable the snapToGrid option for this editor. In case of activation, you can also set the grid spacing and the ruler units.
* The method @SWTBotSiriusDiagramEditor.disableSnapToGrid()@ has been deprecated, use @SWTBotSiriusDiagramEditor.setSnapToGrid(false)@ instead.
* The method @SWTBotSiriusDiagramEditor.adaptLocationToSnap(Point)@ has been added. It allows to adapt location according to SnapToHelper of the current editor.
* The method @SWTBotSiriusDiagramEditor.getDiagramEditPart()@ has been added. It allows to retrieve the diagram edit part of the current editor.
* In @ViewpointSelectionDialog@, the methods @selectViewpoints(String...)@ and @deselectViewpoints(String...)@ have been added to allow viewpoints selection and deselection from an array of @String@. These methods are shortcuts to the @selectViewpoints(Set<String>, Set<String>)@ method.
* Add method @changeLayerActivation(String)@ on @SWTBotSiriusDiagramEditor@ to offer the same service as similar method on @UIDiagramRepresentation@.
h4. Changes in @org.eclipse.sirius.tests.support@
* In @org.eclipse.sirius.test.support.SiriusTestCase@, the methods deactivateSirius(), initSirius() and findSirius() have been renamed into deactivateViewpoint(), initViewpoint() and findViewppoint() to correct a wrong rebranding.