package org.zend.php.zendserver.deployment.debug.ui.commands;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.expressions.IEvaluationContext;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
import org.zend.php.zendserver.deployment.core.debugger.IDeploymentHelper;
import org.zend.php.zendserver.deployment.debug.core.config.LaunchUtils;
import org.zend.php.zendserver.deployment.debug.ui.Activator;
import org.zend.php.zendserver.deployment.debug.ui.Messages;
import org.zend.php.zendserver.deployment.debug.ui.config.DeploymentHandler;
import org.zend.php.zendserver.deployment.debug.ui.contributions.TestingSectionContribution;
public class DeployApplicationHandler extends AbstractDeploymentHandler {
public Object execute(ExecutionEvent event) throws ExecutionException {
String mode = event.getParameter(TestingSectionContribution.MODE);
Object obj = event.getApplicationContext();
IEvaluationContext ctx = null;
if (obj instanceof IEvaluationContext) {
ctx = (IEvaluationContext) obj;
}
IProject[] projects = null;
if (ctx != null) {
projects = getProjects(ctx.getVariable(TestingSectionContribution.PROJECT_NAME));
}
if (projects == null) {
projects = getProjects(event.getParameter(TestingSectionContribution.PROJECT_NAME));
}
if (projects == null) {
projects = new IProject[] { getProjectFromEditor() };
}
for (IProject project : projects) {
execute(mode, project);
}
return null;
}
private void execute(final String mode, final IProject project) {
if (!PlatformUI.getWorkbench().saveAllEditors(true)) {
return;
}
try {
if (!hasDeploymentNature(project)) {
Shell shell = PlatformUI.getWorkbench().getDisplay()
.getActiveShell();
if (MessageDialog.openConfirm(shell,
Messages.LaunchApplicationHandler_0, Messages.bind(
Messages.LaunchApplicationHandler_1,
project.getName()))) {
enableDeployment(project);
} else {
return;
}
}
} catch (CoreException ex) {
Activator.log(ex);
}
Job job = new Job("Deployment Wizard") { //$NON-NLS-1$
@Override
protected IStatus run(IProgressMonitor monitor) {
DeploymentHandler handler = new DeploymentHandler();
IDeploymentHelper defaultHelper = LaunchUtils.createDefaultHelper(project);
if (handler.openNoConfigDeploymentWizard(defaultHelper, project) == IStatus.OK) {
return Status.OK_STATUS;
} else {
return Status.CANCEL_STATUS;
}
}
};
job.setSystem(true);
job.schedule();
}
}