class PapyrusProjectManager added
diff --git a/org.eclipse.emf.refactor.metrics.papyrus/META-INF/MANIFEST.MF b/org.eclipse.emf.refactor.metrics.papyrus/META-INF/MANIFEST.MF index 8eb4f69..8c14090 100644 --- a/org.eclipse.emf.refactor.metrics.papyrus/META-INF/MANIFEST.MF +++ b/org.eclipse.emf.refactor.metrics.papyrus/META-INF/MANIFEST.MF
@@ -6,9 +6,11 @@ Bundle-Activator: org.eclipse.emf.refactor.metrics.papyrus.Activator Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, + org.eclipse.jdt.core;bundle-version="3.8.1", org.eclipse.emf.ecore;bundle-version="2.8.1", org.eclipse.emf.refactor.metrics;bundle-version="0.7.0", org.eclipse.gmf.runtime.diagram.ui;bundle-version="1.6.0", org.eclipse.emf.facet.infra.browser.uicore;bundle-version="0.2.1" Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Import-Package: org.eclipse.ui
diff --git a/org.eclipse.emf.refactor.metrics.papyrus/src/org/eclipse/emf/refactor/metrics/papyrus/managers/PapyrusProjectManager.java b/org.eclipse.emf.refactor.metrics.papyrus/src/org/eclipse/emf/refactor/metrics/papyrus/managers/PapyrusProjectManager.java new file mode 100644 index 0000000..90c5e21 --- /dev/null +++ b/org.eclipse.emf.refactor.metrics.papyrus/src/org/eclipse/emf/refactor/metrics/papyrus/managers/PapyrusProjectManager.java
@@ -0,0 +1,60 @@ +package org.eclipse.emf.refactor.metrics.papyrus.managers; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.refactor.metrics.managers.ProjectManager; +import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; +import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditorInput; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IFileEditorInput; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PlatformUI; + +public class PapyrusProjectManager extends ProjectManager { + + @SuppressWarnings("finally") + public static IProject getActualProject(ISelection selection) { + IProject actualProject = ProjectManager.getActualProject(selection); + IWorkbenchWindow window = PlatformUI.getWorkbench() + .getActiveWorkbenchWindow(); + try { + IEditorPart editorPart = window.getActivePage().getActiveEditor(); + if (editorPart != null) { + IEditorInput input = editorPart.getEditorInput(); + if (input instanceof IFileEditorInput) { + IFileEditorInput fileInput = (IFileEditorInput) input; + actualProject = fileInput.getFile().getProject(); + } + if (input instanceof DiagramEditorInput) { + actualProject = getProjectFromISelection(selection); + } + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + return actualProject; + } + } + + private static IProject getProjectFromISelection(ISelection selection) { + IProject project = null; + Object o = PapyrusSelectionManager.getSelection(selection)[0]; + if (o instanceof IGraphicalEditPart) { + System.out.println("instanceof IGraphicalEditPart"); + IGraphicalEditPart gep = (IGraphicalEditPart) o; + EObject element = gep.resolveSemanticElement(); + System.out.println("element: " + element); + if (element != null) { + URI uri = gep.resolveSemanticElement().eResource().getURI(); + System.out.println("URI: " + uri); + String projectName = uri.segmentsList().get(1).toString(); + project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName); + } + } + return project; + } +}