diff options
| author | Laurent Redor | 2016-12-11 19:39:13 +0000 |
|---|---|---|
| committer | Laurent Redor | 2016-12-16 16:43:43 +0000 |
| commit | 60cd0144ebd624c5fe4f838adbd6f40ce7f18b06 (patch) | |
| tree | f044139abffaaa206e00cadf6d931951d4c6df3a | |
| parent | fe01975a4198728263873ddbaf597c2581d673f1 (diff) | |
| download | org.eclipse.sirius-60cd0144ebd624c5fe4f838adbd6f40ce7f18b06.tar.gz org.eclipse.sirius-60cd0144ebd624c5fe4f838adbd6f40ce7f18b06.tar.xz org.eclipse.sirius-60cd0144ebd624c5fe4f838adbd6f40ce7f18b06.zip | |
[509364] Have "Font..." and "Font Color" contextual menus on edge name
With this commit, the "Font..." and "Font Color" contextual menus are
now available when an edge name is selected.
The plugin.xml has been modified to add "Font..." contextual menu for
AbstractDiagramNameEditPart.
The DiagramEditorContextMenuProvider.updateFormatMenu() has been
completed to add the menu "Font Color" when "Font..." is available. The
AbstractDEdgeNameEditPart has been modified to return the parent DEdge
for request corresponding to "Font Color" action.
Bug: 509364
Change-Id: Idf5276165be4a8b03f5e84501f0ade1dd7d75e28
Signed-off-by: Laurent Redor <laurent.redor@obeo.fr>
4 files changed, 108 insertions, 0 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/plugin.xml b/plugins/org.eclipse.sirius.diagram.ui/plugin.xml index a2254546e1..970c3adba3 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/plugin.xml +++ b/plugins/org.eclipse.sirius.diagram.ui/plugin.xml @@ -421,6 +421,18 @@ remove="true"> </popupPredefinedItem> </popupContribution> + <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider"> + <popupStructuredContributionCriteria objectClass="org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramNameEditPart"> + </popupStructuredContributionCriteria> + <popupMenuGroup id="filterFormatGroup"> + </popupMenuGroup> + <popupMenu path="/filterFormatGroup" id="formatMenu"> + </popupMenu> + <popupMenuGroup path="/formatMenu/" id="fontFillLineGroup"> + </popupMenuGroup> + <popupAction path="/formatMenu/fontFillLineGroup" id="fontDialogAction"> + </popupAction> + </popupContribution> </contributionItemProvider> <contributionItemProvider 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 b73973b7b9..d8ab1470ee 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 @@ -13,12 +13,16 @@ package org.eclipse.sirius.diagram.ui.internal.edit.parts; import org.eclipse.draw2d.IFigure; import org.eclipse.draw2d.geometry.Rectangle; import org.eclipse.emf.common.notify.Notification; +import org.eclipse.gef.EditPart; import org.eclipse.gef.EditPolicy; +import org.eclipse.gef.Request; 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.diagram.ui.internal.properties.Properties; +import org.eclipse.gmf.runtime.diagram.ui.requests.ChangePropertyValueRequest; import org.eclipse.gmf.runtime.emf.type.core.IElementType; import org.eclipse.gmf.runtime.notation.NotationPackage; import org.eclipse.gmf.runtime.notation.View; @@ -38,6 +42,7 @@ import org.eclipse.sirius.ext.base.Option; /** * @was-generated */ +@SuppressWarnings("restriction") public class AbstractDEdgeNameEditPart extends AbstractGeneratedDiagramNameEditPart implements ITextAwareEditPart { /** @@ -159,4 +164,12 @@ public class AbstractDEdgeNameEditPart extends AbstractGeneratedDiagramNameEditP } } + @Override + public EditPart getTargetEditPart(Request request) { + if (request instanceof ChangePropertyValueRequest && ((ChangePropertyValueRequest) request).getPropertyID().equals(Properties.ID_FONTCOLOR)) { + return getParent(); + } else { + return super.getTargetEditPart(request); + } + } } diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/menu/DiagramEditorContextMenuProvider.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/menu/DiagramEditorContextMenuProvider.java index 523fc4d413..57714626fa 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/menu/DiagramEditorContextMenuProvider.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/menu/DiagramEditorContextMenuProvider.java @@ -203,6 +203,11 @@ public class DiagramEditorContextMenuProvider extends DiagramContextMenuProvider ColorPropertyContributionItem fontColorContributionItem = ColorPropertyContributionItem.createFontColorContributionItem(part.getSite().getPage()); manager2.insertAfter(ActionIds.CUSTOM_FILL_COLOR, fontColorContributionItem); manager2.insertAfter(ActionIds.CUSTOM_FONT_COLOR, ColorPropertyContributionItem.createLineColorContributionItem(part.getSite().getPage())); + } else { + item = manager2.findUsingPath(ActionIds.ACTION_FONT_DIALOG); + if (item != null) { + manager2.insertAfter(ActionIds.ACTION_FONT_DIALOG, ColorPropertyContributionItem.createFontColorContributionItem(part.getSite().getPage())); + } } } } 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 6b5c241e63..f9eb957f1d 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 @@ -10,6 +10,9 @@ *******************************************************************************/ package org.eclipse.sirius.tests.swtbot; +import java.awt.AWTException; +import java.awt.Robot; +import java.awt.event.KeyEvent; import java.util.ArrayList; import java.util.List; @@ -32,6 +35,10 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.RGB; import org.eclipse.swtbot.eclipse.gef.finder.widgets.SWTBotGefEditPart; import org.eclipse.swtbot.swt.finder.SWTBot; +import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException; +import org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable; +import org.eclipse.swtbot.swt.finder.results.VoidResult; +import org.eclipse.swtbot.swt.finder.utils.SWTUtils; import org.eclipse.swtbot.swt.finder.widgets.SWTBotButton; import org.eclipse.swtbot.swt.finder.widgets.SWTBotToggleButton; import org.eclipse.swtbot.swt.finder.widgets.SWTBotToolbarButton; @@ -458,6 +465,77 @@ public class LabelFontModificationsTest extends AbstractFontModificationTest { } /** + * Check if the menu "Font Color" is available on edge. + */ + public void testFontColorMenuAvailabilityOnEdge() { + selectAndCheckEditPart("[0..1] newEReference1", DEdgeEditPart.class); + try { + editor.clickContextMenu("Font Color"); + } catch (WidgetNotFoundException e) { + fail("The contextual menu \"Font Color\" should exist for edge."); + } + } + + /** + * Check if the menu "Font Color" is available on edge label. + */ + public void testFontColorMenuAvailabilityOnEdgeLabel() { + selectAndCheckEditPart("[0..1] newEReference1", DEdgeNameEditPart.class); + try { + editor.clickContextMenu("Font Color"); + } catch (WidgetNotFoundException e) { + fail("The contextual menu \"Font Color\" should exist for edge label."); + } + } + + /** + * Check if the menu "Font..." is available on edge. + */ + public void testFontMenuAvailabilityOnEdge() { + testFontMenuAvailability("[0..1] newEReference1", DEdgeEditPart.class); + } + + /** + * Check if the menu "Font..." is available on edge label. + */ + public void testFontMenuAvailabilityOnEdgeLabel() { + testFontMenuAvailability("[0..1] newEReference1", DEdgeNameEditPart.class); + } + + /** + * Check if the menu "Font..." is available on the edit part with the given + * name and of the given type. + * + * @param name + * the edit part name + * @param type + * the expected editpart type. + */ + protected void testFontMenuAvailability(String name, Class<? extends EditPart> type) { + selectAndCheckEditPart(name, type); + try { + editor.clickContextMenu("Font..."); + // Wait that system Font dialog opens + SWTUtils.sleep(100); + // Close the system Font dialog by pressing Esc key + try { + final Robot awtRobot = new Robot(); + UIThreadRunnable.syncExec(bot.getDisplay(), new VoidResult() { + @Override + public void run() { + awtRobot.keyPress(KeyEvent.VK_ESCAPE); + awtRobot.keyRelease(KeyEvent.VK_ESCAPE); + } + }); + } catch (final AWTException e) { + throw new RuntimeException(e); + } + } catch (WidgetNotFoundException e) { + fail("The contextual menu \"Font...\" should exist for " + type.getSimpleName() + "."); + } + } + + /** * Ensures that underlining a label from the appearance page works as * expected (and also tests that the style is considered as customized). * |
