package org.zend.php.zendserver.deployment.debug.ui.commands;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.PlatformUI;
import org.zend.php.zendserver.deployment.core.DeploymentNature;
public abstract class AbstractDeploymentHandler extends AbstractHandler {
protected IProject[] getProjects(Object projectName) {
if (projectName == null) {
return null;
}
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
if (projectName instanceof String) {
IProject project = root.getProject((String) projectName);
if (project.exists()) {
return new IProject[] { project };
}
}
if (projectName instanceof String[]) {
List<IProject> projects = new ArrayList<IProject>();
String[] projectNames = (String[]) projectName;
for (String pName : projectNames) {
IProject project = root.getProject(pName);
if (project.exists() && (projects.contains(project))) {
projects.add(project);
}
}
return projects.toArray(new IProject[projects.size()]);
}
return null;
}
protected IProject getProjectFromEditor() {
IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
.getActivePage().getActiveEditor();
if (activeEditor != null) {
IEditorInput editorInput = activeEditor.getEditorInput();
IFile descriptor = (IFile) editorInput.getAdapter(IFile.class);
if (descriptor != null) {
return descriptor.getProject();
}
}
return null;
}
protected boolean hasDeploymentNature(IProject project)
throws CoreException {
String[] natures = project.getDescription().getNatureIds();
for (String nature : natures) {
if (DeploymentNature.ID.equals(nature)) {
return true;
}
}
return false;
}
protected void enableDeployment(IProject project) throws CoreException {
IProjectDescription desc = project.getDescription();
String[] natures = desc.getNatureIds();
String[] nnatures = new String[natures.length + 1];
System.arraycopy(natures, 0, nnatures, 0, natures.length);
nnatures[natures.length] = DeploymentNature.ID;
desc.setNatureIds(nnatures);
project.setDescription(desc, new NullProgressMonitor());
}
}