Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre-Charles David2016-03-25 13:59:44 +0000
committerPierre-Charles David2016-06-08 13:56:33 +0000
commit2ac89a3aecf989a2dd70b9ef27c1ed86e4b47735 (patch)
tree5821e3b91c51286e24f3542b334800f79b657084
parent585370bbab9a85d1e1c64df823714f6e63862d43 (diff)
downloadorg.eclipse.sirius-2ac89a3aecf989a2dd70b9ef27c1ed86e4b47735.tar.gz
org.eclipse.sirius-2ac89a3aecf989a2dd70b9ef27c1ed86e4b47735.tar.xz
org.eclipse.sirius-2ac89a3aecf989a2dd70b9ef27c1ed86e4b47735.zip
[485426] Fix CCE and logic bug in GMFHelper.getGraphicalEditPart()
Also use more precise variable names, and return early when the editor we're looking for is found. Bug: 485426 Change-Id: Ie39dad0fb839082fc15268ed8714681994353429 Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/refresh/GMFHelper.java32
1 files changed, 16 insertions, 16 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/refresh/GMFHelper.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/refresh/GMFHelper.java
index d9e5cff272..585339e35b 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/refresh/GMFHelper.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/refresh/GMFHelper.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2011, 2015 THALES GLOBAL SERVICES and others.
+ * Copyright (c) 2011, 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
@@ -632,27 +632,27 @@ public final class GMFHelper {
* @return The optional corresponding edit part.
*/
public static Option<GraphicalEditPart> getGraphicalEditPart(View view) {
- Option<GraphicalEditPart> result = Options.newNone();
- DiagramEditor diagramEditor = null;
if (view != null) {
- final IEditorPart editor = EclipseUIUtil.getActiveEditor();
- Diagram diagram = view.getDiagram();
- if (editor instanceof DiagramEditor && ((DiagramEditor) editor).getDiagram() == diagram) {
- diagramEditor = (DiagramEditor) editor;
- } else if (diagram.getElement() instanceof DDiagram) {
- DDiagram diag = (DDiagram) diagram.getElement();
+ Diagram gmfDiagram = view.getDiagram();
+ // Try the active editor first (most likely case in practice)
+ IEditorPart editor = EclipseUIUtil.getActiveEditor();
+ if (isEditorFor(editor, gmfDiagram)) {
+ return getGraphicalEditPart(view, (DiagramEditor) editor);
+ } else if (gmfDiagram.getElement() instanceof DDiagram) {
+ // Otherwise check all active Sirius editors
for (IEditingSession uiSession : SessionUIManager.INSTANCE.getUISessions()) {
- DialectEditor dialectEditor = uiSession.getEditor(diag);
- if (dialectEditor instanceof DiagramEditor && ((DiagramEditor) editor).getDiagram() != diagram) {
- diagramEditor = (DiagramEditor) dialectEditor;
+ DialectEditor dialectEditor = uiSession.getEditor((DDiagram) gmfDiagram.getElement());
+ if (isEditorFor(dialectEditor, gmfDiagram)) {
+ return getGraphicalEditPart(view, (DiagramEditor) dialectEditor);
}
}
}
}
- if (diagramEditor != null) {
- return getGraphicalEditPart(view, diagramEditor);
- }
- return result;
+ return Options.<GraphicalEditPart>newNone();
+ }
+
+ private static boolean isEditorFor(IEditorPart editor, Diagram diagram) {
+ return editor instanceof DiagramEditor && ((DiagramEditor) editor).getDiagram() == diagram;
}
/**

Back to the top