package net.sourceforge.phpeclipse.example.outline; import net.sourceforge.phpdt.core.IMethod; import net.sourceforge.phpdt.core.IType; import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IActionDelegate; import org.eclipse.ui.IObjectActionDelegate; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchPartSite; public class Type2Console implements IObjectActionDelegate { private IWorkbenchPartSite myPartSite = null; private IWorkspace myWorkspace = null; private IWorkbenchPart myWorkbenchPart = null; private IType myType = null; private Shell myShell = new Shell(); // TBReplaced with getShell() public Type2Console() { } /** * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart) */ public void setActivePart(IAction action, IWorkbenchPart targetPart) { myWorkspace = ResourcesPlugin.getWorkspace(); myWorkbenchPart = targetPart; } /** * @see IActionDelegate#run(IAction) */ public void run(IAction action) { try { String actionId = action.getId(); showSourceInConsole(actionId); } catch (Exception e) { e.printStackTrace(); } } /** * @see IActionDelegate#selectionChanged(IAction, ISelection) */ public void selectionChanged(IAction action, ISelection selection) { if (selection instanceof IStructuredSelection) { Object item = ((IStructuredSelection) selection).getFirstElement(); myType = (IType) item; // this plugin only reacts to // "org.eclipse.jdt.core.IType" objects } } private void showSourceInConsole(String actionId) throws Exception { System.out.println(actionId); if (!(myType.isInterface() || myType.isClass())) { throw new Exception("incompatible Type"); } IMethod[] methods = myType.getMethods(); String fqname = myType.getFullyQualifiedName(); // a.b.c.d.MyClass System.out.println(fqname + '\n'); for (int i = 0; i < methods.length; i++) { System.out.println("Method " + i + ":" + methods[i].getElementName()); } } }