diff options
| author | Pierre-Charles David | 2016-03-25 13:59:44 +0000 |
|---|---|---|
| committer | Pierre-Charles David | 2016-06-08 13:56:33 +0000 |
| commit | 2ac89a3aecf989a2dd70b9ef27c1ed86e4b47735 (patch) | |
| tree | 5821e3b91c51286e24f3542b334800f79b657084 | |
| parent | 585370bbab9a85d1e1c64df823714f6e63862d43 (diff) | |
| download | org.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.java | 32 |
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; } /** |
