package com.technophobia.substeps.actions; import org.eclipse.core.resources.IProject; 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.IWorkbenchPart; public abstract class AbstractSubstepsNatureAction implements IObjectActionDelegate { private IProject currentProject = null; @Override public void run(final IAction action) { if (currentProject != null) { updateProject(currentProject); } } @Override public void selectionChanged(final IAction action, final ISelection selection) { boolean updatedCurrentProject = false; if (selection instanceof IStructuredSelection) { final IStructuredSelection structuredSelection = (IStructuredSelection) selection; if (structuredSelection.getFirstElement() instanceof IProject) { currentProject = (IProject) structuredSelection.getFirstElement(); updatedCurrentProject = true; } } if (!updatedCurrentProject) { currentProject = null; } } @Override public void setActivePart(final IAction action, final IWorkbenchPart targetPart) { // No-op } protected abstract void updateProject(IProject project); }