blob: c2857331df33524e4d9590e793165701fc05df0b [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2006 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 implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.library.ui.dialogs;
import org.eclipse.epf.library.LibraryService;
import org.eclipse.epf.library.LibraryServiceUtil;
import org.eclipse.epf.library.ui.LibraryUIPlugin;
import org.eclipse.epf.library.ui.LibraryUIResources;
import org.eclipse.epf.library.ui.preferences.LibraryUIPreferences;
import org.eclipse.epf.uma.MethodConfiguration;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialogWithToggle;
import org.eclipse.swt.widgets.Shell;
/**
* Prompts the user to switch the current Configuration to a recommended
* Configuration.
*
* @author Jeff Hardy
* @author Kelvin Low
* @since 1.0
*/
public class SwitchConfigDialog {
private MethodConfiguration recommendedConfig;
private Shell shell;
/**
* Creates a new instance.
*
* @param shell
* The parent shell.
* @param recommendedConfig
* The recommended configuration.
*/
public SwitchConfigDialog(Shell shell, MethodConfiguration recommendedConfig) {
this.shell = shell;
this.recommendedConfig = recommendedConfig;
}
/**
* Displays the dialog iff the given recommendedConfig is different than the
* currently selected config
*
* returns IDialogConstants.OK_ID if dialog wasn't shown, or if config was
* switched returns IDialogConstants.CANCEL_ID if dialog was shown and user
* did not click Yes
*/
public void execute() {
if (recommendedConfig == null) {
return;
}
String switchConfigPref = LibraryUIPreferences.getSwitchConfig();
if (MessageDialogWithToggle.NEVER.equals(switchConfigPref)) {
// Call this to refresh active part if needed.
// TODO: Review implementation.
LibraryService.getInstance().setCurrentMethodConfiguration(
LibraryService.getInstance()
.getCurrentMethodConfiguration());
return;
}
if (LibraryService.getInstance().getCurrentMethodConfiguration() != recommendedConfig) {
String configName = recommendedConfig.getName();
if (MessageDialogWithToggle.PROMPT.equals(switchConfigPref)) {
MessageDialogWithToggle dialog = MessageDialogWithToggle
.openYesNoQuestion(shell,
LibraryUIResources.switchConfigDialog_title,
LibraryUIResources
.bind(
LibraryUIResources.switchConfigDialog_text,
configName),
null, false, LibraryUIPlugin.getDefault()
.getPreferenceStore(),
LibraryUIPreferences.PREF_SWITCH_CONFIG);
if (dialog.getReturnCode() == IDialogConstants.YES_ID) {
MethodConfiguration config = LibraryServiceUtil
.getMethodConfiguration(LibraryService
.getInstance().getCurrentMethodLibrary(),
configName);
LibraryService.getInstance().setCurrentMethodConfiguration(
config);
} else {
// Call this to refresh active part if needed.
// TODO: Review implementation.
LibraryService.getInstance().setCurrentMethodConfiguration(
LibraryService.getInstance()
.getCurrentMethodConfiguration());
}
} else if (MessageDialogWithToggle.ALWAYS.equals(switchConfigPref)) {
MethodConfiguration config = LibraryServiceUtil
.getMethodConfiguration(LibraryService.getInstance()
.getCurrentMethodLibrary(), configName);
LibraryService.getInstance().setCurrentMethodConfiguration(
config);
}
}
}
}