diff options
| author | Maxime Porhel | 2015-08-24 14:43:10 +0000 |
|---|---|---|
| committer | Maxime Porhel | 2015-08-25 13:44:42 +0000 |
| commit | 272e69bb35772e3a51c6d7554a6cfe7a8d6d0aa9 (patch) | |
| tree | d81309372d89af1345b96229f1287fc2eacee1ea | |
| parent | 9a545eb3151581530d4285a3738dd9976a76c459 (diff) | |
| download | org.eclipse.sirius-272e69bb35772e3a51c6d7554a6cfe7a8d6d0aa9.tar.gz org.eclipse.sirius-272e69bb35772e3a51c6d7554a6cfe7a8d6d0aa9.tar.xz org.eclipse.sirius-272e69bb35772e3a51c6d7554a6cfe7a8d6d0aa9.zip | |
[472033] Also reinit figures for List/Region/RegionContainer
. Sirius used to react to gradient style changes only for
DNodeContainers
. Homogenize behavior between diagram creation for a VSM with an emtpy
WorkspaceImage.workspacePath and the resetStyle button.
Bug: 472033
Change-Id: I4698341428bc5dd6883227892a958ad451025ddc
Signed-off-by: Maxime Porhel <maxime.porhel@obeo.fr>
2 files changed, 32 insertions, 25 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/edit/api/part/AbstractDiagramElementContainerEditPart.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/edit/api/part/AbstractDiagramElementContainerEditPart.java index 039bc7bb1d..a893ab375c 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/edit/api/part/AbstractDiagramElementContainerEditPart.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/edit/api/part/AbstractDiagramElementContainerEditPart.java @@ -407,16 +407,6 @@ public abstract class AbstractDiagramElementContainerEditPart extends AbstractBo configureBorder(primaryShape); } } - /* Update background for containers */ - final DDiagramElement diagElement = this.resolveDiagramElement(); - if (diagElement instanceof DNodeContainer) { - final DNodeContainer container = (DNodeContainer) diagElement; - if (primaryShape instanceof GradientRoundedRectangle && container.getOwnedStyle() instanceof FlatContainerStyle) { - if (((GradientRoundedRectangle) primaryShape).getBackgroundStyle() != ((FlatContainerStyle) container.getOwnedStyle()).getBackgroundStyle()) { - reInitFigure(); - } - } - } } super.refreshVisuals(); diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/edit/internal/part/DiagramContainerEditPartOperation.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/edit/internal/part/DiagramContainerEditPartOperation.java index a7290753c1..e791886a19 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/edit/internal/part/DiagramContainerEditPartOperation.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/edit/internal/part/DiagramContainerEditPartOperation.java @@ -140,19 +140,12 @@ public final class DiagramContainerEditPartOperation { final DDiagramElement diagElement = self.resolveDiagramElement(); if (diagElement instanceof DDiagramElementContainer) { final DDiagramElementContainer ddec = (DDiagramElementContainer) diagElement; - - /* The background figure */ - if (self.getBackgroundFigure() instanceof IWorkspaceImageFigure && ddec.getOwnedStyle() != null) { - ((IWorkspaceImageFigure) self.getBackgroundFigure()).refreshFigure(ddec.getOwnedStyle()); - } - + final ViewNodeContainerFigureDesc primaryShape = self.getPrimaryShape(); final ContainerStyle style = ddec.getOwnedStyle(); - if (DiagramContainerEditPartOperation.isPrimaryShapeChanging(self, style)) { - self.reInitFigure(); - } - ViewNodeContainerFigureDesc primaryShape = self.getPrimaryShape(); + refreshBackgroundFigure(self, ddec, primaryShape, style); refreshBorder(self, primaryShape, style); + if (primaryShape instanceof GradientRoundedRectangle) { refreshGradient(style, (GradientRoundedRectangle) primaryShape); } @@ -167,6 +160,27 @@ public final class DiagramContainerEditPartOperation { } } + private static void refreshBackgroundFigure(final AbstractDiagramElementContainerEditPart self, final DDiagramElementContainer ddec, final ViewNodeContainerFigureDesc primaryShape, + final ContainerStyle style) { + + // Update the background figure when the workspace image path changes. + if (self.getBackgroundFigure() instanceof IWorkspaceImageFigure && ddec.getOwnedStyle() != null) { + ((IWorkspaceImageFigure) self.getBackgroundFigure()).refreshFigure(ddec.getOwnedStyle()); + } + + // Update the background figure when the background gradient style + if (primaryShape instanceof GradientRoundedRectangle && style instanceof FlatContainerStyle) { + if (((GradientRoundedRectangle) primaryShape).getBackgroundStyle() != ((FlatContainerStyle) style).getBackgroundStyle()) { + self.reInitFigure(); + } + } + + // Update background figure when the primary shape should change. + if (isPrimaryShapeChanging(self, style)) { + self.reInitFigure(); + } + } + private static void refreshGradient(final ContainerStyle style, GradientRoundedRectangle gradientRoundedShape) { // The gradient style if (style instanceof FlatContainerStyle) { @@ -184,7 +198,6 @@ public final class DiagramContainerEditPartOperation { if (self.isRegion()) { // If the current stack is a Region, check and avoid overlap of the // region container border. - DNodeContainer regionContainer = (DNodeContainer) diagElement.eContainer(); Dimension regionContainerCornerDimension = getCornerDimension(regionContainer); if (!regionContainerCornerDimension.getShrinked(cornerDimension).isEmpty()) { @@ -339,10 +352,14 @@ public final class DiagramContainerEditPartOperation { if (!result) { // Test changed from FlatContainerStyle result = self.getPrimaryShape() instanceof GradientRoundedRectangle && (style instanceof ShapeContainerStyle || style instanceof WorkspaceImage); - if (!result) { - // Test changed from WorkspaceImage - result = self.getPrimaryShape() instanceof ViewNodeContainerRectangleFigureDesc && (style instanceof FlatContainerStyle || style instanceof ShapeContainerStyle); - } + } + if (!result) { + // Test changed from WorkspaceImage + result = self.getPrimaryShape() instanceof ViewNodeContainerRectangleFigureDesc && (style instanceof FlatContainerStyle || style instanceof ShapeContainerStyle); + } + if (!result) { + // Test changed from WorkspaceImage.workspacePath + result = style instanceof WorkspaceImage && (self.getBackgroundFigure() == null ^ StringUtil.isEmpty(((WorkspaceImage) style).getWorkspacePath())); } return result; } |
