diff options
| author | Maxime Porhel | 2015-08-21 12:30:35 +0000 |
|---|---|---|
| committer | Maxime Porhel | 2015-08-25 13:30:02 +0000 |
| commit | ae79199c97c51a5cecd2cfc2f29d22eafd1ffb88 (patch) | |
| tree | 4dc0497b51ab97c4c9e8027210cbcda8ad8434ad | |
| parent | 70848676052f6bbbb291c295c0fdba4bfe9006b4 (diff) | |
| download | org.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.java | 13 |
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)) { |
