/******************************************************************************* * Copyright (c) 2011 Zend Technologies Ltd. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ package org.zend.php.zendserver.deployment.debug.ui.wizards; import java.net.MalformedURLException; import java.net.URL; import java.util.List; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.wizard.Wizard; import org.zend.php.zendserver.deployment.core.debugger.DeploymentAttributes; import org.zend.php.zendserver.deployment.core.debugger.IDeploymentHelper; import org.zend.php.zendserver.deployment.core.descriptor.DescriptorContainerManager; import org.zend.php.zendserver.deployment.core.descriptor.IDescriptorContainer; import org.zend.php.zendserver.deployment.core.descriptor.IParameter; import org.zend.php.zendserver.deployment.core.targets.TargetsManagerService; import org.zend.php.zendserver.deployment.debug.core.config.DeploymentHelper; 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.HelpContextIds; import org.zend.php.zendserver.deployment.debug.ui.Messages; import org.zend.sdklib.target.IZendTarget; public class DeploymentWizard extends Wizard { public enum Mode { RUN, DEBUG, DEPLOY; } protected ConfigurationPage configPage; protected ParametersPage parametersPage; protected IDescriptorContainer model; protected IProject project; protected IDeploymentHelper helper; protected String help; protected String description; public DeploymentWizard(ILaunchConfiguration config, Mode mode) { setDialogSettings(Activator.getDefault().getDialogSettings()); DeploymentHelper helper = DeploymentHelper.create(config); String projectName = helper.getProjectName(); IProject project = ResourcesPlugin.getWorkspace().getRoot() .getProject(projectName); init(project, helper, mode); } public DeploymentWizard(IProject project, IDeploymentHelper helper, Mode mode) { setDialogSettings(Activator.getDefault().getDialogSettings()); init(project, helper, mode); } @Override public void addPages() { super.addPages(); this.configPage = new ConfigurationPage(helper, getContainer(), getWindowTitle(), description, help); addPage(configPage); List<IParameter> parameters = model.getDescriptorModel() .getParameters(); if (parameters != null && parameters.size() > 0) { addPage(parametersPage); } } @Override public boolean performFinish() { helper = createHelper(); saveSettings(helper); return true; } @Override public boolean performCancel() { return true; } public IDeploymentHelper getHelper() { return helper; } protected void init(IProject project, IDeploymentHelper helper, Mode mode) { IResource descriptor = project .findMember(DescriptorContainerManager.DESCRIPTOR_PATH); this.project = project; this.model = DescriptorContainerManager.getService() .openDescriptorContainer((IFile) descriptor); setNeedsProgressMonitor(true); String title = null; String image = null; switch (mode) { case RUN: title = Messages.deploymentWizard_LaunchTitle; description = Messages.DeploymentWizard_LaunchDesc; image = Activator.IMAGE_WIZBAN_DEP; help = HelpContextIds.LAUNCHING_AN_APPLICATION; break; case DEBUG: title = Messages.deploymentWizard_DebugTitle; description = Messages.DeploymentWizard_DebugDesc; image = Activator.IMAGE_WIZBAN_DEBUG; help = HelpContextIds.DEBUGGING_AN_APPLICAITON; break; case DEPLOY: title = Messages.deploymentWizard_DeployTitle; description = Messages.DeploymentWizard_DeployDesc; image = Activator.IMAGE_WIZBAN_DEPLOY; help = HelpContextIds.DEPLOYING_AN_APPLICATION; break; } this.parametersPage = new ParametersPage(project, helper, title, help); if (helper == null || helper.getProjectName().isEmpty()) { this.helper = updateHelper(LaunchUtils.createDefaultHelper(project)); } else { this.helper = updateHelper(helper); } setWindowTitle(title); setDefaultPageImageDescriptor(Activator.getImageDescriptor(image)); } protected IDeploymentHelper updateHelper(IDeploymentHelper toUpdate) { // Set default dialog settings IDialogSettings settings = getDialogSettings(); if (settings != null) { String targetId = settings.get(DeploymentAttributes.TARGET_ID .getName()); if (targetId != null && toUpdate.getTargetId() == null) { IZendTarget target = TargetsManagerService.INSTANCE .getTargetManager().getTargetById(targetId); if (target != null) { toUpdate.setTargetId(targetId); toUpdate.setTargetHost(target.getHost().getHost()); URL targetUrl = target.getDefaultServerURL(); try { URL baseUrl = new URL(targetUrl.getProtocol(), targetUrl.getHost(), targetUrl.getPort(), "/" + toUpdate.getAppName()); toUpdate.setBaseURL(baseUrl.toString()); } catch (MalformedURLException e) { Activator.log(e); } } } String developerMode = settings .get(DeploymentAttributes.DEVELOPMENT_MODE.getName()); if (developerMode != null) { toUpdate.setDevelopmentMode((Boolean.valueOf(developerMode))); } String warnUpdate = settings.get(DeploymentAttributes.WARN_UPDATE .getName()); if (warnUpdate != null) { toUpdate.setWarnUpdate(Boolean.valueOf(warnUpdate)); } String ignoreFailure = settings .get(DeploymentAttributes.IGNORE_FAILURES.getName()); if (ignoreFailure != null) { toUpdate.setIgnoreFailures(Boolean.valueOf(ignoreFailure)); } } String appName = toUpdate.getAppName(); if (appName == null || appName.isEmpty()) { toUpdate.setAppName(project.getName()); } return toUpdate; } protected IDeploymentHelper createHelper() { IDeploymentHelper helper = configPage.getHelper(); helper.setProjectName(project.getName()); helper.setUserParams(parametersPage.getHelper().getUserParams()); return helper; } protected void saveSettings(IDeploymentHelper helper) { IDialogSettings settings = getDialogSettings(); settings.put(DeploymentAttributes.TARGET_ID.getName(), helper.getTargetId()); settings.put(DeploymentAttributes.WARN_UPDATE.getName(), helper.isWarnUpdate()); settings.put(DeploymentAttributes.IGNORE_FAILURES.getName(), helper.isIgnoreFailures()); settings.put(DeploymentAttributes.DEVELOPMENT_MODE.getName(), helper.isDevelopmentModeEnabled()); } }