blob: f735184526aae00c13ee6724efd14c3a08a06795 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 2016 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - Initial API and implementation
*******************************************************************************/
package org.eclipse.wst.server.ui.internal.wizard;
import java.util.List;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.wst.server.core.*;
import org.eclipse.wst.server.ui.internal.Messages;
import org.eclipse.wst.server.ui.internal.PreferenceUtil;
import org.eclipse.wst.server.ui.internal.ServerUIPlugin;
import org.eclipse.wst.server.ui.internal.wizard.fragment.ModifyModulesWizardFragment;
import org.eclipse.wst.server.ui.wizard.WizardFragment;
/**
* A wizard used to add and remove modules.
*/
public class ModifyModulesWizard extends TaskWizard {
static ModifyModulesWizardFragment modifyModulesWizardFragment = new ModifyModulesWizardFragment(true);
static class ModifyModulesWizard2 extends WizardFragment {
protected void createChildFragments(List<WizardFragment> list) {
list.add(modifyModulesWizardFragment);
list.add(WizardTaskUtil.SaveServerFragment);
list.add(new WizardFragment() {
public void performFinish(IProgressMonitor monitor) throws CoreException {
IServerAttributes svr = (IServerAttributes) getTaskModel().getObject(TaskModel.TASK_SERVER);
if (svr instanceof IServer) {
IServer server = (IServer) svr;
if (server.getServerState() != IServer.STATE_STOPPED &&
ServerUIPlugin.getPreferences().getPublishOnAddRemoveModule()) {
IAdaptable info = null;
/*IAdaptable info = new IAdaptable() {
public Object getAdapter(Class adapter) {
if (Shell.class.equals(adapter))
return shell;
return null;
}
};*/
server.publish(IServer.PUBLISH_INCREMENTAL, null, info, null);
}
}
}
});
}
}
/**
* ModifyModulesWizard constructor.
*
* @param server a server
*/
public ModifyModulesWizard(IServer server) {
super(Messages.wizModuleWizardTitle, new ModifyModulesWizard2());
if (server != null)
getTaskModel().putObject(TaskModel.TASK_SERVER, server.createWorkingCopy());
}
/**
* This is not intended to be used by extenders. The prompt to remove modules dialog appears there are modules to be removed.
*
*/
@Override
public boolean performFinish() {
// This code should instead be done in the ModifyModulesWizardFragment. However, we need to do this prompt up-front
// prior to any fragments being executed in another thread. If this prompt is moved to the fragment, then we need a
// a way to get access to the UI shell even though the fragments are run on a non-UI thread. Secondly, the TaskWizard
// needs to support cancel to undo previously run fragments and stop later fragments from running. This is because the\
// prompt dialog allows the user to cancel. See also RunOnServerWizard.
List<IModule> modulesToRemove = modifyModulesWizardFragment.getModulesToRemove();
if (modulesToRemove.size() > 0) {
IServerAttributes server = (IServerAttributes) getTaskModel().getObject(TaskModel.TASK_SERVER);
boolean doRemove = PreferenceUtil.confirmModuleRemoval(server, getContainer().getShell(), modulesToRemove);
if (!doRemove) {
return false;
}
}
return super.performFinish();
}
}