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;
+	}
+}
