manager class PapyrusSelectionManager added
diff --git a/org.eclipse.emf.refactor.smells.papyrus/META-INF/MANIFEST.MF b/org.eclipse.emf.refactor.smells.papyrus/META-INF/MANIFEST.MF
index c6e3db2..884ccd8 100644
--- a/org.eclipse.emf.refactor.smells.papyrus/META-INF/MANIFEST.MF
+++ b/org.eclipse.emf.refactor.smells.papyrus/META-INF/MANIFEST.MF
@@ -7,6 +7,7 @@
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
  org.eclipse.gmf.runtime.diagram.ui;bundle-version="1.6.0",
- org.eclipse.emf.facet.infra.browser.uicore;bundle-version="0.2.1"
+ org.eclipse.emf.facet.infra.browser.uicore;bundle-version="0.2.1",
+ org.eclipse.emf.refactor.smells;bundle-version="0.7.0"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/org.eclipse.emf.refactor.smells.papyrus/src/org/eclipse/emf/refactor/smells/papyrus/handler/FindModelSmellHandler.java b/org.eclipse.emf.refactor.smells.papyrus/src/org/eclipse/emf/refactor/smells/papyrus/handler/FindModelSmellHandler.java
index bfdb8b5..18fd4cf 100644
--- a/org.eclipse.emf.refactor.smells.papyrus/src/org/eclipse/emf/refactor/smells/papyrus/handler/FindModelSmellHandler.java
+++ b/org.eclipse.emf.refactor.smells.papyrus/src/org/eclipse/emf/refactor/smells/papyrus/handler/FindModelSmellHandler.java
@@ -4,8 +4,24 @@
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.commands.IHandler;
 import org.eclipse.core.commands.IHandlerListener;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.smells.papyrus.managers.PapyrusSelectionManager;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Cursor;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
 
 public class FindModelSmellHandler implements IHandler {
+	
+	private IFile selectedFile;
+	private EObject selectedEObject;
+	private IProject selectedProject;
+	private Shell shell;
 
 	@Override
 	public void addHandlerListener(IHandlerListener handlerListener) { }
@@ -13,10 +29,50 @@
 	@Override
 	public void dispose() { }
 
+	@SuppressWarnings("finally")
 	@Override
 	public Object execute(ExecutionEvent event) throws ExecutionException {
 		System.out.println("Here we go ...");
-		return null;
+		Cursor oldCursor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell().getCursor();
+		PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell().setCursor(new Cursor(null,SWT.CURSOR_WAIT));
+		ISelection selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().getSelection();
+		selectedEObject = PapyrusSelectionManager.getEObject(selection);
+		if (selectedEObject == null) {	
+			MessageDialog.openError(
+					shell,
+					"EMF Quality Assurance: Error when trying to execute smell search",
+					"No selected EMF model element!");
+			PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell().setCursor(oldCursor);
+			return null;
+		}
+		try {
+			if (selectedEObject != null) {
+				String path = selectedEObject.eResource().getURI().toPlatformString(true);
+				selectedFile = (IFile) ResourcesPlugin.getWorkspace().getRoot().findMember(path);
+			} 
+			selectedProject = selectedFile.getProject();
+//			RuntimeManager.getInstance();
+//			System.out.println("Root: " + selectedEObject);
+//			System.out.println("Project: " + selectedProject);
+//			RuntimeManager.findConfiguredModelSmells(selectedProject, selectedEObject, selectedFile);
+		} catch (Exception ex) {
+			Throwable cause = ex.getCause();
+			if(!(cause == null) && cause.getClass().getName().equals("org.eclipse.emf.ecore.xmi.PackageNotFoundException")){
+				MessageDialog.openError(
+						shell,
+						"EMF Quality Assurance: Error when trying to open File",
+						"The file you selected is not a (valid) EMF model.");
+			} else {
+			MessageDialog.openError(
+					shell,
+					"EMF Quality Assurance: Error when trying to execute smell search", 
+					ex.toString());
+			ex.printStackTrace();
+			}
+		} finally {
+			PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell().setCursor(oldCursor);
+			return true;
+		}
 	}
 
 	@Override
diff --git a/org.eclipse.emf.refactor.smells.papyrus/src/org/eclipse/emf/refactor/smells/papyrus/managers/PapyrusSelectionManager.java b/org.eclipse.emf.refactor.smells.papyrus/src/org/eclipse/emf/refactor/smells/papyrus/managers/PapyrusSelectionManager.java
new file mode 100644
index 0000000..7e65c3c
--- /dev/null
+++ b/org.eclipse.emf.refactor.smells.papyrus/src/org/eclipse/emf/refactor/smells/papyrus/managers/PapyrusSelectionManager.java
@@ -0,0 +1,40 @@
+package org.eclipse.emf.refactor.smells.papyrus.managers;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.facet.infra.browser.uicore.internal.model.ModelElementItem;
+import org.eclipse.emf.refactor.smells.managers.SelectionManager;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+
+@SuppressWarnings("restriction")
+public class PapyrusSelectionManager extends SelectionManager {
+
+	public static EObject getEObject(ISelection selection) {
+		if (selection == null)
+			return null;
+		EObject ret = SelectionManager.getEObject(selection);
+		
+		if (selection instanceof StructuredSelection) {
+			StructuredSelection ss = (StructuredSelection) selection;
+			Object o = ss.getFirstElement();
+			if (o instanceof ModelElementItem) {
+				System.out.println("instanceof ModelElementItem");
+				ModelElementItem mei = (ModelElementItem) o;
+	    		System.out.println("element: " + mei.getEObject());
+	    		ret = mei.getEObject();
+			} else {
+				if (o instanceof IGraphicalEditPart) {
+		    		System.out.println("instanceof IGraphicalEditPart");
+		    		IGraphicalEditPart gep = (IGraphicalEditPart) o;
+		    		System.out.println("element: " + gep.resolveSemanticElement());
+		    		ret = gep.resolveSemanticElement();
+		    	} else {
+		    		return null;
+		    	}
+			}
+		}
+		return ret;
+	}
+
+}