All pastes #412470 Raw Edit

Unnamed

public text v1 · immutable
#412470 ·published 2007-03-27 18:29 UTC
rendered paste body
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>