Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Redor2016-06-09 07:51:57 +0000
committerLaurent Redor2016-06-16 06:12:38 +0000
commit4c22f9b8234cafc16a93dea18dfe491194571342 (patch)
tree5f4393387052c03b61f778c18052cad236595e8a
parent974473d9916f48b95252193319c9e7302f0c8e3e (diff)
downloadorg.eclipse.sirius-4c22f9b8234cafc16a93dea18dfe491194571342.tar.gz
org.eclipse.sirius-4c22f9b8234cafc16a93dea18dfe491194571342.tar.xz
org.eclipse.sirius-4c22f9b8234cafc16a93dea18dfe491194571342.zip
[495707] Fix unexpected refresh of regions container
Some refresh of regions container are done but they should not. This commit reduce them: The refresh is done only if new views are created in an existing regions container or if the order of regions is changed. This commit resolves no bug but clean the code. Bug: 495707 Change-Id: I46e40cd51960e5dcac18ca0248c1d7141cc6169f Signed-off-by: Laurent Redor <laurent.redor@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/business/api/query/NodeQuery.java26
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/operation/RegionContainerUpdateLayoutOperation.java86
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/refresh/AbstractCanonicalSynchronizer.java11
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/refresh/diagram/DDiagramCanonicalSynchronizer.java15
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/layout/provider/ArrangeSelectionLayoutProvider.java4
-rw-r--r--plugins/org.eclipse.sirius.doc/doc/Release_Notes.html64
-rw-r--r--plugins/org.eclipse.sirius.doc/doc/Release_Notes.textile12
7 files changed, 181 insertions, 37 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/business/api/query/NodeQuery.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/business/api/query/NodeQuery.java
index 99c2fb56f7..3da5e12902 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/business/api/query/NodeQuery.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/business/api/query/NodeQuery.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2013 THALES GLOBAL SERVICES.
+ * Copyright (c) 2013, 2016 THALES GLOBAL SERVICES.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -19,6 +19,7 @@ import org.eclipse.gmf.runtime.notation.Bounds;
import org.eclipse.gmf.runtime.notation.LayoutConstraint;
import org.eclipse.gmf.runtime.notation.Node;
import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.sirius.diagram.CollapseFilter;
import org.eclipse.sirius.diagram.DDiagramElement;
import org.eclipse.sirius.diagram.DNode;
@@ -299,4 +300,27 @@ public class NodeQuery {
}
return bounds;
}
+
+ /**
+ * Tests whether the queried Node is a descendant of <code>container</code>.
+ *
+ * @param container
+ * The container
+ * @return true if the queried Node is a descendant of
+ * <code>container</code>, false otherwise.
+ */
+ public boolean isDescendantOf(View container) {
+ boolean result = false;
+ if (node.eContainer() instanceof Node) {
+ if (container instanceof Node && new NodeQuery((Node) container).isContainer()) {
+ if (container.equals(node.eContainer())) {
+ result = true;
+ } else {
+ result = new NodeQuery((Node) node.eContainer()).isDescendantOf(container);
+ }
+ }
+ }
+ return result;
+ }
+
}
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/operation/RegionContainerUpdateLayoutOperation.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/operation/RegionContainerUpdateLayoutOperation.java
index 0bba021673..1df4a13d28 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/operation/RegionContainerUpdateLayoutOperation.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/operation/RegionContainerUpdateLayoutOperation.java
@@ -10,8 +10,10 @@
*******************************************************************************/
package org.eclipse.sirius.diagram.ui.internal.operation;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.emf.ecore.EObject;
@@ -22,6 +24,7 @@ import org.eclipse.gmf.runtime.notation.Size;
import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.sirius.diagram.DNodeContainer;
import org.eclipse.sirius.diagram.business.internal.query.DNodeContainerExperimentalQuery;
+import org.eclipse.sirius.diagram.ui.business.api.query.NodeQuery;
import org.eclipse.sirius.diagram.ui.business.api.view.SiriusGMFHelper;
import org.eclipse.sirius.diagram.ui.business.internal.operation.AbstractModelChangeOperation;
import org.eclipse.sirius.diagram.ui.internal.edit.parts.DNodeContainerViewNodeContainerCompartment2EditPart;
@@ -32,9 +35,13 @@ import org.eclipse.sirius.diagram.ui.provider.Messages;
import org.eclipse.sirius.viewpoint.DRepresentationElement;
import org.eclipse.sirius.viewpoint.description.RepresentationElementMapping;
+import com.google.common.base.Function;
+import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
+import com.google.common.collect.Ordering;
+import com.google.common.collect.Sets;
/**
* Update and keep consistent the GMF Bounds of a Region Container and its
@@ -46,6 +53,8 @@ public class RegionContainerUpdateLayoutOperation extends AbstractModelChangeOpe
private final Node regionContainer;
+ private Set<View> createdNodeViews = Sets.newHashSet();
+
/**
* Constructor.
*
@@ -57,6 +66,21 @@ public class RegionContainerUpdateLayoutOperation extends AbstractModelChangeOpe
this.regionContainer = extractRealRegionContainer(regionContainer);
}
+ /**
+ * Constructor.
+ *
+ * @param regionContainer
+ * The Region Container view to layout.
+ * @param createdNodeViews
+ * List of views created since the last call to the
+ * RegionContainerUpdateLayoutOperation (and that can have effect
+ * on the layout of the regions container).
+ */
+ public RegionContainerUpdateLayoutOperation(Node regionContainer, Set<View> createdNodeViews) {
+ this(regionContainer);
+ this.createdNodeViews = createdNodeViews;
+ }
+
private Node extractRealRegionContainer(Node node) {
if (node != null && node.eContainer() instanceof Node) {
int visualID = SiriusVisualIDRegistry.getVisualID(node);
@@ -91,12 +115,17 @@ public class RegionContainerUpdateLayoutOperation extends AbstractModelChangeOpe
EObject element = regionContainer.getElement();
if (element instanceof DNodeContainer) {
DNodeContainer dnc = (DNodeContainer) element;
+ List<Node> regionsToLayoutSortedByLocation = Lists.newArrayList(regionsToLayout);
+ sortRegionsAccordingToLocation(dnc, regionsToLayoutSortedByLocation);
sortRegions(dnc, regionsToLayout);
- DNodeContainerExperimentalQuery query = new DNodeContainerExperimentalQuery(dnc);
- if (query.isVerticalStackContainer()) {
- updateRegionsLayoutContraints(regionsToLayout, true);
- } else if (query.isHorizontaltackContainer()) {
- updateRegionsLayoutContraints(regionsToLayout, false);
+ boolean isOrderChanged = !regionsToLayout.equals(regionsToLayoutSortedByLocation);
+ if (isOrderChanged || isImpactedByNewViews()) {
+ DNodeContainerExperimentalQuery query = new DNodeContainerExperimentalQuery(dnc);
+ if (query.isVerticalStackContainer()) {
+ updateRegionsLayoutContraints(regionsToLayout, true);
+ } else if (query.isHorizontaltackContainer()) {
+ updateRegionsLayoutContraints(regionsToLayout, false);
+ }
}
}
@@ -104,6 +133,24 @@ public class RegionContainerUpdateLayoutOperation extends AbstractModelChangeOpe
return null;
}
+ /**
+ * Check if at least one of the new views concerned the current region
+ * container.
+ *
+ * @param dnc
+ * The container to which we want to know if it is impacted
+ * @return true if at least one of the created views is contained by the
+ * <code>regionContainer</code>, false otherwise.
+ */
+ private boolean isImpactedByNewViews() {
+ return Iterables.any(createdNodeViews, new Predicate<View>() {
+ @Override
+ public boolean apply(View input) {
+ return input instanceof Node && new NodeQuery((Node) input).isDescendantOf(regionContainer);
+ }
+ });
+ }
+
/*
* @param vertical : vertical if true, horizontal if false.
*/
@@ -187,6 +234,35 @@ public class RegionContainerUpdateLayoutOperation extends AbstractModelChangeOpe
new RegionComparisonHelper(dNodeContainer).sort(modelChildren);
}
+ /**
+ * Sort the regions with the current x or y location.
+ *
+ * @param dNodeContainer
+ * the {@link DNodeContainer} region container
+ * @param modelChildren
+ * the regions
+ */
+ public static void sortRegionsAccordingToLocation(DNodeContainer dNodeContainer, List<? extends View> modelChildren) {
+ final DNodeContainerExperimentalQuery query = new DNodeContainerExperimentalQuery(dNodeContainer);
+ Function<View, Integer> locationIndex = new Function<View, Integer>() {
+ @Override
+ public Integer apply(View view) {
+ if (view instanceof Node) {
+ LayoutConstraint constraint = ((Node) view).getLayoutConstraint();
+ if (constraint instanceof Location) {
+ if (query.isHorizontaltackContainer()) {
+ return ((Location) constraint).getX();
+ } else if (query.isVerticalStackContainer()) {
+ return ((Location) constraint).getY();
+ }
+ }
+ }
+ return Integer.MAX_VALUE;
+ }
+ };
+ Collections.sort(modelChildren, Ordering.natural().onResultOf(locationIndex));
+ }
+
private static class RegionComparisonHelper extends ComparisonHelper {
private DNodeContainer self;
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/refresh/AbstractCanonicalSynchronizer.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/refresh/AbstractCanonicalSynchronizer.java
index 83414073a2..1791716f66 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/refresh/AbstractCanonicalSynchronizer.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/refresh/AbstractCanonicalSynchronizer.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2011, 2015 THALES GLOBAL SERVICES and others.
+ * Copyright (c) 2011, 2016 THALES GLOBAL SERVICES and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -57,6 +57,8 @@ import org.eclipse.sirius.diagram.ui.business.api.query.ViewQuery;
import org.eclipse.sirius.diagram.ui.business.api.view.SiriusLayoutDataManager;
import org.eclipse.sirius.diagram.ui.business.internal.query.DNodeQuery;
import org.eclipse.sirius.diagram.ui.business.internal.view.LayoutData;
+import org.eclipse.sirius.diagram.ui.internal.edit.parts.DNodeContainer2EditPart;
+import org.eclipse.sirius.diagram.ui.internal.edit.parts.DNodeContainerEditPart;
import org.eclipse.sirius.diagram.ui.internal.providers.SiriusViewProvider;
import org.eclipse.sirius.diagram.ui.internal.refresh.borderednode.CanonicalDBorderItemLocator;
import org.eclipse.sirius.diagram.ui.internal.view.factories.AbstractContainerViewFactory;
@@ -156,7 +158,12 @@ public abstract class AbstractCanonicalSynchronizer implements CanonicalSynchron
boolean regionContainer = semanticView instanceof DNodeContainer && new DNodeContainerExperimentalQuery((DNodeContainer) semanticView).isRegionContainer();
if (regionContainer) {
- regionContainersToLayout.add(gmfView);
+ // Only consider DNodeContainerEditPart and DNodeContainer2EditPart
+ // as regionContainer to layout.
+ int type = SiriusVisualIDRegistry.getVisualID(gmfView.getType());
+ if (type == DNodeContainerEditPart.VISUAL_ID || type == DNodeContainer2EditPart.VISUAL_ID) {
+ regionContainersToLayout.add(gmfView);
+ }
}
// Manage Nodes ordering in Compartment according to DNodeListElement
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/refresh/diagram/DDiagramCanonicalSynchronizer.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/refresh/diagram/DDiagramCanonicalSynchronizer.java
index ee91523efd..f939796eae 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/refresh/diagram/DDiagramCanonicalSynchronizer.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/refresh/diagram/DDiagramCanonicalSynchronizer.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2011, 2015 THALES GLOBAL SERVICES and others.
+ * Copyright (c) 2011, 2016 THALES GLOBAL SERVICES and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -46,8 +46,6 @@ import org.eclipse.sirius.diagram.ui.business.api.helper.graphicalfilters.Collap
import org.eclipse.sirius.diagram.ui.business.api.view.SiriusLayoutDataManager;
import org.eclipse.sirius.diagram.ui.business.internal.dialect.SetBestHeightHeaderCommand;
import org.eclipse.sirius.diagram.ui.internal.edit.parts.DDiagramEditPart;
-import org.eclipse.sirius.diagram.ui.internal.edit.parts.DNodeContainer2EditPart;
-import org.eclipse.sirius.diagram.ui.internal.edit.parts.DNodeContainerEditPart;
import org.eclipse.sirius.diagram.ui.internal.operation.RegionContainerUpdateLayoutOperation;
import org.eclipse.sirius.diagram.ui.internal.refresh.AbstractCanonicalSynchronizer;
import org.eclipse.sirius.diagram.ui.part.SiriusDiagramUpdater;
@@ -123,23 +121,22 @@ public class DDiagramCanonicalSynchronizer extends AbstractCanonicalSynchronizer
manageCollapse(createdNodeViews);
- manageRegions();
+ manageRegions(createdNodeViews);
}
}
- private void manageRegions() {
+ private void manageRegions(Set<View> createdNodeViews) {
if (regionContainersToLayout.isEmpty()) {
return;
}
// Step 1: update regions layout from the deepest ones.
List<View> newArrayList = Lists.newArrayList(regionContainersToLayout);
- ListIterator<View> regionToLayoutListIterator = newArrayList.listIterator(newArrayList.size() - 1);
+ ListIterator<View> regionToLayoutListIterator = newArrayList.listIterator(newArrayList.size());
while (regionToLayoutListIterator.hasPrevious()) {
View regionContainer = regionToLayoutListIterator.previous();
- int type = SiriusVisualIDRegistry.getVisualID(regionContainer.getType());
- if (regionContainer instanceof Node && (type == DNodeContainerEditPart.VISUAL_ID || type == DNodeContainer2EditPart.VISUAL_ID)) {
- new RegionContainerUpdateLayoutOperation((Node) regionContainer).execute();
+ if (regionContainer instanceof Node) {
+ new RegionContainerUpdateLayoutOperation((Node) regionContainer, createdNodeViews).execute();
}
}
regionContainersToLayout.clear();
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/layout/provider/ArrangeSelectionLayoutProvider.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/layout/provider/ArrangeSelectionLayoutProvider.java
index cbf7233098..b1e91c6ff3 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/layout/provider/ArrangeSelectionLayoutProvider.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/layout/provider/ArrangeSelectionLayoutProvider.java
@@ -139,7 +139,9 @@ public class ArrangeSelectionLayoutProvider extends AbstractLayoutProvider {
addEdgesToNotSelectedUnpinnedList((DiagramEditPart) igep.getRoot().getChildren().get(0));
}
- // Update Layout Hint to find later the list of unselected
+ // Update Layout Hint to find later (in
+ // org.eclipse.sirius.diagram.ui.tools.internal.layout.provider.AbstractCompositeLayoutProvider.layoutEditParts(List,
+ // IAdaptable) for example) the list of unselected
// diagram element on diagram that are unpinned as elements
// to keep fixed in PinnedElementsHandler
final IAdaptable originalHint = layoutHint;
diff --git a/plugins/org.eclipse.sirius.doc/doc/Release_Notes.html b/plugins/org.eclipse.sirius.doc/doc/Release_Notes.html
index 611d47b215..c9b0b45769 100644
--- a/plugins/org.eclipse.sirius.doc/doc/Release_Notes.html
+++ b/plugins/org.eclipse.sirius.doc/doc/Release_Notes.html
@@ -13,7 +13,7 @@
<a href="#ReleaseNotesforSirius">Release Notes for Sirius</a>
<ol style="list-style: disc;">
<li>
- <a href="#sirius4.0.0">Changes in Sirius 4.0.0</a>
+ <a href="#sirius4.1.0">Changes in Sirius 4.1.0</a>
<ol style="list-style: disc;">
<li>
<a href="#UserVisibleChanges">User-Visible Changes</a>
@@ -27,7 +27,7 @@
</ol>
</li>
<li>
- <a href="#sirius3.1.0">Changes in Sirius 3.1.0</a>
+ <a href="#sirius4.0.0">Changes in Sirius 4.0.0</a>
<ol style="list-style: disc;">
<li>
<a href="#UserVisibleChanges2">User-Visible Changes</a>
@@ -41,7 +41,7 @@
</ol>
</li>
<li>
- <a href="#sirius3.0.0">Changes in Sirius 3.0.0</a>
+ <a href="#sirius3.1.0">Changes in Sirius 3.1.0</a>
<ol style="list-style: disc;">
<li>
<a href="#UserVisibleChanges3">User-Visible Changes</a>
@@ -55,7 +55,7 @@
</ol>
</li>
<li>
- <a href="#sirius2.0.0">Changes in Sirius 2.0.0</a>
+ <a href="#sirius3.0.0">Changes in Sirius 3.0.0</a>
<ol style="list-style: disc;">
<li>
<a href="#UserVisibleChanges4">User-Visible Changes</a>
@@ -64,6 +64,20 @@
<a href="#SpecifierVisibleChanges4">Specifier-Visible Changes</a>
</li>
<li>
+ <a href="#DeveloperVisibleChanges4">Developer-Visible Changes</a>
+ </li>
+ </ol>
+ </li>
+ <li>
+ <a href="#sirius2.0.0">Changes in Sirius 2.0.0</a>
+ <ol style="list-style: disc;">
+ <li>
+ <a href="#UserVisibleChanges5">User-Visible Changes</a>
+ </li>
+ <li>
+ <a href="#SpecifierVisibleChanges5">Specifier-Visible Changes</a>
+ </li>
+ <li>
<a href="#APIChanges">API Changes</a>
</li>
</ol>
@@ -74,8 +88,20 @@
<p>This document contains the release notes for recent major releases of Sirius. See also
<a href="Release_Notes_Previous.html">the release notes from previous versions</a> for details about older releases.
</p>
- <h2 id="sirius4.0.0">Changes in Sirius 4.0.0</h2>
+ <h2 id="sirius4.1.0">Changes in Sirius 4.1.0</h2>
<h3 id="UserVisibleChanges">User-Visible Changes</h3>
+ <h3 id="SpecifierVisibleChanges">Specifier-Visible Changes</h3>
+ <h3 id="DeveloperVisibleChanges">Developer-Visible Changes</h3>
+ <h4 id="Changesinorg.eclipse.sirius.diagram.ui">Changes in
+ <code>org.eclipse.sirius.diagram.ui</code>
+ </h4>
+ <ul>
+ <li><span class="label label-success">Added</span>
+ <code>org.eclipse.sirius.diagram.ui.business.api.query.NodeQuery.isDescendantOf(View)</code> has been added to know if a view is a descendant of another view.
+ </li>
+ </ul>
+ <h2 id="sirius4.0.0">Changes in Sirius 4.0.0</h2>
+ <h3 id="UserVisibleChanges2">User-Visible Changes</h3>
<ul>
<li><span class="label label-success">Added</span> The user can now filter elements according to a Typed variable (String, Integer, EEnum or any EDataType). If a user applies a filter containing Typed Variables, a dialog is displayed to allow user entering the Typed Variable values. That values can be used as variables in the Condition Expression of the Variable Filter.</li>
<li><span class="label label-success">Added</span> When the diagram is larger than the editor, you can move it in all directions pressing the middle-button and dragging the mouse (keeping the button pressed).</li>
@@ -95,7 +121,7 @@
<code>Apply Appearance Properties</code> action has been modified to use the last selected element as base style instead of the first one.
</li>
</ul>
- <h3 id="SpecifierVisibleChanges">Specifier-Visible Changes</h3>
+ <h3 id="SpecifierVisibleChanges2">Specifier-Visible Changes</h3>
<ul>
<li><span class="label label-success">Added</span> Sirius 4.0 introduces
<strong>experimental</strong> support for specifying the properties views of your modelers directly from inside the VSM. This feature uses the same dynamic approach as for specifying diagrams, tables and trees, with a very flexible configuration language and no code generation involved (including live preview of any change). As of Sirius 4.0, this feature should be considered in an experimental state with details subject to changes until Sirius 4.1, and is not installed by default. To install it, make sure either
@@ -161,7 +187,7 @@
</li>
<li><span class="label label-info">Modified</span> The variable under VariableFilter, previously named &#8220;Variable&#8221;, is renamed to &#8220;Select Model Element Variable&#8221;. It is functionally equivalent.</li>
</ul>
- <h3 id="DeveloperVisibleChanges">Developer-Visible Changes</h3>
+ <h3 id="DeveloperVisibleChanges2">Developer-Visible Changes</h3>
<ul>
<li><span class="label label-success">Added</span> It is now possible to provide a full customized tab-bar by implementing the
<code>ITabbarContributor</code> through the
@@ -359,7 +385,7 @@
<code>org.eclipse.sirius.ui.business.api.editor.SpecificSessionManager</code> has been removed.
</li>
</ul>
- <h4 id="Changesinorg.eclipse.sirius.diagram.ui">Changes in
+ <h4 id="Changesinorg.eclipse.sirius.diagram.ui2">Changes in
<code>org.eclipse.sirius.diagram.ui</code>
</h4>
<ul>
@@ -556,7 +582,7 @@
</li>
</ul>
<h2 id="sirius3.1.0">Changes in Sirius 3.1.0</h2>
- <h3 id="UserVisibleChanges2">User-Visible Changes</h3>
+ <h3 id="UserVisibleChanges3">User-Visible Changes</h3>
<ul>
<li><span class="label label-success">Added</span> A new feature allows to snap to all shapes (instead of just to snap to sibling shapes). The <kdb>F4</kdb> shortcut key activates this mode when you resize a node, move a node or move a bendpoint of an edge, see
<a href="./user/diagrams/Diagrams.html#snap_to_shapes">the documentation</a> for details.
@@ -595,7 +621,7 @@
<em>Arrange Linked Border Nodes</em> as it is border nodes which are layouted and not bordered nodes.
</li>
</ul>
- <h3 id="SpecifierVisibleChanges2">Specifier-Visible Changes</h3>
+ <h3 id="SpecifierVisibleChanges3">Specifier-Visible Changes</h3>
<ul>
<li><span class="label label-info">Modified</span> The
<em>Acceleo Query Language</em> (AQL) interpreter has been improved. AQL, and its support in Sirius, is no longer considered experimental, and instead is now the recommended query language to use for new VSMs. Improvements mostly concern better completion and validation, and more precise error reporting. In particular AQL expressions 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 (
@@ -642,7 +668,7 @@
<code>IPermissionAuthority</code>) of the potential to delete objects. This is the reverse order of what was done before, and can have performance impacts if the precondition is slow. The specifier will to take care to ensure a good performance for the precondition expression of the delete tool.
</li>
</ul>
- <h3 id="DeveloperVisibleChanges2">Developer-Visible Changes</h3>
+ <h3 id="DeveloperVisibleChanges3">Developer-Visible Changes</h3>
<h4 id="Partialsupportforinternationalization">Partial support for internationalization</h4>
<p>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 &#8220;language packs&#8221; as OSGi fragments. Note that this does not concern the VSM editor&#8217;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.</p>
<p>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:</p>
@@ -944,7 +970,7 @@
<code>IEditorPart</code> through the navigation history view.
</li>
</ul>
- <h4 id="Changesinorg.eclipse.sirius.diagram.ui2">Changes in
+ <h4 id="Changesinorg.eclipse.sirius.diagram.ui3">Changes in
<code>org.eclipse.sirius.diagram.ui</code>
</h4>
<ul>
@@ -1100,7 +1126,7 @@
</li>
</ul>
<h2 id="sirius3.0.0">Changes in Sirius 3.0.0</h2>
- <h3 id="UserVisibleChanges3">User-Visible Changes</h3>
+ <h3 id="UserVisibleChanges4">User-Visible Changes</h3>
<ul>
<li><span class="label label-success">Added</span> The ability to print table representations has been re-introduced.</li>
<li><span class="label label-success">Added</span> The quick outline feature has been added for tree and table editors, see documentation for details.</li>
@@ -1125,7 +1151,7 @@
<em>Viewpoint Selection</em> dialog and wizard page, the &#8220;plug-in&#8221; decorator for viewpoints loaded from plug-ins is removed, and a &#8220;Folder&#8221; 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.
</li>
</ul>
- <h3 id="SpecifierVisibleChanges3">Specifier-Visible Changes</h3>
+ <h3 id="SpecifierVisibleChanges4">Specifier-Visible Changes</h3>
<ul>
<li><span class="label label-success">Added</span> <span class="label label-info">Experimental</span> Optional support for the experimental
<em>Acceleo Query Language</em> (AQL) has been added to write interpreted expressions. It is provided by the
@@ -1200,7 +1226,7 @@
<em>EStructuralFeature</em> (inherited or with same name).
</li>
</ul>
- <h3 id="DeveloperVisibleChanges3">Developer-Visible Changes</h3>
+ <h3 id="DeveloperVisibleChanges4">Developer-Visible Changes</h3>
<p>The most important and impacting changes in this release are (details below in plug-in specific sections):</p>
<ul>
<li><span class="label label-success">Added</span> The new extension point
@@ -1638,7 +1664,7 @@
<code>ComputedStyleDescriptionRegistry.computedStyleDescriptions</code> list.
</li>
</ul>
- <h4 id="Changesinorg.eclipse.sirius.diagram.ui3">Changes in
+ <h4 id="Changesinorg.eclipse.sirius.diagram.ui4">Changes in
<code>org.eclipse.sirius.diagram.ui</code>
</h4>
<ul>
@@ -2050,7 +2076,7 @@
<code>org.eclipse.sirius.xxx.ui.ext</code>, allowing them not have all that functionalities they may not want.
</p>
<h2 id="sirius2.0.0">Changes in Sirius 2.0.0</h2>
- <h3 id="UserVisibleChanges4">User-Visible Changes</h3>
+ <h3 id="UserVisibleChanges5">User-Visible Changes</h3>
<ul>
<li>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.</li>
<li>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.</li>
@@ -2101,7 +2127,7 @@
<li>Reconnection of an edge will only now move the minimum necessary bendpoints instead of reseting it to default.</li>
<li>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.</li>
</ul>
- <h3 id="SpecifierVisibleChanges4">Specifier-Visible Changes</h3>
+ <h3 id="SpecifierVisibleChanges5">Specifier-Visible Changes</h3>
<ul>
<li>The specifier can now choose to hold the edge ends toward the center of the source, target or both. New fields within the &#8220;advance&#8221; tab of EdgeStyle description have been added to choose for which source or target mappings an edge should be centered. See
<a href="specifier/diagrams/Diagrams.html#edges_styles">Edges Styles &gt; Edge Centering</a> in the specifier manual for more details.
@@ -2270,7 +2296,7 @@
<code>org.eclipse.sirius.diagram.description.CenteringStyle</code>, to determine whether the edge target or source ends should be centered.
</li>
</ul>
- <h4 id="Changesinorg.eclipse.sirius.diagram.ui4">Changes in
+ <h4 id="Changesinorg.eclipse.sirius.diagram.ui5">Changes in
<code>org.eclipse.sirius.diagram.ui</code>
</h4>
<ul>
diff --git a/plugins/org.eclipse.sirius.doc/doc/Release_Notes.textile b/plugins/org.eclipse.sirius.doc/doc/Release_Notes.textile
index b49d641b05..c04ff5d587 100644
--- a/plugins/org.eclipse.sirius.doc/doc/Release_Notes.textile
+++ b/plugins/org.eclipse.sirius.doc/doc/Release_Notes.textile
@@ -4,6 +4,18 @@ h1. Release Notes for Sirius
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(#sirius4.1.0). Changes in Sirius 4.1.0
+
+h3. User-Visible Changes
+
+h3. Specifier-Visible Changes
+
+h3. Developer-Visible Changes
+
+h4. Changes in @org.eclipse.sirius.diagram.ui@
+
+* <span class="label label-success">Added</span> @org.eclipse.sirius.diagram.ui.business.api.query.NodeQuery.isDescendantOf(View)@ has been added to know if a view is a descendant of another view.
+
h2(#sirius4.0.0). Changes in Sirius 4.0.0
h3. User-Visible Changes

Back to the top