Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Redor2016-12-11 19:39:13 +0000
committerLaurent Redor2016-12-16 16:43:43 +0000
commit60cd0144ebd624c5fe4f838adbd6f40ce7f18b06 (patch)
treef044139abffaaa206e00cadf6d931951d4c6df3a
parentfe01975a4198728263873ddbaf597c2581d673f1 (diff)
downloadorg.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>
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/plugin.xml12
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/edit/parts/AbstractDEdgeNameEditPart.java13
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/menu/DiagramEditorContextMenuProvider.java5
-rw-r--r--plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/LabelFontModificationsTest.java78
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).
*

Back to the top