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() {
}
private IResource extractSelection(ISelection sel) {
if (!(sel instanceof IStructuredSelection))
return null;
IStructuredSelection ss = (IStructuredSelection) sel;
Object element =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) element;
}
/**
* 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;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>
<plugin>
<extension
point="org.eclipse.ui.actionSets">
<actionSet
label="Bad Smells Action Set"
visible="true"
id="uom.se.refactoring.jprojects.eclipse.refactoringDetector.actionSet">
<menu
label="Bad Smells"
id="BadSmellsMenu">
<separator
name="sampleGroup">
</separator>
</menu>
<action
label="Feature Envy"
icon="icons/sample.gif"
class="uom.se.refactoring.jprojects.eclipse.refactoringdetector.actions.BadSmellsMenu"
tooltip="Feature Envy"
menubarPath="BadSmellsMenu/sampleGroup"
toolbarPath="sampleGroup"
id="uom.se.refactoring.jprojects.eclipse.refactoringdetector.actions.BadSmellsMenu">
</action>
</actionSet>
</extension>
<extension
point="org.eclipse.ui.views">
<category
name="Bad Smells"
id="uom.se.refactoring.jprojects.eclipse.refactoringDetector.BadSmells">
</category>
<view
name="Feature Envy"
icon="icons/sample.gif"
category="uom.se.refactoring.jprojects.eclipse.refactoringDetector.BadSmells"
class="uom.se.refactoring.jprojects.eclipse.refactoringdetector.views.FeatureEnvy"
id="uom.se.refactoring.jprojects.eclipse.refactoringdetector.views.FeatureEnvy">
</view>
</extension>
<extension
point="org.eclipse.ui.perspectiveExtensions">
<perspectiveExtension
targetID="org.eclipse.ui.resourcePerspective">
<view
ratio="0.5"
relative="org.eclipse.ui.views.TaskList"
relationship="right"
id="uom.se.refactoring.jprojects.eclipse.refactoringdetector.views.FeatureEnvy">
</view>
</perspectiveExtension>
</extension>
</plugin>