Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaxime Porhel2015-08-21 12:30:35 +0000
committerMaxime Porhel2015-08-25 13:30:02 +0000
commitae79199c97c51a5cecd2cfc2f29d22eafd1ffb88 (patch)
tree4dc0497b51ab97c4c9e8027210cbcda8ad8434ad
parent70848676052f6bbbb291c295c0fdba4bfe9006b4 (diff)
downloadorg.eclipse.sirius-ae79199c97c51a5cecd2cfc2f29d22eafd1ffb88.tar.gz
org.eclipse.sirius-ae79199c97c51a5cecd2cfc2f29d22eafd1ffb88.tar.xz
org.eclipse.sirius-ae79199c97c51a5cecd2cfc2f29d22eafd1ffb88.zip
[470859] Update GMF Helper insets computation
If a container has a full label border, its compartmentEditPart will be added as child of its content pane (with the label) like it is done for lists and region containers and not as child of the main figure be as it is done other FreeForm containers. Bug: 470859 Change-Id: Ide4a1755f5cb97974f145f14483e2b7e7b7bf806 Signed-off-by: Maxime Porhel <maxime.porhel@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/refresh/GMFHelper.java13
1 files changed, 12 insertions, 1 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/refresh/GMFHelper.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/refresh/GMFHelper.java
index 960ac2be98..358b72ad17 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/refresh/GMFHelper.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/refresh/GMFHelper.java
@@ -42,8 +42,10 @@ import org.eclipse.sirius.diagram.DDiagramElementContainer;
import org.eclipse.sirius.diagram.DNode;
import org.eclipse.sirius.diagram.DNodeContainer;
import org.eclipse.sirius.diagram.DNodeList;
+import org.eclipse.sirius.diagram.FlatContainerStyle;
import org.eclipse.sirius.diagram.business.internal.query.DDiagramElementContainerExperimentalQuery;
import org.eclipse.sirius.diagram.business.internal.query.DNodeContainerExperimentalQuery;
+import org.eclipse.sirius.diagram.description.style.FlatContainerStyleDescription;
import org.eclipse.sirius.diagram.ui.business.api.query.NodeQuery;
import org.eclipse.sirius.diagram.ui.business.api.query.ViewQuery;
import org.eclipse.sirius.diagram.ui.business.internal.query.DNodeContainerQuery;
@@ -53,6 +55,7 @@ import org.eclipse.sirius.diagram.ui.internal.edit.parts.AbstractDNodeContainerC
import org.eclipse.sirius.diagram.ui.internal.refresh.borderednode.CanonicalDBorderItemLocator;
import org.eclipse.sirius.diagram.ui.tools.api.graphical.edit.styles.IContainerLabelOffsets;
import org.eclipse.sirius.diagram.ui.tools.api.layout.LayoutUtils;
+import org.eclipse.sirius.diagram.ui.tools.internal.figure.LabelBorderStyleIds;
import org.eclipse.sirius.ext.base.Option;
import org.eclipse.sirius.ext.base.Options;
import org.eclipse.ui.IEditorPart;
@@ -147,7 +150,7 @@ public final class GMFHelper {
// RegionContainer do not have containers insets
if (ddec instanceof DNodeContainer) {
- if (new DNodeContainerExperimentalQuery((DNodeContainer) ddec).isRegionContainer()) {
+ if (new DNodeContainerExperimentalQuery((DNodeContainer) ddec).isRegionContainer() || hasFullLabelBorder(ddec)) {
locationToTranslate.translate(0, CONTAINER_INSETS.y);
locationToTranslate.translate(0, getLabelSize(parentNode)).translate(0, AbstractDiagramElementContainerEditPart.DEFAULT_SPACING);
} else {
@@ -168,6 +171,14 @@ public final class GMFHelper {
}
+ private static boolean hasFullLabelBorder(DDiagramElementContainer ddec) {
+ if (ddec.getStyle() instanceof FlatContainerStyle && ddec.getStyle().getDescription() instanceof FlatContainerStyleDescription) {
+ FlatContainerStyleDescription fcsd = (FlatContainerStyleDescription) ddec.getStyle().getDescription();
+ return fcsd.getLabelBorderStyle() != null && LabelBorderStyleIds.LABEL_FULL_BORDER_STYLE_FOR_CONTAINER_ID.equals(fcsd.getLabelBorderStyle().getId());
+ }
+ return false;
+ }
+
private static int getLabelSize(Node parentNode) {
int labelSize = 0;
for (Node child : Iterables.filter(parentNode.getVisibleChildren(), Node.class)) {

Back to the top