Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: d319fdf34a3fa86780095e5932323c4ec264f140 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
h1. Release Notes for Sirius

{toc:style=disc|minLevel=2|maxLevel=2}

This document contains the release notes for all major releases of Sirius.

h2(#sirius2.0.8). Changes in Sirius 2.0.8 (from Sirius 2.0.7)

h3. API Changes

* The method @org.eclipse.sirius.ui.tools.api.views.modelexplorerview.resourcelistener.DefaultModelingProjectResourceListener.isPotentialSemanticResource2(IFile)@ has been added but directly in deprecated. Indeed, it is a part of a temporary fix, waiting for a more impacting fix made in Sirius 5.0.0. This method will be removed in Sirius 5.0.0. It is not intended to be used by clients.

h2(#sirius2.0.7). Changes in Sirius 2.0.7 (from Sirius 2.0.6)

Minor release without APi change.

h2(#sirius2.0.6). Changes in Sirius 2.0.6 (from Sirius 2.0.5)

Minor release without APi change.

h2(#sirius2.0.5). Changes in Sirius 2.0.5 (from Sirius 2.0.4)

h3. API Changes

h4. Changes in @org.eclipse.sirius@

* A new constructor has been added in @org.eclipse.sirius.tools.api.command.semantic.RemoveSemanticResourceCommand@ allowing giving the boolean value @removeReferencingResources@ to indicate if the referencing resources are also to remove. Note that, in @doExecute@ method, a cast is done on @DAnalysisSessionImpl@ to avoid API break. Moreover, the @doExecute@ implementation has changed. The constructor parameter @removeFromControlledResources@ is not taken into account anymore because a fix allows a better resource management whatever controlled or not the resource is.
* 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.

h2(#sirius2.0.4). Changes in Sirius 2.0.4 (from Sirius 2.0.3)

h3. API Changes

h4. Changes in @org.eclipse.sirius.common@

* 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@.

h2(#sirius2.0.3). Changes in Sirius 2.0.3 (from Sirius 2.0.0)

h3. Specifier-Visible Changes

* In Open menu, the menu is computed from the navigation tool label instead of its name/id.

h3. API Changes

h4. Changes in @org.eclipse.sirius.common@

* @org.eclipse.sirius.common.tools.api.util.ECrossReferenceAdapterWithUnproxyCapability@ is a specific kind of ECrossReferenceAdapter. 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).
* @org.eclipse.sirius.common.tools.api.util.LazyCrossReferencer@ now extends @ECrossReferenceAdapterWithUnproxyCapability@ and implements @resolveProxyCrossReferences(Resource)@.

h4. Changes in @org.eclipse.sirius.ui@

* The new constant @LINK_TO_VIEWPOINT_IMG@ has been added in @org.eclipse.sirius.ui.tools.api.image.ImagesPath@. It was previously in @org.eclipse.sirius.diagram.ui.DiagramImagesPath.LINK_TO_VIEWPOINT_IMG@. This is more coherent because the corresponding image is in core @org.eclipse.sirius.common.ui@ plugin. The old constant @DiagramImagesPath.LINK_TO_VIEWPOINT_IMG@ has been deprecated and will be removed in the next major version.

h2(#sirius2.0.0). Changes in Sirius 2.0.0 (from Sirius 1.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.

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.
 
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 ben 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.

h2(#sirius1.0.0). Changes in Sirius 1.0.0 (from Sirius 1.0.0M7)

h3. User-Visible Changes

* The ability to print table representations has been disabled for the 1.0.0 release due to an external dependency issue (see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=435204" target="_blank">bug #435204</a> for the details).

h3. Specifier-Visible Changes

* _Node_, _Container_ and _Edge_ mappings can not be created as direct children of a _Diagram Description_ anymore, the first level mappings must be created as direct children of a _Layer_.
* Mapping (resp. tools) can not be added as reused mapping (resp. tools) of a _Diagram Description_, they must be added to the reused mappings (resp. tools) of a _Layer_. The corresponding property sections will be shown only for old VSM with reused elements.

h3. API Changes

h4. Changes in @org.eclipse.sirius@

* In package @org.eclipse.sirius.business.api.control@,  the constructors of @SiriusControlCommand@ and @SiriusUncontrolCommand@ which assume implicitly that the session should be saved as part of the command are now deprecated. Use the alternative constructors (a new one has been added to @SiriusUncontrolCommand@) to say explicitly if the command should save the session. Most code should do the save themselves outside of the command, and thus pass @false@  to the @shouldEndBySaving@ argument of these constructors.
* In package @org.eclipse.sirius.business.api.session@, class @SavingPolicyImpl@ (the default session saving policy) now inherits from the new @AbstractSavingPolicy@ class. The new abstract class can be used as a base to implement different policies by simply overriding the @computeResourcesToSave()@ method.

h4. Changes in @org.eclipse.sirius.diagram.ui@

* To enable the resize of border nodes whose parent is a list, the @createLayoutEditPolicy@ and @getResizeBorderItemCommand@ methods have been extracted from  @org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramContainerPart@ and placed into @org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramElementContainerEditPart@. The @org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramListEditPart.createLayoutEditPolicy@ implementation has been removed.

h4. Changes in @org.eclipse.sirius.diagram.ui@

* @org.eclipse.sirius.editor.tools.api.menu.AbstractMenuBuilder.getLabel()@ visibility has been changed from protected to public.
* @org.eclipse.sirius.editor.tools.api.menu.CompositeMenuBuilder@ has been introduced to avoid duplicated menu. A @CompositeMenuBuilder@ is created to encapsulate @AbstractMenuBuilder@ with the same label.

h2(#sirius1.0M7). Changes in Sirius 1.0.0M7 (from Sirius 1.0M6)

h3. Specifier-Visible Changes

* The default value of the _Semantic Candidates Expression_ for Tree Items has changed from an empty string (meaning "any compatible element in the session") to @feature:eAllContents@ which only looks for compatible candidates inside the current element (recursively). The new behavior is more efficient on large models and consistent with what happens for diagrams. The change does not affect existing VSMs which continue to work as before whatever was the expression they used. Users who want the old behavior on specific mappings can simply remove the expression in the properties view.
* In the _Time Profiler_ view, the _Time (hh:mm:ss,ms)_ has been removed. It was redundant with the existing _Time (ms)_ column, harder to read/sort, and showed wrongly formatted results. 

h3. API Changes

h4(#separationOfDiagramSpecificConcept-step3). Move diagram.ecore in its own plugin

This milestone (Sirius 1.0M7) includes the third, and final, step towards a full separation of the diagram-specific stuff out of the core of Sirius (see "Step1":#separationOfDiagramSpecificConcept-step1 and "Step2":#separationOfDiagramSpecificConcept-step2 for more details).

All classes related to diagrams in @org.eclipse.sirius@ have been moved to @org.eclipse.sirius.diagram@.
All classes related to diagrams in @org.eclipse.sirius.ui@ have been moved to @org.eclipse.sirius.diagram.ui@.
All classes related to diagrams in @org.eclipse.sirius.editor@ have been moved to @org.eclipse.sirius.editor.diagram@.
In the same way, all classes related to UI in @org.eclipse.diagram@ have been moved to @org.eclipse.sirius.diagram.ui@. To simplify this step almost all classes of @org.eclipse.diagram@ have been moved in @org.eclipse.sirius.diagram.ui@ (and probably not only UI classes). These classes have been moved in @src-diag@ source folder to facilitate future work about moving some of these classes in @org.eclipse.diagram@ again.

Unlike, the "Step1":#separationOfDiagramSpecificConcept-step1, a simple "Organize Imports" operation is not enough. First, you will probably need to add dependencies to @org.eclipse.sirius.diagram@, @org.eclipse.sirius.diagram.ui@ or @org.eclipse.sirius.editor.diagram@ in the MANIFEST.MF of your projects that depend on Sirius diagram classes. The dependencies to add depend on what you really use.

* @ViewpointRegistry.getDiagramDescriptionMappingsRegistry()@ has been removed. You can now directly call @org.eclipse.sirius.diagram.business.api.componentization.DiagramDescriptionMappingsRegistry.INSTANCE.DialectServices@.
* New methods have been added to @IRepairParticipant@ to isolate specific diagram repair steps.
** @removeElements(DView, TransactionalEditingDomain, IProgressMonitor)@: Removes elements from the @DView@ that will be recreated by the refresh (called later).
** @cleanRepresentations(EList<DRepresentation>)@: Cleans representations (specific representation states like filters) and eventually returns some of them if they need to be removed.
** @refreshRepresentations(DAnalysis, DView)@: This method is only implemented by the diagram participant. To simplify work for this step, this method manages core and diagram elements. It should be clean up once the split will be done.
* To break the dependencies from Core to Diagram, several services have been added to:
** @DialectServices@, with default implementations in @AbstractRepresentationDialectServices@:
*** @createTask(CommandContext, ModelAccessor, ModelOperation, Session, UICallBack)@: Creates a new task corresponding to the ModelOperation. Only needed for ModelOperation specific to one dialect.
*** @handles(RepresentationExtensionDescription)@: Tells if the current dialect handles the given @RepresentationExtensionDescription@.
*** @invalidateMappingCache()@: Allows each dialect to clean and compute again its proper mapping cache.
*** @allowsEStructuralFeatureCustomization(EObject)@: allows dialects to indicate if they allow EStrucuralFeaturesCustomization for the given VSM element. It is currently supported for style descriptions in diagrams only.
** @DialectUIServices@
*** @canHandle(RepresentationDescription)@ and @canHandle(RepresentationExtensionDescription)@: tell whether the dialect is able to handle the given representation description or extension description.
*** @completeToolTipText(String, EObject)@ allows the dialect to customize the tooltip displayed in a property section of a given VSM element.
** @DialectUIManager@
*** @canExport(DRepresentation, ExportFormat)@: New method returning true if at least one dialect is able to export this representation to this format, false otherwise.
** @IDiagramDescriptionProvider@
*** @completeToolTipText(String, EObject)@ allows the diagram type to customize the tooltip displayed in a property section of a given VSM element. @SequenceDiagramTypeProvider@ implements this method to mention some Sequence specific variable available in core and diagram tool preconditions in the context of a Sequence diagram.
* All methods of @SiriusHelper@ concerning diagrams have been moved to @org.eclipse.sirius.diagram.business.api.helper.SiriusDiagramHelper@.
* All methods of @SiriusUtil@ concerning diagrams have been moved to @org.eclipse.sirius.diagram.business.api.helper.SiriusDiagramUtil@.
* All methods of @org.eclipse.sirius.business.api.query.EObjectQuery@ concerning diagrams have been moved to @org.eclipse.sirius.diagram.business.api.query.EObjectQuery@.
* <a href="https://wiki.eclipse.org/Sirius/Modularization#Library_Extensions" target="_blank">Library Extensions</a>:
** All methods depending only on draw2d of @org.eclipse.sirius.diagram.ui.tools.api.draw2d.ui.figures.FigureUtilities@ have been moved in @org.eclipse.sirius.ext.draw2d.figure.FigureUtilities@
** @fr.obeo.dsl.viewpoint.diagram.ui.tools.api.layout.GraphicalHelper@ has been moved to @org.eclipse.sirius.ext.gmf.runtime.editparts.GraphicalHelper@.
** @org.eclipse.sirius.diagram.part.SiriusDiagramEditorPlugin@ has been renamed into @org.eclipse.sirius.diagram.DiagramPlugin@. This plugin is not a UI plugin any more, @org.eclipse.sirius.diagram.ui.provider.DiagramUIPlugin.getPlugin()@ should be used instead for UI related aspects. For example @DiagramUIPlugin.getPlugin().getPreferenceStore()@ should be used instead of @DiagramPlugin.getDefault().getPreferenceStore()@ or @SiriusDiagramEditorPlugin.getInstance().getPreferenceStore()@.
* @DeleteFromDiagramContributionItem@ and @SetStyleToWorkspaceImageContributionItem@ have been merged into @SiriusActionBarActionContributionItem@
* Images
** Images of @org.eclipse.sirius.diagram@ have been moved to @org.eclipse.sirius.diagram.ui@. In your code, you should replace @SiriusDiagramEditorPlugin.getInstance().getImage()@ and @DiagramPlugin.getInstance().getImage()@ by @DiagramUIPlugin.getPlugin().getImage()@. That is the case for all methods concerning images in @DiagramPlugin@ (previously named @SiriusDiagramEditorPlugin@).
** Some images of @org.eclipse.sirius.ui@ have been moved to @org.eclipse.sirius.diagram.ui@, the corresponding constants in @org.eclipse.sirius.ui.tools.api.image.ImagesPath@ have been moved in @org.eclipse.sirius.diagram.ui.tools.api.image.DiagramImagesPath@.
* The method @static void refreshSelection(DiagramElementMapping)@ from @org.eclipse.sirius.editor.tools.api.menu.AbstractEObjectRefactoringAction@ is not available anymore.
* Preferences
** @org.eclipse.sirius.business.api.preferences.SiriusPreferencesKeys.PREF_AUTO_PIN_ON_CREATE@ has been moved to @org.eclipse.sirius.diagram.tools.api.preferences.SiriusDiagramPreferencesKeys@.
* Ids
** The Sirius diagram editor id is now @org.eclipse.sirius.diagram.ui.part.SiriusDiagramEditorID@
** Its property contributor is now @org.eclipse.sirius.diagram.ui@. This id has to be changed in plugins providing additional property sections to the Sirius diagram editor (created with EEF for example).

h5. Moved extension points

Several extension points have been moved:
* from @org.eclipse.sirius@ to @org.eclipse.sirius.diagram@. You should change the id of the following extension point in your plugin.xml (@org.eclipse.sirius.xxxx@ replaced by @org.eclipse.sirius.diagram.xxxx@):
** diagramTypeProvider
* from @org.eclipse.sirius.diagram@ to @org.eclipse.sirius.diagram.ui@. You should change the id of the following extension points in your plugin.xml (@org.eclipse.sirius.diagram.xxxx@ replaced by @org.eclipse.sirius.diagram.ui.xxxx@):
** diagramIdentifierProvider
** imageSelector
** layoutDataManager
** layoutProvider
** styleConfigurationProvider
** viewOrderingProvider

h4. Changes in @org.eclipse.sirius.common@

* In class @org.eclipse.sirius.common.tools.api.util.EclipseUtil@, the method @getExtensionPlugins(Class<T>, String, String, String, Predicate<String>)@ has been removed from API to avoid exposing a Guava-specific @Predicate@. Instead, use the new method @getExtensionPluginsByKey()@ which returns all the extensions organized by the specified key, and filter the result according to whatever critera the @Predicate@ tested on the key.

h4. Changes in @org.eclipse.sirius@

* @org.eclipse.sirius.business.api.query.URIQuery.isSiriusEnvironmentURI@ has been replaced by
** @isSiriusCoreEnvironmentURI@ which checks that the given resource is the Sirius core Environment.xmi file.
** and @isEnvironmentURI@ which checks that the given resource has an @environment@ uri scheme.
* In @org.eclipse.sirius.business.api.dialect.DialectManager@
** the setter @setRefreshActivatedOnRepresentationOpening(boolean)@ has been removed as the refresh on opening should be managed from the corresponding preference @org.eclipse.sirius.ui.business.api.preferences.SiriusUIPreferencesKeys.PREF_REFRESH_ON_REPRESENTATION_OPENING@.
** @isRefreshActivatedOnRepresentationOpening()@ has been moved into @org.eclipse.sirius.ui.business.api.dialect.DialectUIManager@ as it refers to an UI behavior.
* The @DRepresentation.createContents()@ (both variants) and @DRepresentation.updateContents()@ EOperations have been removed. They were not used anywhere.
* The @org.eclipse.sirius.business.api.modelingproject.ModelingProject.MODELING_PROJECT_PREDICATE@ constant has been removed to reduce Sirius's exposure of Guava'specific types. Use the equivalent @ModelingProject.hasModelingProjectNature()@ method instead.
* The method @org.eclipse.sirius.business.api.query.EObjectQuery.getInverseReferences(Predicate<Setting>)@ has been removed from API to avoid exposing a the Guava-specific @Predicate@ type.
* In class @org.eclipse.sirius.business.api.dialect.description.AbstractInterpretedExpressionQuery@, the protected methods @appendAllLocalVariableDefinitions()@ and @appendEditMaskVariables()@ now take a @Map<String, Collection<String>>@ instead of a Guava-specific @Multimap@. The new protected method @addDefinition()@ can be used to make it easier to add entries to the map. Subclasses in Sirius have been updated to match the new signature.
* The message @org.eclipse.sirius.business.api.modelingproject.ModelingProject.ZERO_REPRESENTATIONS_FILE_FOUND_IN@ has been removed without replacement. It was not really an API constant.
* The behavior of method @org.eclipse.sirius.business.api.modelingproject.ModelingProject.getMainRepresentationsFileURI()@ has changed. It now marks this project as invalid and adds a marker on it, if it is considered as invalid (no or many representations files).
* A new query @org.eclipse.sirius.business.api.query.IFileQuery@ has been added with a method to check if file is handled by an opened session, ie:
** a semantic resource of this session,
** a referenced sub representations file,
** a controlled resource.
* The @EObjectLink@ class has been removed from the metamodel. It was not used anywhere. 
* In interface @org.eclipse.sirius.business.api.dialect.description.IInterpretedExpressionTargetSwitch@, the @getFirstRelevantContainerFinder()@ method which returned a Guava @Function<EObject, EObject>@ has been replaced with the new method @getFirstRelevantContainer(EObject)@ which directly returns the result of applying the previously returned function. All implementers in Sirius itself have been updated. 
* The constructor @org.eclipse.sirius.business.api.dialect.description.DefaultInterpretedExpressionTargetSwitch(EStructuralFeature, IInterpretedExpressionTargetSwitch, Function<EObject, EObject>)@ has been removed to avoid exposing a the Guava-specific @Predicate@ type. Sub-classes which used it with a non-null @Function@ should override the @getFirstRelevantContainer(EObject)@ method to return the result of that function instead.
* The @org.eclipse.sirius.business.api.helper.task.AbstractDeleteDRepresentationElementTask@ constructor which took a Guava @Predicate<EReference>@ now takes an equivalent @EReferencePredicate@ (from @org.eclipse.sirius.ext.emf@).
* The constants @DSEMANTICDECORATOR_REFERENCE_TO_IGNORE_PREDICATE@ and @NOTATION_VIEW_ELEMENT_REFERENCE_TO_IGNORE_PREDICATE@ from @org.eclipse.sirius.business.internal.session.danalysis.DanglingRefRemovalTrigger@ are now instances of @EReferencePredicate@ instead of Guava's @Predicate<EReference>@.
* In class @org.eclipse.sirius.business.api.session.SessionEventBroker@, the method @addlLocalTrigger()@ now takes a @org.eclipse.emf.transaction.NotificationFilter@ instead of a Guava-specific @Predicate<Notification>@ as first argument.
* The constant @org.eclipse.sirius.tools.api.ui.RefreshEditorsPrecommitListener.IS_IMPACTING@ is now a @NotificationFilter@ instead of a @Predicate@, to match the API change in @SessionEventBroker.addLocalTrigger()@.
* The @org.eclipse.sirius.business.api.session.Session@ interface has a new @getSavingPolicy()@ method which gives access to the currently configured saving policy.

h4. Changes in @org.eclipse.sirius.diagram@

* The references @DNode.ownedDetails@ and @DDiagramElementContainerImpl.ownedDetails@ have been removed from the metamodel, along with the corresponding implementation methods. They were not used in practice.
* The @DDiagramLink@ EClass has been removed from the meta-model, along with the corresponding generated Java code. It was not used in practice.
* The @DDiagram.clean()@ EOperation has been removed. It was deprecated and not used anymore. All the Java code which existed only to help in the implementation of that operation has also been removed. This includes:
** The @org.eclipse.sirius.diagram.tools.api.validation.constraint.AbstractDDiagramConstraint.activate()@ and @deactivate()@ methods.
** The @org.eclipse.sirius.business.api.helper.SiriusHelper.unSetHarmlessDanglingReferences()@ method.
** The @org.eclipse.sirius.tools.api.profiler.SiriusTasksKey.CLEANING_NODES_KEY@ constant.
* The @DSemanticDiagram.getRootContents()@ method (which was deprecated) has been removed.
* The @DDiagram.findDiagramElements()@ EOperation has been removed. It was deprecated and always returned an empty list if called.
* The @DDiagram.info@ attribute has been removed. It was not used anywhere.
* The @DDiagram.subDiagram@ reference has been removed. It was not used anywhere.
* The @DDiagramElement.isFold()@ EOperation has been removed. It was deprecated and edge folding has long been implemented using different mechanisms.
* In the @ContainerMapping@ type, the following EOperations have been removed: @createContainer()@, @updateContainer()@, and @getNodesCandidate()@. Although their usage is highly discouraged, if you really need to you can currently use the corresponding methods in the internal @ContainerMappingHelper@ instead (use @SiriusPlugin.getDefault().getInterpreterRegistry().getInterpreter(semanticElement)@ to obtain the @IInterpreter@ those methods need). As with all internal code, there is no guarantee these methods will still exist in future versions.
* The @AbstractNodeMapping.getDNodesDone()@ EOperation has been removed. It was not used anywhere.
* In the @NodeMapping@ type, the @getBestStyle()@ and @createListElement()@ EOperations have been removed. Although their usage is highly discouraged, if you really need to you can currently use the corresponding methods in the internal @MappingHelper@ instead (use @SiriusPlugin.getDefault().getInterpreterRegistry().getInterpreter(semanticElement)@ to obtain the @IInterpreter@ these methods need). As with all internal code, there is no guarantee these methods will still exist in future versions.
* In interface @org.eclipse.sirius.diagram.business.api.diagramtype.IDiagramDescriptionProvider@, the methods @allowsPinUnpin()@, @allowsHideReveal@, and @allowsCopyPasteLayout()@  have been modified to take directly the @DDiagramElement@ to test (and return a @boolean@) instead of returning a Guava-specific @Predicate@ which then had to be invoked.
* In class @org.eclipse.sirius.diagram.ui.tools.api.layout.PinHelper@, .the method @allowsPinUnpin()@ has been modified to take a @DDiagramElement@ directly and return a @boolean@, instead of taking a @DDiagram@ and return a Guava-specific @Predicate@ which then had to be invoked on actual @DDiagramElements@..
* The interface @org.eclipse.sirius.diagram.ui.edit.api.part.ISiriusEditPart@ has been added and is now part of all the type hierarchy of any EditPart provided by Sirius. This allows a simple @instanceof ISiriusEditPart@ to discriminate the edit part instances coming from Sirius.

h4. Changes in @org.eclipse.sirius.diagram.sequence@

* The @org.eclipse.sirius.diagram.sequence.util.SiriusFunctions@ class has been removed. It was not used anywhere.
* The @org.eclipse.sirius.diagram.sequence.util.NotificationQuery@ class has been removed. It had been exposed by mistake.
* The @org.eclipse.sirius.diagram.sequence.business.internal.util.NotationPredicate@ class has been removed from API, to reduce Sirius's exposure of Guava'specific types.
* All the static methods in @org.eclipse.sirius.diagram.sequence.util.Range@ which returned Guava-specific types (@Function@ or @Ordering@) have been removed from API.
* @org.eclipse.sirius.diagram.sequence.template.AbstractRule@ no longer inherits from Guava's @Function@ interface, but from the news ad-hoc @org.eclipse.sirius.diagram.sequence.template.Transformer@ interface instead, which is functionally equivalent.

h4. Changes in @org.eclipse.sirius.ui@

* @org.eclipse.sirius.ui.business.api.preferences.DesignerUIPreferencesKeys@ has been renamed into @org.eclipse.sirius.ui.business.api.preferences.SiriusUIPreferencesKeys@
* Methods @getMissingDependencies()@ and @getMissingDependenciesErrorMessage()@ from @org.eclipse.sirius.ui.business.api.viewpoint.ViewpointSelection@ now use @Map<String, Collection<String>>@ instead of Guava's @Multimap@.
* @org.eclipse.sirius.ui.tools.api.project.ModelingProjectManager.initializeAfterLoad()@ method has been removed. There is no replacement for this method documented as "Not intended to be used by client".

h4. Changes in @org.eclipse.sirius.ecore.extender@

* All variants of @eDelete()@ methods which took a @Predicate<EReference>@ in types @ModelAccessore@, @IMetamodelExtender@ and @CompositeMetamodelExtender@ now take an equivalent @EReferencePredicate@ (from @org.eclipse.sirius.ext.emf@).
* The @ModelUtils.resolveAll(ResourceSet set, EReferencePredicate)@ now takes an @EReferencePredicate@ instead of a Guava-specific @Predicate<EReference>@.

h4. Changes in @org.eclipse.sirius.ext.base@

* The @org.eclipse.sirius.ext.base.Options.isSome()@ method has been removed to reduce Sirius's exposure of Guava'specific types. Use @Option.some()@ directly instead.
* @org.eclipse.sirius.ext.base.relations.Relation@ no longer inherits from @com.google.common.base.Function@, but keeps the same API otherwise.

h4. Changes in @org.eclipse.sirius.synchronizer@

* The @org.eclipse.sirius.synchronizer.Mapping.IS_CHECK_ONLY@ constant has been removed to reduce Sirius's exposure of Guava'specific types. Use @!Mapping.getCreator().some()@ instead.
* The @Maybe@ and @MaybeFactory@ types have been removed, and all their uses in @org.eclipse.sirius.synchronizer@ converted to the equivalent @Option@ and @Options@ types from @org.eclipse.sirius.ext.base@.
* The internal class @MappingHiearchy.HiearchyIterator@ has been removed from API.

h4. Changes in @org.eclipse.sirius.tests.support@

* The @shouldReloadSession@ boolean parameter has been removed from @org.eclipse.sirius.tests.support.api.SiriusTestCase.disableUICallBackOnDialectEditor(DialectEditor)@, it was not used and could let the tester think he can change the reload behavior from the dialog factory.
* @org.eclipse.sirius.tests.swtbot.support.api.AbstractSiriusSwtBotGefTestCase.refreshDiagram()@ has been removed. This method did not handle the non dynamic tabbar and was a duplicate of manualRefresh(). Callers must select the diagram before the call,the click(0,0) instruction was not sufficient in several cases (for example if there is a node/container in (0,0)).
* @org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotDesignerEditor@ has been renamed into @SWTBotSiriusDiagramEditor@.
* @org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotDesignerGefViewer@ has been renamed into @SWTBotSiriusGefViewer@.
* @org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotDesignerHelper@ has been renamed into @SWTBotSiriusHelper@.
* Methods @AbstractSiriusSwtBotGefTestCase.openRepresentation@ with @SWTBotDesignerEditor@ as returned type have been renamed into @openDiagram@, marked as deprecated and replaced with methods returning a @SWTBotEditor@. You can now use methods @openRepresentation@ for DTree or DTable. If the @expectedRepresentationClass@ is @DDiagram.class@, the returned type will be a @SWTBotSiriusDiagramEditor@.
* Method @org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusHelper.getDesignerEditor(String)@ has been renamed into @getSiriusDiagramEditor@.
* Add @SWTBotSiriusHelper.getSiriusEditor(String)@ to return the @SWTBotEditor@ (diagram, tree or table editor) with the given name. The name is the name as displayed on the editor's tab in Eclipse. In case of multiple editors with the same fileName, the same method with an additional parameter, the index, has been added @SWTBotSiriusHelper.getSiriusEditor(String, int)@.
* Change the behavior of @org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor.zoom(ZoomLevel)@ to directly change the zoom level of the current diagram editor without trying to change it from the zoom combo in the tabbar.
* Add @org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor.zoomFromToolbar(ZoomLevel)@ to add possibility to explicitly change the zoom level from the tabbar.

h2(#sirius1.0M6). Changes in Sirius 1.0.0M6 (from Sirius 1.0M5)

h3. API Changes

h4(#tests). High-level API for Automated Tests Using JUnit and SWTBot

Starting from version 1.0.0M6, Sirius includes high-level APIs to help creating automated tests using JUnit and/or SWTBot. These can be used either to test Sirius itself or to test Sirius-based modelers. These APIs are provided by two plug-ins:
* @org.eclipse.sirius.tests.support@: support code for JUnit (plug-in) tests using Sirius.
* @org.eclipse.sirius.tests.swtbot.support@: support code for SWTBot tests using Sirius.

Both plug-ins are only available if you install the new @org.eclipse.sirius.tests@ feature.

h4(#separationOfDiagramSpecificConcept-step2). Move diagram-specific EPackages into their own diagram.ecore model

This milestone (Sirius 1.0M6) includes the second step towards a full separation of the diagram-specific stuff out of the core of Sirius (see "Step1":#separationOfDiagramSpecificConcept-step1 for more details).

This step is less impactful on your code than the first step. Nevertheless, some missed classes during first step have moved during this step:
* Remove @DDiagramSet@ and its corresponding reference from @DRepresentationContainer@: No longer needed
* @DragAndDropTarget@, @DragAndDropTargetDescription@ and @ContainerDropDescription@ have been moved to diagram EPackage.
* @viewpoint/diagram/description/validation@ EPackage has been moved to @viewpoint/description/validation@: revert what was done in step 1 by mistake.

The existing VSM (@*.odesign@) and representations file (@*.aird@) are automatically migrated.

Warning: If you have some code based on the root EPackage of an EClass, it may be necessary to adapt it. Example:

pre. 
EPackage rootPackage = (EPackage) EcoreUtil.getRootContainer(element.eClass());
if (rootPackage != null && rootPackage.getNsURI().equals(ViewpointPackage.eINSTANCE.getNsURI())) {

should be adapted in

pre. 
EPackage rootPackage = (EPackage) EcoreUtil.getRootContainer(element.eClass());
if (rootPackage != null && rootPackage.getNsURI().equals(DiagramPackage.eINSTANCE.getNsURI())) {

if @element@ is a Diagram concept.

h4. Changes in @org.eclipse.sirius@

* The @org.eclipse.sirius.tools.api.command.IDiagramCommandFactory.setAutoRefreshDView()@ method was removed. It had no effect, any code which called it can simply be removed.
* The deprecated interface @org.eclipse.sirius.business.api.componentization.ViewpointRegistryListener@ has been removed. Use @org.eclipse.sirius.business.api.componentization.ViewpointRegistryListener2@ instead.
* @org.eclipse.sirius.business.api.session.SessionManagerListener2@ and @org.eclipse.sirius.business.api.session.SessionManagerListener@ have been merged into @org.eclipse.sirius.business.api.session.SessionManagerListener@ which is not deprecated any more.
* The deprecated method @org.eclipse.sirius.business.api.session.SessionManagerListener.notifyUpdatedSession(Session)@ has been removed. Use @org.eclipse.sirius.business.api.session.SessionManagerListener.notify(Session, int)@ instead.
* @org.eclipse.sirius.business.api.helper.task.RemoveDanglingReferencesTask@ and @org.eclipse.sirius.business.api.helper.task.RemoveSemanticDanglingReferenceTask@ and @org.eclipse.sirius.tools.api.command.AbstractCommandFactory.addRemoveDanglingReferencesTask()@ have been removed. These tasks were added to in several commands to remove dangling references at the end. They are now replaced by a specific @ModelChangeTrigger@ to detect the detachment of @EObject@ and remove the dangling references. It is added to the @SessionEventBroker@ during the session opening.
* @org.eclipse.sirius.tools.api.ui.RefreshEditorsPrecommitListener@ was a precommit @ResourceSetListener@, it became a @ModelChangeTrigger@ and is now added to the SessionEventBroker during the session opening. This modification allows to correctly manage the order of our different precommit commands. It is triggered after the dangling reference remover.
* @org.eclipse.sirius.tools.api.command.semantic.RemoveDanglingReferences@ is no more used in Sirius commands. It can still be used to clean a resourceSet or a resource (repair tool, import/export, ..). It also has a new static method @removeDanglingReferences(Resource)@ to remove dangling references as an entry point.
* The protected predicate @org.eclipse.sirius.business.api.helper.task.AbstractDeleteDRepresentationElementTask.DSEMANTICDECORATOR_REFERENCE_T0_IGNORE_PREDICATE@ has been removed, the internal predicate @DanglingRefRemovalTrigger.DSEMANTICDECORATOR_REFERENCE_T0_IGNORE_PREDICATE@ is used instead.
* The @org.eclipse.sirius.business.api.helper.SiriusUtil.findDiagram(EObject)@ method has been removed. Use the equivalent @new org.eclipse.sirius.business.api.query.EObjectQuery(element).getParentDiagram()@ instead.

h4. Changes in @org.eclipse.sirius.ui@

* The @org.eclipse.sirius.ui.tools.api.perspectives.DesignPerspective@ interface has been moved to @org.eclipse.sirius.editor.tools.api.perspectives@ package in @org.eclipse.sirius.editor@ plugin. This perspective is now provided through the @org.eclipse.sirius.editor@ plugin. The perspective ID is kept unchanged for a compatibility reason.
* The deprecated class @org.eclipse.sirius.ui.tools.api.dialogs.ExportRepresentationsAsImagesDialog@ has been removed. Use @org.eclipse.sirius.ui.tools.api.dialogs.ExportSeveralRepresentationsAsImagesDialog@ instead.

h4. Changes in @org.eclipse.sirius.diagram@

* @org.sirius.diagram.graphical.edit.policies.AirNoteAttachmentEditPolicy@ has been removed, with the new dangling reference management, it became identical to its superclass, use @org.eclipse.gmf.runtime.diagram.ui.internal.editpolicies.ConnectionEditPolicy@ instead. Its provider @org.sirius.diagram.graphicalou .edit.policies.AirNoteAttachmentEditPolicyProvider@ and declaration in plugin.xml have been removed too.

h4. Changes in @org.eclipse.sirius.table@

* The @org.eclipse.sirius.table.tools.api.command.ITableCommandFactory.setAutoRefreshDTable()@ method was removed. It had no effect, any code which called it can simply be removed.


h4. Changes in @org.eclipse.sirius.tree@

* The @org.eclipse.sirius.tree.business.api.command.ITreeCommandFactory.setAutoRefreshDTree()@ method was removed. It had no effect, any code which called it can simply be removed.

h2(#sirius1.0M5). Changes in Sirius 1.0.0M5 (from Sirius 1.0M4)

h3. User-Visible Changes

* The table csv export has been improved to handle cropped label. In some specific cases, the cell label is automatically cropped and '...' is concatenated to the resulting value. This cropped displayed label was previously exported, now the complete semantic value is exported.

h3. API Changes

h4. Library Extensions

This milestone (Sirius 1.0M5) introduces several new plug-ins, collectively called "library extensions". They are all named @org.eclipse.sirius.ext.LIB@, where @LIB@ is the name of a library or component Sirius depends on. These plug-ins are used to isolate generic code which extends existing libraries with features and helpers needed for Sirius, but which do not depend on Sirius themselves. A relatively large part of the code in Sirius is of this kind: things that could/should be in EMF, GMF, Eclipse itself, etc. and which are not Sirius-specific but which make it easier to build Sirius itself. Sirius 1.0M5 introduces several of these library extensions and starts to fill them with existing classes which were "hidden" inside Sirius and are now exposed in library extensions. Most of the time, existing code which used the Sirius API will only need to:
# Add the necessary @Import-Package@ (recommended) or @Require-Bundle@ to depend on the library extension(s) where the code they use now lives;
# Perform a simple "Organize Imports" operation, which should find the classes and interfaces in their new locations.

h4(#separationOfDiagramSpecificConcept-step1). Move diagram-specific EClasses into a separate EPackage

For historical reasons, the core Sirius metamodels defined in viewpoint.ecore contain both generic (dialect-independant like Viewpoint, RepresentationDescription, DAnalysis...) concepts and diagram-specific ones (e.g. DNode, EdgeStyle, ContainerCreationDescription...). The table and tree metamodels are more cleanly separated.
This milestone (Sirius 1.0M5) includes the first step towards a full separation of the diagram-specific stuff out of the core of Sirius. So many EClasses have been moved.

Most of the time, existing code which used these Sirius EClasses will only need to perform a simple "Organize Imports" operation, which should find the classes and interfaces in their new locations.
The "Organize imports" is not sufficient in case of imported classes existing several time in different packages (@EFactory@ classes for example with @DescriptionFactory@, or @EPackage@ classes for example with @DescriptionPackage@). And in some cases @ViewpointFactory@ (and @ViewpointPackage@) will have to be replaced by @DiagramFactory@ (and @DiagramPackage@).

The @Switch@ classes if overridden also require a particular attention.

The existing VSM (@*.odesign@) and representations file (@*.aird@) are automatically migrated.
Warning: Nevertheless, if you reference these Sirius concepts with the EPackage qualifier in your VSM (@*.odesign@), in interpreted expressions for example, you must change @viewpoint@ in @diagram@. For example @viewpoint::DDiagramElement@ becomes @diagram::DDiagramElement@.

The impacted EPackages are :
* @viewpoint@ : some of its EClasses have been moved to @viewpoint/diagram@
* @viewpoint/description@ : some of its EClasses have been moved to @viewpoint/diagram/description@
* @viewpoint/description/style@ : some of its EClasses have been moved to @viewpoint/diagram/description/style@
* @viewpoint/description/tool@ : some of its EClasses have been moved to @viewpoint/diagram/description/tool@
* @viewpoint/description/filter@ : this EPackage has been moved to @viewpoint/diagram/description/filter@
* @viewpoint/description/validation@ : this EPackage has been moved to @viewpoint/diagram/description/validation@
* @viewpoint/description/concern@ : this EPackage has been moved to @viewpoint/diagram/description/concern@

h4. Changes in @org.eclipse.sirius@

* The @org.eclipse.sirius.business.api.migration.resource.StringCouple@ class has been removed.
* The @org.eclipse.sirius.business.api.dialect.description.IInterpretedExpressionTargetSwitch.getFirstRelevantContainerFinder@ method has been added to let each dialect use its own @Function@ to retrieve the first relevant container of a given @EObject@, i.e. the first container from which a domain class can be determined.

h4. Changes in @org.eclipse.sirius.common.ui@

* The @org.eclipse.sirius.common.ui.business.api.interpreter.VariableContentProvider@ class has been removed.
* The @org.eclipse.sirius.common.ui.tools.api.util.ISimpleAction@ interface has been removed.
* The method @org.eclipse.sirius.common.ui.tools.api.dialog.RenameDialog.setText()@ has been removed. You can now directly call  @org.eclipse.sirius.common.ui.tools.api.dialog.RenameDialog.setDefaultNewName()@ which has been added to set the default new name to display. Note that this method must be called before Dialog.create().
* The overriden method @org.eclipse.sirius.common.ui.tools.api.dialog.RenameDialog.setTitle()@ has been removed. Note that the inherited @setTile()@ method is still available but must be called before Dialog.create().

h4. Changes in @org.eclipse.sirius.table@

* The @org.eclipse.sirius.table.business.api.query.DCellQuery.getExportableLabel()@ method has been added to compute the label to export when the label is cropped by the @org.eclipse.emf.edit.provider.ItemPropertyDescriptor.ItemDelegator@.

h4. Changes in @org.eclipse.sirius.table.ui@

* The @org.eclipse.sirius.table.ui.business.api.helper.TableUIHelper@ now uses @DCellQuery.getExportableLabel()@ to compute the cell labels used in HTML export.

h4. Changes in @org.eclipse.sirius.ui@

* The long-deprecated @org.eclipse.sirius.ui.business.api.session.DeprecatedIEditingSession@ interface has been removed. Use the corresponding methods from @org.eclipse.sirius.ui.business.api.session.IEditingSession@ instead.

h2(#sirius1.0M4). Changes in Sirius 1.0.0M4 (from Sirius 0.9)

h3. User-Visible Changes

* The ability to print table representations, which had been disabled for the 0.9 release, has been re-enabled.

h3. API Changes

Sirius 1.0.0M4 includes a lots of API-breaking changes, as part of a global effort to improve the quality of the Sirius internals. In this milestone in particular, most of the APIs which were marked as deprecated in previous versions of Sirius (and before that of Viewpoint) have been either removed (if a replacement exists) or marked as non-deprecated (if no replacement exists yet).

h4. Changes in @org.eclipse.sirius.common@

* Two deprecated constructors have been removed in @FeatureEditorDialog@. Use the remaining constructor instead, which provides proper behavior for both unique and non-unique features.
* The deprecated method @IEditingDomainFactory.createEditingDomain()@ has been removed. Use the (inherited) @createEditingDomain(ResourceSet)@ instead, which ensures correct behavior for all kinds of models (Xtext for example).
* The deprecated field @org.eclipse.sirius.common.tools.api.listener.Notification.FOLD@ has been removed. It was never used by Sirius itself, so if your code tried to listen to this kind of notification it was never actually called and can be safely removed.
* The deprecated methods @getExtensionPlugins()@ and @getElementsProvidedByPlugin@ from @EcliseUtil@ have been removed. If you need this kind of functionality, use the Eclipse APIs directly instead.
* The deprecated fields @COLUMN_SEMANTIC@ and @LINE_SEMANTIC@ of @IInterpreterSiriusVariables@ have been removed. Use the constants of @org.eclipse.sirius.table.tools.api.interpreter.IInterpreterSiriusTableVariables@ instead.

h4. Changes in @org.eclipse.sirius@

* The deprecated method @DialectServices.initRepresentations(Viewpoint, EObject)@ has been removed. Use the version which takes an additional @IProgressMonitor@ instead.
* The deprecated constructor in @CreateRepresentationCommand@ has been removed. Use the alternative constructor which takes an additional @IProgressMonitor@ instead.
* The two deprecated constructors in @RefreshRepresentationCommand@ have been removed. Use the alternative constructors which take an additional @IProgressMonitor@ instead.
* The deprecated method @DisplayService.computeVisibility(Session, DDiagram, DDiagramElement)@ has been removed. Use the variant @computeVisibility()@ which takes a @DiagramMappingsManager@ instead of a @Session@.
* The following deprecated methods in @FilterService@ have been removed:
** @activateCache()@: use @DisplayService.activateCache()@ instead.
** @deactivateCache()@: use @DisplayService.deactivateCache()@ instead.
** @activate()@: use @DisplayService.activate()@ instead.
** @deactivate()@: use @DisplayService.deactivate()@ instead.
** @isActivated()@: use @DisplayServiceManager.INSTANCE.getMode() == DisplayMode.NORMAL@ instead.
** @isCollapse()@: use @isCollapsed()@ instead.
** @isVisibleForFilters()@: use @getAppliedFilters()@ instead.
** @isVisible()@: use @DisplayService.isDisplayed()@ instead.
** @isFiltered()@, @isNotFiltered()@, @isVisibleForActivatedFilters(), @checkFilters()@: use @getAppliedFilters()@ and @DDiagram.getActivatedFilters()@ instead.
* The deprecated methods @isDirectlyHidden()@ and @isIndirectlyHidden()@ in @HideFilterHelper@ have been removed. Use the corresponding methods in @DDiagramElementQuery@ instead.
* The deprecated method @SavingPolicy.save(Iterable, Map)@ has been removed. Use the variant which takes an additional @IProgressMonitor@ instead.
* The deprecated constructor @AbstractCommandFactory(TransactionalEditingDomain, ModelAccessor)@ has been removed. Use the variant without the @ModelAccessor@ argument instead.
* The deprecated constructor @CommandContext(EObject)@ has been removed. Use the variant which takes an additional @DRepresentation@ instead.
* The deprecated methods @activate(TransactionalEditingDomain)@ and @deactivate(TransactionalEditingDomain)@ in @IChangeListener@ have been removed. Use the variants with no argument instead.
* The deprecated constructor @AddSemanticResourceCommand(Session, URI)@ has been removed. Use the variant which takes an additional @IProgressMonitor@ instead.
* The deprecated constructors of @RemoveSemanticResourceCommand@ have been removed. Use the variants which takes an additional @IProgressMonitor@ instead.
* The deprecated constructor in @CreateDiagramWithInitialOperation@ has been removed. Use the variant which takes an additional @IProgressMonitor@ instead.
* The deprecated method @SessionManager.addResource(Session, Resource)@ has been removed. Use the @Session.addSemanticResource(URI, IProgressMonitor)@ instead. In code, @mySessionManager.addResource(mySession, myResource)@ should be replaced by @mySession.addSemanticResource(myResource.getURI(), new NullProgressMonitor())@. Notice that this replacement has not the exact same behavior. The notifications @SessionListener.ABOUT_TO_BE_REPLACED@ and @SessionListener.REPLACED@ are not thrown with @addSemanticResource@ contrary to @addResource@. But this kind of notifications is more for reloading of resource.
* The deprecated constructor of @DefaultLocalSessionCreationOperation@ have been removed. Use the variant which takes an additional @IProgressMonitor@ instead.
* The deprecated method @SessionManager.getSession(URI)@ has been removed. Use the variant which takes an additional @IProgressMonitor@ instead.
* The deprecated method @SessionFactory.createSession(URI)@ has been removed. Use the variant which takes an additional @IProgressMonitor@ instead.
* Deprecated class @RefreshRepresentationCommand@ has been removed. Use the class @RefreshRepresentationsCommand@ instead.
* Deprecated classes @RevealSiriusElement@ and @RevealDDiagramElement@ have been removed. Use the class @RevealDDiagramElements@ instead.
* The deprecated method @DAnalysisSession.save(Map<?, ?>)@ has been removed. Use the variant which takes an additional @IProgressMonitor@ instead.
* The deprecated method @MappingTableEntry.getImporter()@ has been updated. It now returns an optional (@org.eclipse.sirius.common.tools.api.util.Option@) of @MappingTableEntry@.
* The deprecated class @IEMFCommandFactory@ has been removed. It is not used in Sirius code anymore.
* The deprecated method @IDiagramCommandFactory.buildCreateDiagramFromDescription(DiagramDescription, EObject)@ has been removed. Use the variant which takes an additional @IProgressMonitor@ instead.
* The deprecated methods @dispose()@ and @disposeInterpreterRegistry(EObject)@ have been removed from @InterpreterRegistry@. They corresponded to dead code.
* The deprecated method @InterpreterRegistry.prepareImportsFromModelElement(IInterpreter, EObject)@ has been removed. Use @InterpreterRegistry.prepareImportsFromSession(IInterpreter, Session)@ instead. To get @Session@ from @EObject@, you can use @SessionManager.INSTANCE.getSession(EObject)@.
* The deprecated method @SiriusHelper.createDAnalysis()@ has been removed. Use @ViewpointFactory.eINSTANCE.createDAnalysis()@ instead.
* The deprecated method @SessionFactory.createSession(DAnalysis)@ has been removed. It is not intended to be used, but it can be replaced by @SessionFactory.INSTANCE.createSession(analysis.eResource().getURI(), new NullProgressMonitor())@.
* The method @buildDoExecuteDetailsOperation(DSemanticDecorator, RepresentationCreationDescription, String) has been pull up from @ITableCommandFactory@, @ITreeCommandFactory@ and @IDiagramCommandFactory@ to @ICommandFactory@.
* The method @getUserInterfaceCallBack()@ has been pull up from @ITableCommandFactory@ and @ITreeCommandFactory@ to @ICommandFactory@. And @AbstractCommandFactory@ now implements this method.
* The unused reference @allActivatedEdgeMappings@ from @Layer@ and @DiagramDescription@ has been removed from the viewpoint.ecore meta-model. This reference always returns empty list.

h4. Changes in @org.eclipse.sirius.diagram@

* The deprecated methods @IDiagramEdgeEditPart.refreshPath()@ and @AbstractDiagramEdgeEditPart.refreshPath()@ have been removed. It is not called in Sirius code anymore

h4. Changes in @org.eclipse.sirius.ecore.extender@

* The deprecated methods @IMetamodelExtender.eDelete(EObject)@, @CompositeMetamodelExtender.eDelete(EObject)@ and @ModelAccessor.eDelete(EObject)@ have been removed. Use the variants which takes an additional @ECrossReferenceAdapter@ instead. This @ECrossReferenceAdapter@ can be null.

h4. Changes in @org.eclipse.sirius.ui@

* All deprecated methods in @ModelingProjectManager@ have been removed. Use the corresponding versions which take an additional @IProgressMonitor@ parameter instead.
* All deprecated methods in @ViewpointSelection@ have been removed. Use the corresponding versions which take an additional @IProgressMonitor@ parameter instead.
* Deprecated class @org.eclipse.sirius.ui.business.api.control.SiriusControlCommand@ has been removed. Use the class @org.eclipse.sirius.business.api.control.SiriusControlCommand@ instead (same constructor but with an additional @IProgressMonitor@ parameter).
** Ditto for @SiriusUnControlCommand@
* The deprecated method @DialectUIServices.openEditor(Session, DRepresentation)@ has been removed. Use the variant which takes an additional @IProgressMonitor@ instead.
* The deprecated method @SessionHelper.openStartupRepresentations(Session)@ has been removed. Use the variant which takes an additional @IProgressMonitor@ instead.
* The deprecated method @SiriusControlHandler.performControl(Shell, EObject)@ has been removed. Use the variant which takes an additional @IProgressMonitor@ instead.
* The deprecated method @SiriusUncontrolHandler.performUncontrol(Shell, EObject)@ has been removed. Use the variant which takes an additional @IProgressMonitor@ instead.
* New class @AbstractCreateRepresentationFromRepresentationCreationDescription@: Generalization of all @CreateRepresentationFromRepresentationCreationDescription@ classes (iof plug-ins sirius.diagram, sirius.table.ui, sirius.tree.ui).

h4. Changes in @org.eclipse.sirius.table@

* The deprecated method @TableHelper.getCell(DLine, String)@ has been removed. Use the variant which take a DLine and a DColumn as parameters.

h4. Changes in @org.eclipse.sirius.tree@

* The deprecated method @DTreeUserInteraction.refreshContent()@ has been removed. Use the variant which take an additional @IProgressMonitor@ parameter instead.

h2(#sirius0.9). Changes in Sirius 0.9.0

Version 0.9.0 is the first release under the Sirius name and under the Eclipse Foundation umbrella. Except for the few cases mentioned below (in the "Other API Changes", "Specifier-Visible Changes" and "User-Visible Changes" sections), Sirius 0.9.0 is functionally equivalent to the latest version of Viewpoint (version 6.10), which was the name of the project before it was open sourced at Eclipse. See the rest of the documentation for the complete list of feature of the Sirius platform.

h3. Migrating from Obeo Designer or Viewpoint to Sirius

If you have existing projects which used this technology before it became Eclipse Sirius and want to migrate to Sirius, you must:
# first migrate your projects and models to the latest pre-Sirius version of Viewpoint or Obeo Designer available to you (Viewpoint is the previous name of Sirius);
# then migrate those to Sirius 0.9.

The latest version of Viewpoint which was available in an Obeo Designer release is Viewpoint 6.8, released in Obeo Designer 6.2. Sirius 0.9 is based on Viewpoint 6.10, which was not released publicly.

If you were using Obeo Designer, you must thus first migrate your projects and models to Obeo Designer 6.2, and then consult the "release notes for Viewpoint 6.9 and 6.10":release_notes_vp.html, which lists the API changes from Viewpoint 6.8 to 6.10.

Once your projects are compatible with the latest Viewpoint available to you, you can migrate to Sirius, first by updating your Viewpoint Specification Projects and plug-ins which use the Viewpoint APIs, then by updating any Modeling Project and representation files (@*.aird@).

h4. Migrating Viewpoint Specification Projects

* Any plug-in dependencies towards Viewpoint plug-ins must be updated to the corresponding Sirius plug-in and version number. See the correspondence table below for the plug-in names to use.
* If your plug-ins used any of the extension points defined in Viewpoint, you will need to update your @plugin.xml@ files to reference the correct extension points identifiers. In particular, all Viewpoint Specification Projects created using Viewpoint use the @fr.obeo.dsl.viewpoint.componentization@ in their @plugin.xml@ to register the VSMs they define. This should be changed to use the equivalent @org.eclipse.sirius.componentization@ extension point id. The identifier changes for the other extension points follow the same rules as the name changes of the plug-ins they are defined in.
* The migration of your VSMs (@*.odesign@ files) is automatic: simply open your files once in the VSM editor, perform some no-op change to make the editor "dirty" and save it. The saved version will have been migrated to Sirius.
* If you had Java code which used the Viewpoint APIs, you will need to update it to use the Sirius APIs. A simple "Source > Organize Imports" on your source folders should find most classes you used in their new namespace. The Viewpoint code base and APIs used the term "Viewpoint" both for the name of the product and for the name of the concept. When it refered to the name of the product, the names were changed to use "Sirius" instead, so you may need to adjust some names in your code beyond just updating the imports (for example, @ViewpointControlCommand@ is now @SiriusControlCommand@).

Note that if you used Obeo Designer, you may have used the legacy Acceleo 2.x language for the computed expressions inside the @*.odesign@ files (if your expressions are of the form @<%something%>@ then you used the legacy language). That language is not supported anymore in Sirius 0.9, so you must migrate your expressions to use Acceleo 3 and/or the specialized interpreters (@var:@, @feature:@ and @service:@, see the documentation).

h4. Migrating Modeling Projects and Representation Files

* First migrate any modeler definitions used by your modeling projects and representation files (see the section above).
* Modeling projects created using Viewpoint will not be recognized directly by Sirius, because the nature identfier has changed. You must use the "Configure/Convert to Modeling Project" action in the project's context menu to make it a Sirius-compatible modeling project (see the section below for the technical details of the change).
* The migration of you representation files (@*.aird@) is performed automatically when they are loaded in memory. It will become permanent the first time you save it (you can force this by opening a representation, making some arbitrary change and saving the session).

h3. Plug-ins version numbers.

As of Sirius 0.9, and probably at least until Sirius 1.0 when the APIs will be more stable, all the bundles share the same version, which is also the version for the feature. If you used versioned dependencies to the old Viewpoint code (e.g. dependencies towards Viewpoint 6.8), you need to adjust the versions in your @MANIFEST.MF@ files in addition to the namespaces.

h3. Major namespace changes

In the context of the move as an official Eclipse project named Sirius, all the namespaces used in the code have changed.

h4. Plug-in and features identifiers

All identifiers have changed to start with the @org.eclipse.sirius@ namespace prefix. The tables below give the mapping between the Viewpoint plug-in and features identifiers and their Sirius equivalent.

|_. Viewpoint 6.x plug-in                     |_. Sirius 0.9 plug-in                      |
| fr.obeo.dsl.common                          | org.eclipse.sirius.common                 |
| fr.obeo.dsl.common.acceleo.mtl              | org.eclipse.sirius.common.acceleo.mtl     |
| fr.obeo.dsl.common.acceleo.mtl.ide          | org.eclipse.sirius.common.acceleo.mtl.ide |
| fr.obeo.dsl.common.ocl                      | org.eclipse.sirius.common.ocl             |
| fr.obeo.dsl.common.ui                       | org.eclipse.sirius.common.ui              |
| fr.obeo.dsl.common.xtext                    | org.eclipse.sirius.common.xtext           |
| fr.obeo.dsl.viewpoint                       | org.eclipse.sirius                        |
| fr.obeo.dsl.viewpoint.diagram               | org.eclipse.sirius.diagram                |
| fr.obeo.dsl.viewpoint.diagram.layoutdata    | org.eclipse.sirius.layoutdata             |
| fr.obeo.dsl.viewpoint.diagram.sequence      | org.eclipse.sirius.sequence               |
| fr.obeo.dsl.viewpoint.diagram.sequence.edit | org.eclipse.sirius.sequence.edit          |
| fr.obeo.dsl.viewpoint.diagram.sequence.ui   | org.eclipse.sirius.sequence.edit.ui       |
| fr.obeo.dsl.viewpoint.doc                   | org.eclipse.sirius.doc                    |
| fr.obeo.dsl.viewpoint.editor                | org.eclipse.sirius.editor                 |
| fr.obeo.dsl.viewpoint.editor.sequence       | org.eclipse.sirius.editor.sequence        |
| fr.obeo.dsl.viewpoint.editor.table          | org.eclipse.sirius.editor.table           |
| fr.obeo.dsl.viewpoint.editor.tree           | org.eclipse.sirius.editor.tree            |
| fr.obeo.dsl.viewpoint.eef.adapters          | org.eclipse.sirius.eef.adapters           |
| fr.obeo.dsl.viewpoint.interpreter           | org.eclipse.sirius.interpreter            |
| fr.obeo.dsl.viewpoint.table                 | org.eclipse.sirius.table                  |
| fr.obeo.dsl.viewpoint.table.ui              | org.eclipse.sirius.table.ui               |
| fr.obeo.dsl.viewpoint.tree                  | org.eclipse.sirius.tree                   |
| fr.obeo.dsl.viewpoint.tree.ui               | org.eclipse.sirius.tree.ui                |
| fr.obeo.dsl.viewpoint.ui                    | org.eclipse.sirius.ui                     |
| fr.obeo.mda.ecore.extender                  | org.eclipse.sirius.ecore.extender         |
| fr.obeo.mda.pim.ecore.design                | org.eclipse.sirius.sample.ecore.design       |
| org.eclipselab.emf.synchronizer             | org.eclipse.sirius.synchronizer           |

|_. Viewpoint 6.x feature                        |_. Sirius 0.9 feature                        |
| fr.obeo.dsl.viewpoint.runtime                  | org.eclipse.sirius.runtime                  |
| fr.obeo.dsl.viewpoint.runtime.acceleo          | org.eclipse.sirius.runtime.acceleo          |
| fr.obeo.dsl.viewpoint.runtime.ide.eef          | org.eclipse.sirius.runtime.ide.eef          |
| fr.obeo.dsl.viewpoint.runtime.ide.ui           | org.eclipse.sirius.runtime.ide.ui           |
| fr.obeo.dsl.viewpoint.runtime.ide.ui.acceleo   | org.eclipse.sirius.runtime.ide.ui.acceleo   |
| fr.obeo.dsl.viewpoint.runtime.ide.xtext        | org.eclipse.sirius.runtime.ide.xtext        |
| fr.obeo.dsl.viewpoint.runtime.ocl              | org.eclipse.sirius.runtime.ocl              |
| fr.obeo.dsl.viewpoint.specifier.ide.ui         | org.eclipse.sirius.specifier.ide.ui         |
| fr.obeo.dsl.viewpoint.specifier.ide.ui.acceleo | org.eclipse.sirius.specifier.ide.ui.acceleo |
| fr.obeo.dsl.viewpoint.doc.feature              | org.eclipse.sirius.doc.feature              |

h4. Java Packages and Classes Names

The Java package names have changed to start with the identifier of the plug-in they are defined in (which has changed). A simple "Source > Organize Imports" on your source folders should find most classes you used in their new namespace.

The Viewpoint code base and APIs used the term "Viewpoint" both for the name of the product and for the name of the concept. When it refered to the name of the product, the names where changed to use "Sirius" instead (for example, @ViewpointControlCommand@ is now @SiriusControlCommand@).

h4. Models namespace URIs

All namespace URIs have also been changed from "http://www.obeo.fr/dsl/viewpoint*" to "http://www.eclipse.org/sirius/".

If you have created VSM file (.odesign) or representations file (.aird) with Viewpoint, the changes of the namespace URIs will be automatically migrated during the loading of your VSM or your representations file. These new nsURIs will be stored physically in the file during the first save. If the file is not saved, the automatic migration will be replayed at the next opening.

h3. Nature ID

The modeling project has a specific nature (@org.eclipse.sirius.nature.modelingproject@).
If you have modeling project created with Viewpoint, you must launch the action "Configure/Convert to Modeling Project" to replace old nature id (@fr.obeo.dsl.viewpoint.nature.modelingproject@) by the new one.
If you have many modeling projects to "migrate", you can easily make a script to replace @fr.obeo.dsl.viewpoint.nature.modelingproject@ by @org.eclipse.sirius.nature.modelingproject@ in all @.project@ file of each modeling projects.

h3. Other API Changes

This section only lists API changes in Sirius 0.9.0 compared to the latest version of Viewpoint it is based on, i.e. Viewpoint 6.10.

h4. API Added

* Add @IMigrationParticipant.getPackage()@ to return the EPackage to use for the given namespace. This change concerns our internal migration framework. This is useful to handle our namespace changes (from Viewpoint to Sirius).

h4. API Removal

* Removed @org.eclipse.sirius.common.tools.api.interpreter.IAcceleoInterpreterVariables@: This interface only defined a single constant, which refered to the syntax of an obsolete version of the Acceleo language.
* Removed @org.eclipse.sirius.common.tools.api.resource.IFileContributorExtension@: This interface only defined a few constants relative to an extension point which does not exist anymore.
* Removed the @org.eclipse.sirius.reconciler@ extension point definition (which used to be defined in the @org.eclipse.sirius@ plug-in): This extension point is not supported anymore (and has not been for a long time).
* Removed all the deprecated methods from @Session@ and replaced the internal calls with the equivalent versions with @IProgressMonitors@. The removed methods are:

pre.. 
void open();
void addSemanticResource(Resource newResource, boolean addCrossReferencedResources);
void addSemanticResource(URI semanticModelURI, boolean addCrossReferencedResources);
void addSemanticResource(URI semanticModelURI, boolean addCrossReferencedResources, IProgressMonitor monitor);
void removeSemanticResource(Resource resource, boolean removeCrossReferencedResources);
void removeSemanticResource(Resource semanticResource);
void save();
void close();
Collection<Viewpoint> getSelectedViewpoints();
void createView(Viewpoint viewpoint, Collection<EObject> semantics);
void createView(Viewpoint viewpoint, Collection<EObject> semantics, boolean createNewRepresentations);
void addSelectedView(DView view) throws IllegalArgumentException;
void removeSelectedView(DView view);

h3. Specifier-Visible Changes

New variables are available for @sizeComputationExpression@ to compute the size of edges on @EdgeStyleDescription@ and @BracketEdgeStyleDescription@:
* _diagram_: the current @DDiagram@
* _view_: the current @DEdge@
* _sourceView_: the source view of the current edge.
* _targetView_: the target view of the current edge.

h3. User-Visible Changes

* The ability to print table representations has been disabled for the 0.9 release due to an external dependency issue (see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=422223" target="_blank">bug #422223</a>: for the details). It should be re-introduced in 1.0.

Back to the top