package uom.se.refactoring.jprojects.eclipse.refactoringdetector.actions; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.IPageLayout; import org.eclipse.ui.ISelectionListener; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.core.internal.resources.Project; import org.eclipse.core.resources.*; import org.eclipse.core.runtime.*; import org.eclipse.jdt.core.*; import java.io.*; /** * Our sample action implements workbench action delegate. * The action proxy will be created by the workbench and * shown in the UI. When the user tries to use the action, * this delegate will be created and execution will be * delegated to it. * @see IWorkbenchWindowActionDelegate */ public class BadSmellsMenu implements IWorkbenchWindowActionDelegate { private IWorkbenchWindow window; /** * The constructor. */ public BadSmellsMenu() { } IResource extractSelection(ISelection sel) { if (!(sel instanceof IStructuredSelection)) return null; IStructuredSelection ss = (IStructuredSelection) sel; IProject element =(IProject) ss.getFirstElement(); if (element instanceof IResource) return (IResource) element; if (!(element instanceof IAdaptable)) return null; IAdaptable adaptable = (IAdaptable)element; Object adapter = adaptable.getAdapter(IResource.class); return (IResource) adapter; } /** * The action has been activated. The argument of the * method represents the 'real' action sitting * in the workbench UI. * @see IWorkbenchWindowActionDelegate#run */ public void run(IAction action) { IWorkbenchPage page=window.getActivePage(); ISelection selection=page.getSelection(IPageLayout.ID_RES_NAV); IResource res=extractSelection(selection); ISelectionListener sl = new ISelectionListener() { public void selectionChanged(IWorkbenchPart part, ISelection sel) { System.out.println("Selection is: " + sel); } }; page.addSelectionListener(sl); IProject iproject=res.getProject(); //IJavaModel jmodel=JavaCore.create(workspace.getRoot()); //IPath ipath=jmodel.getPath(); //IProject myProject = myWorkspaceRoot.getProject(); //IPath ipath=myProject.getFullPath(); //String path=ipath.toOSString(); //int index=path.lastIndexOf(File.pathSeparator); //path=path.substring(0,index); //File file=new File(path); String str=iproject.getName(); /*if(myProject.isOpen()){ str=myProject.getName(); }*/ MessageDialog.openInformation( window.getShell(), "Feature Envy Detection", //"This service is temporarily unavailable. We apologise for the inconvenience." str); } /** * Selection in the workbench has been changed. We * can change the state of the 'real' action here * if we want, but this can only happen after * the delegate has been created. * @see IWorkbenchWindowActionDelegate#selectionChanged */ public void selectionChanged(IAction action, ISelection selection) { } /** * We can use this method to dispose of any system * resources we previously allocated. * @see IWorkbenchWindowActionDelegate#dispose */ public void dispose() { } /** * We will cache window object in order to * be able to provide parent shell for the message dialog. * @see IWorkbenchWindowActionDelegate#init */ public void init(IWorkbenchWindow window) { this.window = window; } }