package net.sourceforge.pmd.eclipse.runtime.cmd;
import net.sourceforge.pmd.eclipse.plugin.PMDPlugin;
import net.sourceforge.pmd.eclipse.runtime.properties.IProjectProperties;
import net.sourceforge.pmd.eclipse.runtime.properties.PropertiesException;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResourceVisitor;
import org.eclipse.core.runtime.CoreException;
/**
*
* @author Brian Remedios
*/
public abstract class AbstractProjectCommand extends AbstractDefaultCommand {
private IProject project;
private static final long serialVersionUID = 1L;
protected AbstractProjectCommand(String theName, String theDescription) {
super(theName, theDescription);
}
/**
* @see name.herlin.command.Command#reset()
*/
public void reset() {
setProject(null);
setTerminated(false);
}
/**
* @param project The project to set.
*/
public void setProject(final IProject theProject) {
project = theProject;
setReadyToExecute(project != null);
}
protected IProject project() {
return project;
}
protected void visitProjectResourcesWith(IResourceVisitor visitor) throws CoreException {
project.accept(visitor);
}
/**
* @see name.herlin.command.Command#isReadyToExecute()
*/
public boolean isReadyToExecute() {
return project != null;
}
protected IFolder getProjectFolder(String folderId) {
return project.getFolder(folderId);
}
protected IProjectProperties projectProperties() throws PropertiesException {
return PMDPlugin.getDefault().loadProjectProperties(project);
}
}