diff --git a/pmd-eclipse/src/net/sourceforge/pmd/eclipse/actions/ShowDataflowAction.java b/pmd-eclipse/src/net/sourceforge/pmd/eclipse/actions/ShowDataflowAction.java new file mode 100644 index 0000000000..58e866291d --- /dev/null +++ b/pmd-eclipse/src/net/sourceforge/pmd/eclipse/actions/ShowDataflowAction.java @@ -0,0 +1,80 @@ +package net.sourceforge.pmd.eclipse.actions; + +import net.sourceforge.pmd.eclipse.PMDConstants; +import net.sourceforge.pmd.eclipse.PMDPlugin; +import net.sourceforge.pmd.eclipse.views.DataflowView; + +import org.eclipse.core.resources.IResource; +import org.eclipse.jdt.core.IMethod; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.ui.IObjectActionDelegate; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; + + +/** + * + * @author SebastianRaffel ( 26.05.2005 ) + */ +public class ShowDataflowAction implements IObjectActionDelegate { + + private IWorkbenchPage workbenchPage; + private DataflowView dataflowView; + + private IResource resource; + private IMethod method; + + + + /* @see org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.action.IAction, org.eclipse.ui.IWorkbenchPart) */ + public void setActivePart(IAction action, IWorkbenchPart targetPart) { + workbenchPage = targetPart.getSite().getPage(); + } + + /* @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction) */ + public void run(IAction action) { + if (workbenchPage != null) { + try { + dataflowView = (DataflowView) + workbenchPage.showView(PMDPlugin.ID_DATAFLOWVIEW); + + if (method != null) + dataflowView.showMethod(method); + + } catch (PartInitException pie) { + PMDPlugin.getDefault().logError( + PMDConstants.MSGKEY_ERROR_VIEW_EXCEPTION + + this.toString(), pie); + } + } + } + + + /* @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelection) */ + public void selectionChanged(IAction action, ISelection selection) { + if (!PMDPlugin.getDefault().useDFA()) { + action.setEnabled(false); + return; + } else { + action.setEnabled(true); + } + + if (selection instanceof IStructuredSelection) { + IStructuredSelection sel = (IStructuredSelection) selection; + Object element = sel.getFirstElement(); + + method = null; + resource = null; + + if (element instanceof IMethod) { + method = (IMethod) element; + resource = method.getResource(); + } + } + } +} + +