blob: aa8f65bd15ffe8a82f1cd5bfc7be21c3d387b255 [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2007 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.preferences;
import java.util.List;
import org.eclipse.epf.common.utils.FileUtil;
import org.eclipse.epf.common.utils.PreferenceUtil;
import org.eclipse.epf.library.ui.LibraryUIPlugin;
import org.eclipse.epf.persistence.MultiFileSaveUtil;
import org.eclipse.jface.dialogs.MessageDialogWithToggle;
import org.eclipse.jface.preference.IPreferenceStore;
/**
* Manages the Library UI preferences.
*
* @author Kelvin Low
* @since 1.0
*/
public class LibraryUIPreferences {
/**
* The Library UI preference keys.
*/
public static final String PROMPT_FOR_LIBRARY_AT_STARTUP = "promptForLibraryAtStartup"; //$NON-NLS-1$
public static final String SAVED_LIBRARY_PATH = "savedLibraryPath"; //$NON-NLS-1$
public static final String PUBLISH_UNOPEN_ACTIVITY_DD = "publishUnopenActivityDetailDiagram"; //$NON-NLS-1$
public static final String PREF_SWITCH_CONFIG = "switchConfigurationOnProcessActivate"; //$NON-NLS-1$
public static final String PUBLISH_AD_FOR_ACTIVITY_EXTENSION = "publishActivityDiagramforActivityExtension"; //$NON-NLS-1$
public static final String APPLICATION_SHORT_NAME = "appname"; //$NON-NLS-1$
private static final String NEW_LIBRARY_PATHS = "newLibraryPaths"; //$NON-NLS-1$
private static final String OPEN_LIBRARY_PATHS = "openLibraryPaths"; //$NON-NLS-1$
private static final String OPEN_LIBRARY_URIS = "openLibraryURIs"; //$NON-NLS-1$
// The plug-in specific preference store.
private static IPreferenceStore prefStore = LibraryUIPlugin.getDefault()
.getPreferenceStore();
static {
// Initialize the default preference values.
prefStore.setDefault(PROMPT_FOR_LIBRARY_AT_STARTUP, true);
prefStore.setDefault(SAVED_LIBRARY_PATH, ""); //$NON-NLS-1$
prefStore
.setDefault(PREF_SWITCH_CONFIG, MessageDialogWithToggle.PROMPT);
prefStore.setDefault(NEW_LIBRARY_PATHS, getDefaultLibraryPath());
prefStore.setDefault(OPEN_LIBRARY_PATHS, getDefaultLibraryPath());
prefStore.setDefault(OPEN_LIBRARY_URIS, ""); //$NON-NLS-1$
}
/**
* Returns the prompt for Method Library at startup preference.
*
* @return <code>true</code> is the preference is set.
*/
public static boolean getPromptForMethodLibraryAtStartup() {
return prefStore.getBoolean(PROMPT_FOR_LIBRARY_AT_STARTUP);
}
/**
* Sets the prompt for Method Library at startup preference.
*
* @param enabled
*
*/
public static void setPromptForMethodLibraryAtStartup(boolean enabled) {
prefStore.setValue(PROMPT_FOR_LIBRARY_AT_STARTUP, enabled);
}
public static void setPublishUnopenActivitydd(boolean enabled) {
prefStore.setValue(PUBLISH_UNOPEN_ACTIVITY_DD, enabled);
}
public static boolean getPublishUnopenActivitydd() {
return prefStore.getBoolean(PUBLISH_UNOPEN_ACTIVITY_DD);
}
/**
* Setter method for Publish Activity Diagram for Activity Extension,
*
* @param enabled
*/
public static void setPublishADForActivityExtension(boolean enabled) {
prefStore.setValue(PUBLISH_AD_FOR_ACTIVITY_EXTENSION, enabled);
}
/**
* getter method for Publish Activity Diagram for Activity Extension flag
* from preference store,
*/
public static boolean getPublishADForActivityExtension() {
return prefStore.getBoolean(PUBLISH_AD_FOR_ACTIVITY_EXTENSION);
}
/**
* Returns switch configuration value store in preference store
*
* @return value - could be ALWAYS, NEVER, PROMPT
*/
public static String getSwitchConfig() {
return prefStore.getString(PREF_SWITCH_CONFIG);
}
/**
* Saves switch configuration value in preference store
*
* @param value
* Value could be ALWAYS, NEVER, PROMPT
*/
public static void setSwitchConfig(String value) {
prefStore.setValue(PREF_SWITCH_CONFIG, value);
}
/**
* Returns the Method Library path that was saved in a previous session.
*
* @return The saved library path.
*/
public static String getSavedLibraryPath() {
return prefStore.getString(SAVED_LIBRARY_PATH);
}
/**
* Saves a Method Library path to the Library UI preference store.
*
* @param libPath
* Path to a Method Library.
*/
public static void setSavedLibraryPath(String libPath) {
String path = libPath;
if (path.endsWith(MultiFileSaveUtil.DEFAULT_LIBRARY_MODEL_FILENAME)) {
path = FileUtil.getParentDirectory(path);
}
prefStore.setValue(SAVED_LIBRARY_PATH, path);
LibraryUIPlugin.getDefault().savePluginPreferences();
}
/**
* Returns the default Method Library path.
*
* @return The default Method Library path.
*/
public static String getDefaultLibraryPath() {
String userHome = System.getProperty("user.home").replace('\\', '/'); //$NON-NLS-1$
String libraryPath = LibraryUIPlugin.getDefault().getString(
"libraryPath"); //$NON-NLS-1$
if (libraryPath == null || libraryPath.length() == 0
|| libraryPath.startsWith("[")) { //$NON-NLS-1$
libraryPath = userHome + "/Method Libraries/Library"; //$NON-NLS-1$
} else if (libraryPath.startsWith("<user.home>")) { //$NON-NLS-1$
libraryPath = userHome + libraryPath.substring(11);
}
if (System.getProperty("file.separator").equals("\\")) { //$NON-NLS-1$ //$NON-NLS-2$
libraryPath = libraryPath.replace('/', '\\');
}
int idx = -1;
if ((idx = libraryPath.indexOf("<app.name>")) >= 0) { //$NON-NLS-1$
String appNameProper = LibraryUIPreferences
.getApplicationShortName();
libraryPath = libraryPath.substring(0, idx) + appNameProper
+ libraryPath.substring(idx + 10);
}
return libraryPath;
}
/**
* Returns the application short name passed in the main feature's
* plugin_customization.ini.
*
* @return The passed-in application short name.
*/
public static String getApplicationShortName() {
return prefStore.getString(APPLICATION_SHORT_NAME);
}
/**
* Gets the new library paths preference.
*
* @return an array of method library paths
*/
public static String[] getNewLibraryPaths() {
return PreferenceUtil.getStringValues(prefStore, NEW_LIBRARY_PATHS);
}
/**
* Gets the new library paths preference.
*
* @return a collection of method library paths
*/
public static List<String> getNewLibraryPathsList() {
return PreferenceUtil.getList(prefStore, NEW_LIBRARY_PATHS);
}
/**
* Adds a method library path to the new library paths preference.
*
* @param path
* a method library path
*/
public static void addNewLibraryPath(String path) {
PreferenceUtil.addToList(prefStore, NEW_LIBRARY_PATHS, path,
getDefaultLibraryPath());
}
/**
* Gets the open library paths preference.
*
* @return an array of method library paths
*/
public static String[] getOpenLibraryPaths() {
return PreferenceUtil.getStringValues(prefStore, OPEN_LIBRARY_PATHS);
}
/**
* Gets the open library paths preference.
*
* @return a collection of method library paths
*/
public static List<String> getOpenLibraryPathsList() {
return PreferenceUtil.getList(prefStore, OPEN_LIBRARY_PATHS);
}
/**
* Adds a method library path to the open library paths preference.
*
* @param path
* a method library path
*/
public static void addOpenLibraryPath(String path) {
PreferenceUtil.addToList(prefStore, OPEN_LIBRARY_PATHS, path,
getDefaultLibraryPath());
}
/**
* Gets the open library URIs preference.
*
* @return a collection of method library URIs
*/
public static String[] getOpenLibraryURIs() {
return PreferenceUtil.getStringValues(prefStore, OPEN_LIBRARY_URIS);
}
/**
* Gets the open library URIs preference.
*
* @return a collection of method library URIs
*/
public static List getOpenLibraryURIsList() {
return PreferenceUtil.getList(prefStore, OPEN_LIBRARY_URIS);
}
/**
* Adds a method library URI to the open library URIs preference.
*
* @param uri
* a method library URI
*/
public static void addOpenLibraryURI(String uri) {
PreferenceUtil.addToList(prefStore, OPEN_LIBRARY_URIS, uri);
}
/**
* Save all preferences
*
*/
public static void saveAllPreferences() {
LibraryUIPlugin.getDefault().savePluginPreferences();
}
}