diff options
| author | Florian Barbin | 2016-03-18 08:53:31 +0000 |
|---|---|---|
| committer | Laurent Redor | 2016-08-09 14:08:35 +0000 |
| commit | a279d5e69598778e880cc37d95f9c0fc3895516a (patch) | |
| tree | 0a438505e3f97d64beda2a639277275277322b64 | |
| parent | 3961312b24e647dca40ef3b4460f3f7d6c9d2b9e (diff) | |
| download | org.eclipse.sirius-a279d5e69598778e880cc37d95f9c0fc3895516a.tar.gz org.eclipse.sirius-a279d5e69598778e880cc37d95f9c0fc3895516a.tar.xz org.eclipse.sirius-a279d5e69598778e880cc37d95f9c0fc3895516a.zip | |
[499370] Have format/style actions available on edge name
* Install the SiriusPropertyHandlerEditPolicy for EdgeNameEditPart
* Correctly handle ResetStylePropertiesToDefaultValuesAction for edge
name
* Complete existing LabelFontModificationsTest
Bug: 499370
Change-Id: I0e8c8f4072545c6dcf8569f5d1f100d3138258c9
Signed-off-by: Florian Barbin <florian.barbin@obeo.fr>
Signed-off-by: Laurent Redor <laurent.redor@obeo.fr>
6 files changed, 81 insertions, 14 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/SiriusPropertyHandlerEditPolicy.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/SiriusPropertyHandlerEditPolicy.java index 1abb194228..e8b7230e65 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/SiriusPropertyHandlerEditPolicy.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/SiriusPropertyHandlerEditPolicy.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2015 THALES GLOBAL SERVICES and others. + * Copyright (c) 2007, 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 @@ -39,7 +39,9 @@ import org.eclipse.sirius.diagram.DNode; import org.eclipse.sirius.diagram.EdgeStyle; import org.eclipse.sirius.diagram.NodeStyle; import org.eclipse.sirius.diagram.business.api.query.EObjectQuery; +import org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramEdgeEditPart; import org.eclipse.sirius.diagram.ui.edit.api.part.IDiagramElementEditPart; +import org.eclipse.sirius.diagram.ui.internal.edit.parts.AbstractDEdgeNameEditPart; import org.eclipse.sirius.diagram.ui.internal.refresh.diagram.ViewPropertiesSynchronizer; import org.eclipse.sirius.diagram.ui.provider.Messages; import org.eclipse.sirius.viewpoint.DStylizable; @@ -80,7 +82,7 @@ public class SiriusPropertyHandlerEditPolicy extends PropertyHandlerEditPolicy { if (styleCommand != null) { final CompoundCommand cc = new CompoundCommand(); - cc.setDebugLabel(Messages.SiriusPropertyHandlerEditPolicy_chainedStyleCommandDebugLabel); + cc.setDebugLabel(Messages.SiriusPropertyHandlerEditPolicy_chainedStyleCommandDebugLabel); cc.add(c); cc.add(styleCommand); return cc; @@ -187,4 +189,15 @@ public class SiriusPropertyHandlerEditPolicy extends PropertyHandlerEditPolicy { } return null; } + + @Override + public EditPart getTargetEditPart(Request request) { + EditPart result = super.getTargetEditPart(request); + if (result instanceof AbstractDEdgeNameEditPart && result.getParent() instanceof AbstractDiagramEdgeEditPart) { + // For DEdge name, this kind of request is handled by its parent + // DEdge. + return result.getParent(); + } + return result; + } } diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/edit/parts/AbstractDEdgeNameEditPart.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/edit/parts/AbstractDEdgeNameEditPart.java index 1bbe9a65bb..b73973b7b9 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/edit/parts/AbstractDEdgeNameEditPart.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/edit/parts/AbstractDEdgeNameEditPart.java @@ -18,6 +18,7 @@ import org.eclipse.gef.editparts.AbstractConnectionEditPart; import org.eclipse.gef.editparts.AbstractGraphicalEditPart; import org.eclipse.gef.tools.DirectEditManager; import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; import org.eclipse.gmf.runtime.emf.type.core.IElementType; import org.eclipse.gmf.runtime.notation.NotationPackage; import org.eclipse.gmf.runtime.notation.View; @@ -27,6 +28,7 @@ import org.eclipse.sirius.diagram.business.api.query.IEdgeMappingQuery; import org.eclipse.sirius.diagram.description.EdgeMapping; import org.eclipse.sirius.diagram.ui.graphical.edit.policies.DEdgeNameSelectionFeedbackEditPolicy; import org.eclipse.sirius.diagram.ui.graphical.edit.policies.ResizableShapeLabelEditPolicy; +import org.eclipse.sirius.diagram.ui.graphical.edit.policies.SiriusPropertyHandlerEditPolicy; import org.eclipse.sirius.diagram.ui.internal.edit.parts.locator.EdgeLabelLocator; import org.eclipse.sirius.diagram.ui.internal.providers.SiriusElementTypes; import org.eclipse.sirius.diagram.ui.tools.api.figure.SiriusWrapLabel; @@ -66,6 +68,9 @@ public class AbstractDEdgeNameEditPart extends AbstractGeneratedDiagramNameEditP } else { installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, selectionFeedBackEditPolicy); } + // Enables Font and Style action on Label of Edge + removeEditPolicy(EditPolicyRoles.PROPERTY_HANDLER_ROLE); + installEditPolicy(EditPolicyRoles.PROPERTY_HANDLER_ROLE, new SiriusPropertyHandlerEditPolicy()); } diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/actions/style/ResetStylePropertiesToDefaultValuesAction.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/actions/style/ResetStylePropertiesToDefaultValuesAction.java index 6f518f3e25..14d5575800 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/actions/style/ResetStylePropertiesToDefaultValuesAction.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/actions/style/ResetStylePropertiesToDefaultValuesAction.java @@ -27,6 +27,8 @@ import org.eclipse.sirius.diagram.DDiagram; import org.eclipse.sirius.diagram.DDiagramElement; import org.eclipse.sirius.diagram.business.api.query.DDiagramElementQuery; import org.eclipse.sirius.diagram.ui.business.api.query.ViewQuery; +import org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramEdgeEditPart; +import org.eclipse.sirius.diagram.ui.internal.edit.parts.AbstractDEdgeNameEditPart; import org.eclipse.sirius.diagram.ui.provider.DiagramUIPlugin; import org.eclipse.sirius.diagram.ui.provider.Messages; import org.eclipse.sirius.diagram.ui.tools.api.editor.DDiagramEditor; @@ -149,6 +151,13 @@ public class ResetStylePropertiesToDefaultValuesAction extends Action implements for (Object obj : structuredSelection.toList()) { if (obj instanceof IGraphicalEditPart) { IGraphicalEditPart graphicalEditPart = (IGraphicalEditPart) obj; + if (graphicalEditPart instanceof AbstractDEdgeNameEditPart && graphicalEditPart.getParent() instanceof AbstractDiagramEdgeEditPart) { + // For AbstractDEdgeNameEditPart, the parent + // AbstractDiagramEdgeEditPart must be considered (the + // GMF styles is + // supported by the Edge view) + graphicalEditPart = (IGraphicalEditPart) graphicalEditPart.getParent(); + } View view = graphicalEditPart.getNotationView(); EObject element = view.getElement(); if (element instanceof DDiagramElement) { diff --git a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/AbstractFontModificationTest.java b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/AbstractFontModificationTest.java index ddfecf635b..bfec2fabdf 100644 --- a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/AbstractFontModificationTest.java +++ b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/AbstractFontModificationTest.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010-2015 THALES GLOBAL SERVICES. + * Copyright (c) 2010, 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 @@ -13,6 +13,7 @@ package org.eclipse.sirius.tests.swtbot; import java.util.ArrayList; import java.util.List; +import org.eclipse.gef.EditPart; import org.eclipse.gmf.runtime.notation.Edge; import org.eclipse.gmf.runtime.notation.FontStyle; import org.eclipse.gmf.runtime.notation.Node; @@ -27,6 +28,7 @@ import org.eclipse.sirius.diagram.DNodeListElement; import org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramEdgeEditPart; import org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramElementContainerEditPart; import org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramNameEditPart; +import org.eclipse.sirius.diagram.ui.internal.edit.parts.AbstractDEdgeNameEditPart; import org.eclipse.sirius.diagram.ui.tools.api.figure.SiriusWrapLabel; import org.eclipse.sirius.tests.swtbot.support.api.business.UILocalSession; import org.eclipse.sirius.tests.swtbot.support.api.business.UIResource; @@ -187,8 +189,16 @@ public class AbstractFontModificationTest extends AbstractRefreshWithCustomizedS protected static void checkFontStyle(SWTBotGefEditPart editPart, int d2dStyle, int gmfStyle, List<FontFormat> viewpointStyle, boolean underlined, boolean strikedThrough, String fontName, int fontSize, int fontColor) { // Check the state of draw2d label, GMF view and Sirius style. - if (editPart.part() instanceof AbstractDiagramNameEditPart) { - AbstractDiagramNameEditPart part = (AbstractDiagramNameEditPart) editPart.part(); + EditPart currentPart = editPart.part(); + if (currentPart instanceof AbstractDEdgeNameEditPart) { + // For AbstractDEdgeNameEditPart, the parent + // AbstractDiagramEdgeEditPart must be considered (the + // GMF styles is + // supported by the Edge view) + currentPart = currentPart.getParent(); + } + if (currentPart instanceof AbstractDiagramNameEditPart) { + AbstractDiagramNameEditPart part = (AbstractDiagramNameEditPart) currentPart; assertTrue("The figure of this part should be a SiriusWrapLabel.", part.getFigure() instanceof SiriusWrapLabel); SiriusWrapLabel label = (SiriusWrapLabel) part.getFigure(); @@ -199,8 +209,8 @@ public class AbstractFontModificationTest extends AbstractRefreshWithCustomizedS DDiagramElement viewpointNode = part.resolveDiagramElement(); checkFont(viewpointNode, viewpointStyle); - } else if (editPart.part() instanceof AbstractDiagramElementContainerEditPart) { - AbstractDiagramElementContainerEditPart part = (AbstractDiagramElementContainerEditPart) editPart.part(); + } else if (currentPart instanceof AbstractDiagramElementContainerEditPart) { + AbstractDiagramElementContainerEditPart part = (AbstractDiagramElementContainerEditPart) currentPart; AbstractDiagramNameEditPart labelPart = (AbstractDiagramNameEditPart) part.getChildren().get(0); assertTrue("The figure of this part should be a SiriusWrapLabel.", labelPart.getFigure() instanceof SiriusWrapLabel); @@ -212,8 +222,8 @@ public class AbstractFontModificationTest extends AbstractRefreshWithCustomizedS DDiagramElement viewpointNode = part.resolveDiagramElement(); checkFont(viewpointNode, viewpointStyle); - } else if (editPart.part() instanceof AbstractDiagramEdgeEditPart) { - AbstractDiagramEdgeEditPart part = (AbstractDiagramEdgeEditPart) editPart.part(); + } else if (currentPart instanceof AbstractDiagramEdgeEditPart) { + AbstractDiagramEdgeEditPart part = (AbstractDiagramEdgeEditPart) currentPart; AbstractDiagramNameEditPart labelPart = (AbstractDiagramNameEditPart) part.getChildren().get(0); assertTrue("The figure of this part should be a SiriusWrapLabel.", labelPart.getFigure() instanceof SiriusWrapLabel); @@ -227,7 +237,7 @@ public class AbstractFontModificationTest extends AbstractRefreshWithCustomizedS DDiagramElement viewpointNode = part.resolveDiagramElement(); checkFont(viewpointNode, viewpointStyle); } else { - fail("The case of \"" + editPart.part().getClass().getName() + "\" is not managed by this method."); + fail("The case of \"" + currentPart.getClass().getName() + "\" is not managed by this method."); } } diff --git a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/AbstractRefreshWithCustomizedStyleTest.java b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/AbstractRefreshWithCustomizedStyleTest.java index 49b3a58f6e..ca5984f2f5 100644 --- a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/AbstractRefreshWithCustomizedStyleTest.java +++ b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/AbstractRefreshWithCustomizedStyleTest.java @@ -14,10 +14,15 @@ import java.util.Collection; import java.util.Iterator; import org.eclipse.gef.EditPart; +import org.eclipse.gmf.runtime.notation.Edge; +import org.eclipse.gmf.runtime.notation.Node; import org.eclipse.gmf.runtime.notation.View; import org.eclipse.sirius.business.api.session.SessionManager; import org.eclipse.sirius.diagram.DDiagram; import org.eclipse.sirius.diagram.DDiagramElement; +import org.eclipse.sirius.diagram.DEdge; +import org.eclipse.sirius.diagram.ui.internal.edit.parts.DEdgeEditPart; +import org.eclipse.sirius.diagram.ui.internal.edit.parts.DEdgeNameEditPart; import org.eclipse.sirius.diagram.ui.tools.internal.properties.ResetStylePropertiesToDefaultValuesSelectionAdapter; import org.eclipse.sirius.tests.swtbot.support.api.AbstractSiriusSwtBotGefTestCase; import org.eclipse.sirius.tests.swtbot.support.api.condition.WidgetIsDisabledCondition; @@ -242,7 +247,8 @@ public abstract class AbstractRefreshWithCustomizedStyleTest extends AbstractSir // Step 2: Enable button and check result checkboxToTest.click(); assertTrue("Checkbox should be checked", checkboxToTest.isChecked()); - assertTrue("The radio " + checkboxToTest.getToolTipText() + " has been modified, so the initial state should not be checked anymore", stateWhenRadioIsModifiedPredicate.apply(selectedEditPart)); + assertTrue("The radio " + checkboxToTest.getToolTipText() + " has been modified, so the initial state should not be checked anymore", + stateWhenRadioIsModifiedPredicate.apply(selectedEditPart)); checkButtonAppearanceChecked(Lists.<SWTBotToggleButton> newArrayList(), resetStyleCustomizationButton, Lists.newArrayList(true), true); // Step 3: Refresh @@ -333,7 +339,8 @@ public abstract class AbstractRefreshWithCustomizedStyleTest extends AbstractSir // Step 2: Enable button and check result comboBoxToTest.setSelection(modifiedComboValue); - assertTrue("The combo " + comboBoxToTest.getToolTipText() + " has been modified, so the initial state should not be checked anymore", stateWhenComboIsModifiedPredicate.apply(selectedEditPart)); + assertTrue("The combo " + comboBoxToTest.getToolTipText() + " has been modified, so the initial state should not be checked anymore", + stateWhenComboIsModifiedPredicate.apply(selectedEditPart)); checkButtonAppearanceChecked(Lists.<SWTBotToggleButton> newArrayList(), resetStyleCustomizationButton, Lists.newArrayList(true), true); assertEquals(modifiedComboValue, comboBoxToTest.getText()); @@ -345,7 +352,8 @@ public abstract class AbstractRefreshWithCustomizedStyleTest extends AbstractSir // Step 4: re-enable button and check result comboBoxToTest.setSelection(modifiedComboValue); - assertTrue("The combo " + comboBoxToTest.getToolTipText() + " has been modified, so the initial state should not be checked anymore", stateWhenComboIsModifiedPredicate.apply(selectedEditPart)); + assertTrue("The combo " + comboBoxToTest.getToolTipText() + " has been modified, so the initial state should not be checked anymore", + stateWhenComboIsModifiedPredicate.apply(selectedEditPart)); checkButtonAppearanceChecked(Lists.<SWTBotToggleButton> newArrayList(), resetStyleCustomizationButton, Lists.newArrayList(true), true); assertEquals(modifiedComboValue, comboBoxToTest.getText()); @@ -742,7 +750,19 @@ public abstract class AbstractRefreshWithCustomizedStyleTest extends AbstractSir // Step 6: Reopen diagram editor.close(); editor = (SWTBotSiriusDiagramEditor) openRepresentation(SessionManager.INSTANCE.getSessions().iterator().next(), representationDescriptionName, representationName, DDiagram.class); - selectedEditPart = editor.getEditPart(editor.getBounds(selectedEditPart).getCenter(), selectedEditPart.part().getClass()); + if (DEdgeEditPart.class.isInstance(selectedEditPart.part())) { + // Select the corresponding DEdge in the new editor + Edge gmfEdge = (Edge) ((DEdgeEditPart) selectedEditPart.part()).getModel(); + DEdge dEdge = (DEdge) gmfEdge.getElement(); + selectedEditPart = editor.getEditPart(dEdge.getName(), DEdgeEditPart.class); + } else if (DEdgeNameEditPart.class.isInstance(selectedEditPart.part())) { + // Select the corresponding DEdge name in the new editor + Node gmfNode = (Node) ((DEdgeNameEditPart) selectedEditPart.part()).getModel(); + DEdge dEdge = (DEdge) gmfNode.getElement(); + selectedEditPart = editor.getEditPart(dEdge.getName(), DEdgeNameEditPart.class); + } else { + selectedEditPart = editor.getEditPart(editor.getBounds(selectedEditPart).getCenter(), selectedEditPart.part().getClass()); + } selectedEditPart.select(); buttonFromTabbarToTest = bot.toolbarToggleButtonWithTooltip(tabbarButtonTooltip); resetStyleCustomizationButton = getResetStylePropertiesToDefaultValuesButtonFromTabbar(); diff --git a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/LabelFontModificationsTest.java b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/LabelFontModificationsTest.java index 97e5802b88..2df91e6fbb 100644 --- a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/LabelFontModificationsTest.java +++ b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/LabelFontModificationsTest.java @@ -18,6 +18,8 @@ import org.eclipse.gmf.runtime.draw2d.ui.figures.FigureUtilities; import org.eclipse.sirius.business.api.metamodel.helper.FontFormatHelper; import org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramEdgeEditPart; import org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramListEditPart; +import org.eclipse.sirius.diagram.ui.internal.edit.parts.DEdgeEditPart; +import org.eclipse.sirius.diagram.ui.internal.edit.parts.DEdgeNameEditPart; 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.edit.parts.DNodeList2EditPart; @@ -191,6 +193,8 @@ public class LabelFontModificationsTest extends AbstractFontModificationTest { doTestBoldFromToolbar("myAttribute", DNodeListElementEditPart.class); doTestBoldFromToolbar("myPackage", DNodeContainerEditPart.class); doTestBoldFromToolbar("myPackage2", DNodeContainer2EditPart.class); + doTestBoldFromToolbar("[0..1] newEReference1", DEdgeEditPart.class); + doTestBoldFromToolbar("[0..1] newEReference1", DEdgeNameEditPart.class); } /** @@ -217,6 +221,8 @@ public class LabelFontModificationsTest extends AbstractFontModificationTest { doTestItalicFromToolbar("myAttribute", DNodeListElementEditPart.class); doTestItalicFromToolbar("myPackage", DNodeContainerEditPart.class); doTestItalicFromToolbar("myPackage2", DNodeContainer2EditPart.class); + doTestItalicFromToolbar("[0..1] newEReference1", DEdgeEditPart.class); + doTestItalicFromToolbar("[0..1] newEReference1", DEdgeNameEditPart.class); } /** @@ -243,6 +249,8 @@ public class LabelFontModificationsTest extends AbstractFontModificationTest { doTestChangeLabelColorFromTabbar("myAttribute", DNodeListElementEditPart.class); doTestChangeLabelColorFromTabbar("myPackage", DNodeContainerEditPart.class); doTestChangeLabelColorFromTabbar("myPackage2", DNodeContainer2EditPart.class); + doTestChangeLabelColorFromTabbar("[0..1] newEReference1", DEdgeEditPart.class); + doTestChangeLabelColorFromTabbar("[0..1] newEReference1", DEdgeNameEditPart.class); } /** @@ -288,6 +296,8 @@ public class LabelFontModificationsTest extends AbstractFontModificationTest { doTestItalicAndBoldFromToolbar("myAttribute", DNodeListElementEditPart.class); doTestItalicAndBoldFromToolbar("myPackage", DNodeContainerEditPart.class); doTestItalicAndBoldFromToolbar("myPackage2", DNodeContainer2EditPart.class); + doTestItalicAndBoldFromToolbar("[0..1] newEReference1", DEdgeEditPart.class); + doTestItalicAndBoldFromToolbar("[0..1] newEReference1", DEdgeNameEditPart.class); } /** |
