blob: 185169d88e53da3ae1039a664d5e22d14bd6c2a5 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 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 v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - Initial API and implementation
*******************************************************************************/
package org.eclipse.wst.server.ui.internal;
import java.util.List;
import org.eclipse.jface.dialogs.MessageDialogWithToggle;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.wst.server.core.IModule;
import org.eclipse.wst.server.core.IServerAttributes;
import org.eclipse.wst.server.ui.RemoveModuleMessageExtension;
public class PreferenceUtil {
public static boolean confirmModuleRemoval(IServerAttributes server, Shell shell, List<IModule> moduleList) {
// Get preference value to see if the confirmation dialog should appear or not. Default is to show the dialog.
boolean doNotShowDialog = ServerUIPlugin.getPreferences().getDoNotShowRemoveModuleWarning();
if (!doNotShowDialog) {
String message = null;
String id = server.getServerType().getId();
RemoveModuleMessageExtension targetExtension = ServerUIPlugin.getRemoveModuleMessageExtension(id);
String customMessage = null;
if (moduleList.size() > 0) {
if (targetExtension != null) {
customMessage = targetExtension.getConfirmationMessage(server, moduleList.toArray(new IModule [0]));
}
// The extension might still return null or an empty string. If so, then use the default/original message.
if (customMessage == null || customMessage.length() == 0) {
if (moduleList.size() == 1) {
message = Messages.dialogRemoveModuleConfirm; // Default singular
} else {
message = Messages.dialogRemoveModulesConfirm; // Default plural
}
} else {
message = customMessage;
}
}
MessageDialogWithToggle messageWithToggle = MessageDialogWithToggle.openOkCancelConfirm(shell, Messages.defaultDialogTitle,
message, Messages.doNotShowAgain, false, null, null);
// If cancel is pressed, do not update the preference even if the checkbox changed.
if (messageWithToggle.getReturnCode() == Window.CANCEL) {
// Do not remove, return false
return false;
}
// If OK was pressed, then also update the preference
ServerUIPlugin.getPreferences().setDoNotShowRemoveModuleWarning(messageWithToggle.getToggleState());
}
// Proceed with removal
return true;
}
}