package org.archstudio.releng.pde.actions; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProjectNature; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.IWorkingSet; import org.eclipse.ui.handlers.HandlerUtil; public abstract class AbstractProjectHandler extends AbstractHandler { public AbstractProjectHandler() { super(); } @Override public Object execute(ExecutionEvent event) throws ExecutionException { ISelection selection = HandlerUtil.getCurrentSelection(event); if (selection instanceof IStructuredSelection) { for (Object selected : ((IStructuredSelection) selection).toList()) { if (selected instanceof IProject) { execute((IProject) selected); } else if (selected instanceof IProjectNature) { execute(((IProjectNature) selected).getProject()); } else if (selected instanceof IWorkingSet) { execute((IWorkingSet) selected); } } } return null; } protected void execute(IWorkingSet workingSet) { for (Object selected : workingSet.getElements()) { if (selected instanceof IProject) { execute((IProject) selected); } else if (selected instanceof IProjectNature) { execute(((IProjectNature) selected).getProject()); } else if (selected instanceof IWorkingSet) { execute((IWorkingSet) selected); } } } protected abstract void execute(IProject project); }