diff options
| author | Maxime Porhel | 2015-08-26 15:08:00 +0000 |
|---|---|---|
| committer | Maxime Porhel | 2015-08-27 08:54:20 +0000 |
| commit | 76e801508e7452982cb4efdba9bcd8b37c5cc8d9 (patch) | |
| tree | 0bd0b6de795222ea57ac33157d7237d05c042bb5 | |
| parent | 69d9e9b4e4da54c7f62b783036719ce42f3c5056 (diff) | |
| download | org.eclipse.sirius-76e801508e7452982cb4efdba9bcd8b37c5cc8d9.tar.gz org.eclipse.sirius-76e801508e7452982cb4efdba9bcd8b37c5cc8d9.tar.xz org.eclipse.sirius-76e801508e7452982cb4efdba9bcd8b37c5cc8d9.zip | |
[472033] reInitFigure() should also update the drop shadow border
This method is called when the container/list style changes from
WorkspaceImage to FlatContainerStyle or the opposite, when the user
(a conditional style) changes the background style or when the user
uses the SetStyleToWorkspaceImage/ResetStyle buttons.
Bug: 472033
Change-Id: Ie017b35261c925181c682017d939fd25857196ea
Signed-off-by: Maxime Porhel <maxime.porhel@obeo.fr>
3 files changed, 26 insertions, 12 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 a893ab375c..97cfae6b10 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 @@ -898,5 +898,8 @@ public abstract class AbstractDiagramElementContainerEditPart extends AbstractBo if (containerCompartment != null) { mainFigure.add(containerCompartment); } + + // Update drop shadow. + mainFigure.setBorder(tmpFigure.getBorder()); } } 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 138ec95741..5c2bb8ece3 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 @@ -389,7 +389,7 @@ public final class DiagramContainerEditPartOperation { final EObject eObj = self.resolveSemanticElement(); if (eObj instanceof DDiagramElementContainer) { final DDiagramElementContainer container = (DDiagramElementContainer) eObj; - if ((container.getOwnedStyle() != null) && (container.getOwnedStyle() instanceof WorkspaceImage)) { + if (container.getOwnedStyle() instanceof WorkspaceImage) { final WorkspaceImage img = (WorkspaceImage) container.getOwnedStyle(); return createWkpImageFigure(img); } diff --git a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/SetStyleToWorkspaceImageTests.java b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/SetStyleToWorkspaceImageTests.java index 63d66c0569..5332a3f86d 100644 --- a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/SetStyleToWorkspaceImageTests.java +++ b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/SetStyleToWorkspaceImageTests.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010, 2014 THALES GLOBAL SERVICES. + * Copyright (c) 2010, 2015 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 @@ -27,6 +27,8 @@ import org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramNodeEditPart; import org.eclipse.sirius.diagram.ui.edit.api.part.IAbstractDiagramNodeEditPart; import org.eclipse.sirius.diagram.ui.edit.api.part.IDiagramContainerEditPart; import org.eclipse.sirius.diagram.ui.edit.api.part.IDiagramListEditPart; +import org.eclipse.sirius.diagram.ui.tools.api.figure.AlphaDropShadowBorder; +import org.eclipse.sirius.diagram.ui.tools.api.figure.GradientRoundedRectangle; import org.eclipse.sirius.diagram.ui.tools.api.figure.IWorkspaceImageFigure; import org.eclipse.sirius.diagram.ui.tools.api.figure.ViewNodeContainerRectangleFigureDesc; import org.eclipse.sirius.diagram.ui.tools.api.figure.WorkspaceImageFigure; @@ -503,7 +505,7 @@ public class SetStyleToWorkspaceImageTests extends AbstractSiriusSwtBotGefTestCa } assertNotNull(resetStylePropertiesToDefaultValuesButton); - assertTrue(resetStylePropertiesToDefaultValuesButton.isEnabled()); + assertTrue("Reset style button should be enabled.", resetStylePropertiesToDefaultValuesButton.isEnabled()); checkCustom(part, true); @@ -514,22 +516,24 @@ public class SetStyleToWorkspaceImageTests extends AbstractSiriusSwtBotGefTestCa Dimension newGMFSize = getSize((Node) part.getNotationView()); Dimension newD2DSize = getSize(part.getFigure()); - assertEquals(-1, newGMFSize.height); - assertEquals(oldGMFSize.width, newGMFSize.width); + assertEquals("The GMF height should be set to -1.", -1, newGMFSize.height); + assertEquals("The GMF width should be kept.", oldGMFSize.width, newGMFSize.width); if (part instanceof IDiagramContainerEditPart || part instanceof IDiagramListEditPart) { // Auto-sized container are resized on set wkp image to get the // image size. - assertEquals(-1, oldGMFSize.width); - assertEquals(image.getBounds().width, newD2DSize.width, 2); - assertEquals(image.getBounds().height, newD2DSize.height, 2); - assertTrue(((AbstractDiagramElementContainerEditPart) part).getPrimaryShape() instanceof ViewNodeContainerRectangleFigureDesc); - assertTrue(((AbstractDiagramElementContainerEditPart) part).getBackgroundFigure() instanceof IWorkspaceImageFigure); + assertEquals("The GMF width was and stays -1.", -1, oldGMFSize.width); + assertEquals("The figure size should correspond to the image width.", image.getBounds().width, newD2DSize.width, 2); + assertEquals("The figure size should correspond to the image width.", image.getBounds().height, newD2DSize.height, 2); + assertTrue("The primary shape should be a ViewNodeContainerRectangleFigureDesc.", + ((AbstractDiagramElementContainerEditPart) part).getPrimaryShape() instanceof ViewNodeContainerRectangleFigureDesc); + assertTrue("The background figure should be a IWorkspaceImageFigure.", ((AbstractDiagramElementContainerEditPart) part).getBackgroundFigure() instanceof IWorkspaceImageFigure); + assertNull("The image figure should not have a drop shadow border.", ((AbstractDiagramElementContainerEditPart) part).getMainFigure().getBorder()); } else { // Nodes keep their size and the height is modified to keep the // image ratio - assertEquals(oldD2DSize.width, newD2DSize.width); - assertEquals(newHeight, newD2DSize.height, 2); + assertEquals("The node GMF width should not be impacted.", oldD2DSize.width, newD2DSize.width); + assertEquals("The node figure should have the same ratio than the image.", newHeight, newD2DSize.height, 2); } click(resetStylePropertiesToDefaultValuesButton); @@ -551,6 +555,13 @@ public class SetStyleToWorkspaceImageTests extends AbstractSiriusSwtBotGefTestCa assertEquals(oldGMFSize.width, newGMFSize2.width); // assertEquals(oldGMFSize.height, newGMFSize2.height); + + if (part instanceof IDiagramContainerEditPart || part instanceof IDiagramListEditPart) { + assertTrue("The primary shape should be a GradientRoundedRectangle.", ((AbstractDiagramElementContainerEditPart) part).getPrimaryShape() instanceof GradientRoundedRectangle); + assertNull("The background figure should be null for a gradient style.", ((AbstractDiagramElementContainerEditPart) part).getBackgroundFigure()); + // Alpha drop shadow has been recreated. + assertTrue("The drop shadow border should have been recreated.", ((AbstractDiagramElementContainerEditPart) part).getMainFigure().getBorder() instanceof AlphaDropShadowBorder); + } } private Dimension getSize(Node gmfNode) { |
