[527109] Fix a regression when POC is not enabled
Even if the POC is not enabled, there is a regression if someone
contributes a DoubleClickAction.
Bug: 527109
Change-Id: Ic8577e685672030cdeb3574b31ed90510147c302
Signed-off-by: Laurent Redor <laurent.redor@obeo.fr>
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/DoubleClickEditPolicyProvider.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/DoubleClickEditPolicyProvider.java
index bff3fbd..5a77a4b 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/DoubleClickEditPolicyProvider.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/DoubleClickEditPolicyProvider.java
@@ -21,7 +21,9 @@
import org.eclipse.gmf.runtime.diagram.ui.services.editpolicy.CreateEditPoliciesOperation;
import org.eclipse.gmf.runtime.diagram.ui.services.editpolicy.IEditPolicyProvider;
import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.sirius.diagram.DDiagram;
import org.eclipse.sirius.diagram.DDiagramElement;
+import org.eclipse.sirius.diagram.description.DiagramElementMapping;
import org.eclipse.sirius.diagram.ui.edit.api.part.IAbstractDiagramNodeEditPart;
import org.eclipse.sirius.diagram.ui.edit.api.part.IDiagramEdgeEditPart;
import org.eclipse.sirius.diagram.ui.edit.api.part.IDiagramNameEditPart;
@@ -58,6 +60,7 @@
@Override
public boolean provides(IOperation operation) {
+ boolean result = false;
if (operation instanceof CreateEditPoliciesOperation) {
CreateEditPoliciesOperation castedOperation = (CreateEditPoliciesOperation) operation;
EditPart editPart = castedOperation.getEditPart();
@@ -65,11 +68,18 @@
if (model instanceof View) {
EObject element = ((View) model).getElement();
if (element instanceof DDiagramElement) {
- return true;
+ DDiagramElement dDiagramElement = (DDiagramElement) element;
+ DDiagram parentDiagram = dDiagramElement.getParentDiagram();
+ if (parentDiagram.isIsInShowingMode()) {
+ result = true;
+ } else {
+ DiagramElementMapping diagramElementMapping = dDiagramElement.getDiagramElementMapping();
+ result = diagramElementMapping.getDoubleClickDescription() != null;
+ }
}
}
}
- return false;
+ return result;
}
@Override