blob: 70206c6290e149e68774b09b51aa1389244fdb4c [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.emf.ecore.EClass;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.epf.common.ui.util.PreferenceUtil;
import org.eclipse.epf.common.utils.FileUtil;
import org.eclipse.epf.library.ui.LibraryUIPlugin;
import org.eclipse.epf.persistence.MultiFileSaveUtil;
import org.eclipse.epf.uma.UmaPackage;
import org.eclipse.epf.uma.ecore.util.DefaultValueManager;
import org.eclipse.jface.dialogs.MessageDialogWithToggle;
import org.eclipse.jface.preference.IPreferenceStore;
/**
* Manages the Library UI preferences.
*
* @author Kelvin Low
* @author Phong Nguyen Le
*
* @since 1.0
*/
public class LibraryUIPreferences {
private static final String DEFAULT_LIBRARY_PATH = "defaultLibraryPath"; //$NON-NLS-1$
private static final String SAVED_LIBRARY_PATH = "savedLibraryPath"; //$NON-NLS-1$
private static final String PUBLISH_UNOPEN_ACTIVITY_DD = "publishUnopenActivityDetailDiagram"; //$NON-NLS-1$
private static final String PREF_SWITCH_CONFIG = "switchConfigurationOnProcessActivate"; //$NON-NLS-1$
private static final String PUBLISH_AD_FOR_ACTIVITY_EXTENSION = "publishActivityDiagramforActivityExtension"; //$NON-NLS-1$
private 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$
private static final String WORK_BREAKDOWNELEMENT_OPTIONAL = "work_breakdownelement_optional"; //$NON-NLS-1$
private static final String WORK_BREAKDOWNELEMENT_MULTIPLE_OCCURRANCES = "work_breakdownelement_multiple_occurrances"; //$NON-NLS-1$
private static final String WORK_BREAKDOWNELEMENT_PLANNED = "work_breakdownelement_planned"; //$NON-NLS-1$
private static final String WORK_BREAKDOWNELEMENT_EVENT_DRIVEN = "work_breakdownelement_event_driven"; //$NON-NLS-1$
private static final String WORK_BREAKDOWNELEMENT_ONGOING = "work_breakdownelement_multiple_ongoing"; //$NON-NLS-1$
private static final String WORK_BREAKDOWNELEMENT_REPEATABLE = "work_breakdownelement_repeatable"; //$NON-NLS-1$
private static final String DESCRIPTOR_OPTIONAL = "descriptor_optional"; //$NON-NLS-1$
private static final String DESCRIPTOR_MULTIPLE_OCCURRANCES = "descriptor_multiple_occurrances"; //$NON-NLS-1$
private static final String DESCRIPTOR_PLANNED = "descriptor_planned"; //$NON-NLS-1$
private static final String DESCRIPTOR_EVENT_DRIVEN = "descriptor_event_driven"; //$NON-NLS-1$
private static final String DESCRIPTOR_ONGOING = "descriptor_multiple_ongoing"; //$NON-NLS-1$
private static final String DESCRIPTOR_REPEATABLE = "descriptor_repeatable"; //$NON-NLS-1$
private static final String DEFAULT_LIBRARY_FOLDER_NAME = "Method Libraries"; //$NON-NLS-1$
private static String defaultLibraryPath = null;
// The plug-in specific preference store.
private static IPreferenceStore prefStore = LibraryUIPlugin.getDefault()
.getPreferenceStore();
static {
// Initialize the default preference values.
prefStore.setDefault(DEFAULT_LIBRARY_PATH,
getInitialDefaultLibraryPath());
prefStore.setDefault(SAVED_LIBRARY_PATH, ""); //$NON-NLS-1$
prefStore
.setDefault(PREF_SWITCH_CONFIG, MessageDialogWithToggle.PROMPT);
prefStore.setDefault(NEW_LIBRARY_PATHS, ""); //$NON-NLS-1$
prefStore.setDefault(OPEN_LIBRARY_PATHS, ""); //$NON-NLS-1$
prefStore.setDefault(OPEN_LIBRARY_URIS, ""); //$NON-NLS-1$
prefStore.setDefault(WORK_BREAKDOWNELEMENT_OPTIONAL, false);
prefStore.setDefault(WORK_BREAKDOWNELEMENT_MULTIPLE_OCCURRANCES, false);
prefStore.setDefault(WORK_BREAKDOWNELEMENT_PLANNED, true);
prefStore.setDefault(WORK_BREAKDOWNELEMENT_EVENT_DRIVEN, false);
prefStore.setDefault(WORK_BREAKDOWNELEMENT_ONGOING, false);
prefStore.setDefault(WORK_BREAKDOWNELEMENT_REPEATABLE, false);
prefStore.setDefault(DESCRIPTOR_OPTIONAL, false);
prefStore.setDefault(DESCRIPTOR_MULTIPLE_OCCURRANCES, false);
prefStore.setDefault(DESCRIPTOR_PLANNED, false);
prefStore.setDefault(DESCRIPTOR_EVENT_DRIVEN, false);
prefStore.setDefault(DESCRIPTOR_ONGOING, false);
prefStore.setDefault(DESCRIPTOR_REPEATABLE, false);
}
/**
* Gets the initial default method library path preference.
*/
public static String getInitialDefaultLibraryPath() {
if (defaultLibraryPath == null) {
defaultLibraryPath = System.getProperty("user.home"); //$NON-NLS-1$
String appName = LibraryUIPreferences.getApplicationShortName();
if (appName != null && appName.length() > 0) {
defaultLibraryPath = defaultLibraryPath + FileUtil.FILE_SEP
+ appName + FileUtil.FILE_SEP
+ DEFAULT_LIBRARY_FOLDER_NAME;
} else {
defaultLibraryPath = defaultLibraryPath + FileUtil.FILE_SEP
+ DEFAULT_LIBRARY_FOLDER_NAME;
}
}
return defaultLibraryPath;
}
/**
* Gets the default method library path preference.
*/
public static String getDefaultLibraryPath() {
return prefStore.getString(DEFAULT_LIBRARY_PATH);
}
/**
* Sets the default method library path preference.
*/
public static void setDefaultLibraryPath(String value) {
prefStore.setValue(DEFAULT_LIBRARY_PATH, value);
}
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 switch configuration preference key
* @return
*/
public static String getSwitchConfigPreferenceKey() {
return PREF_SWITCH_CONFIG;
}
/**
* 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 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();
}
/**
* Returns optional feature value of work breakdown element in preference
* store
*
* @return value - boolean
*/
public static boolean getWorkBreakDownElementOptional() {
return prefStore.getBoolean(WORK_BREAKDOWNELEMENT_OPTIONAL);
}
/**
* Saves value for Optional feature of work breakdown element in preference
* store
*
* @param value -
* boolean true/false
*
*/
public static void setWorkBreakdownElementOptional(boolean value) {
prefStore.setValue(WORK_BREAKDOWNELEMENT_OPTIONAL, value);
}
/**
* Returns multiple occurrances feature value of work breakdown element in
* preference store
*
* @return value - boolean
*/
public static boolean getWorkBreakDownElementMultipleOccurrances() {
return prefStore.getBoolean(WORK_BREAKDOWNELEMENT_MULTIPLE_OCCURRANCES);
}
/**
* Saves value for Multiple Occurrances feature of work breakdown element in
* preference store
*
* @param value -
* boolean true/false
*
*/
public static void setWorkBreakdownElementMultipleOccurrances(boolean value) {
prefStore.setValue(WORK_BREAKDOWNELEMENT_MULTIPLE_OCCURRANCES, value);
}
/**
* Returns planned feature value of work breakdown element in preference
* store
*
* @return value - boolean
*/
public static boolean getWorkBreakDownElementPlanned() {
return prefStore.getBoolean(WORK_BREAKDOWNELEMENT_PLANNED);
}
/**
* Saves value for Planned feature of work breakdown element in preference
* store
*
* @param value -
* boolean true/false
*
*/
public static void setWorkBreakdownElementPlanned(boolean value) {
prefStore.setValue(WORK_BREAKDOWNELEMENT_PLANNED, value);
}
/**
* Returns EventDriven feature value of work breakdown element in preference
* store
*
* @return value - boolean
*/
public static boolean getWorkBreakDownElementEventDriven() {
return prefStore.getBoolean(WORK_BREAKDOWNELEMENT_EVENT_DRIVEN);
}
/**
* Saves value for EventDriven feature of work breakdown element in
* preference store
*
* @param value -
* boolean true/false
*
*/
public static void setWorkBreakdownElementEventDriven(boolean value) {
prefStore.setValue(WORK_BREAKDOWNELEMENT_EVENT_DRIVEN, value);
}
/**
* Returns Ongoing feature value of work breakdown element in preference
* store
*
* @return value - boolean
*/
public static boolean getWorkBreakDownElementOngoing() {
return prefStore.getBoolean(WORK_BREAKDOWNELEMENT_ONGOING);
}
/**
* Saves value for Ongoing feature of work breakdown element in preference
* store
*
* @param value -
* boolean true/false
*
*/
public static void setWorkBreakdownElementOngoing(boolean value) {
prefStore.setValue(WORK_BREAKDOWNELEMENT_ONGOING, value);
}
/**
* Returns Repeatable feature value of work breakdown element in preference
* store
*
* @return value - boolean
*/
public static boolean getWorkBreakDownElementRepeatable() {
return prefStore.getBoolean(WORK_BREAKDOWNELEMENT_REPEATABLE);
}
/**
* Saves value for Repeatable feature of work breakdown element in
* preference store
*
* @param value -
* boolean true/false
*
*/
public static void setWorkBreakdownElementRepeatable(boolean value) {
prefStore.setValue(WORK_BREAKDOWNELEMENT_REPEATABLE, value);
}
/**
* Returns optional feature value of work breakdown element in preference
* store
*
* @return value - boolean
*/
public static boolean getDescriptorOptional() {
return prefStore.getBoolean(DESCRIPTOR_OPTIONAL);
}
/**
* Saves value for Optional feature of descriptor in preference store
*
* @param value -
* boolean true/false
*
*/
public static void setDescriptorOptional(boolean value) {
prefStore.setValue(DESCRIPTOR_OPTIONAL, value);
}
/**
* Returns multiple occurrances feature value of descriptor in preference
* store
*
* @return value - boolean
*/
public static boolean getDescriptorMultipleOccurrances() {
return prefStore.getBoolean(DESCRIPTOR_MULTIPLE_OCCURRANCES);
}
/**
* Saves value for Multiple Occurrances feature of descriptor in preference
* store
*
* @param value -
* boolean true/false
*
*/
public static void setDescriptorMultipleOccurrances(boolean value) {
prefStore.setValue(DESCRIPTOR_MULTIPLE_OCCURRANCES, value);
}
/**
* Returns planned feature value of descriptor in preference store
*
* @return value - boolean
*/
public static boolean getDescriptorPlanned() {
return prefStore.getBoolean(DESCRIPTOR_PLANNED);
}
/**
* Saves value for Planned feature of descriptor in preference store
*
* @param value -
* boolean true/false
*
*/
public static void setDescriptorPlanned(boolean value) {
prefStore.setValue(DESCRIPTOR_PLANNED, value);
}
/**
* Returns EventDriven feature value of descriptor in preference store
*
* @return value - boolean
*/
public static boolean getDescriptorEventDriven() {
return prefStore.getBoolean(DESCRIPTOR_EVENT_DRIVEN);
}
/**
* Saves value for EventDriven feature of descriptor in preference store
*
* @param value -
* boolean true/false
*
*/
public static void setDescriptorEventDriven(boolean value) {
prefStore.setValue(DESCRIPTOR_EVENT_DRIVEN, value);
}
/**
* Returns Ongoing feature value of descriptor in preference store
*
* @return value - boolean
*/
public static boolean getDescriptorOngoing() {
return prefStore.getBoolean(DESCRIPTOR_ONGOING);
}
/**
* Saves value for Ongoing feature of descriptor in preference store
*
* @param value -
* boolean true/false
*
*/
public static void setDescriptorOngoing(boolean value) {
prefStore.setValue(DESCRIPTOR_ONGOING, value);
}
/**
* Returns Repeatable feature value of descriptor in preference store
*
* @return value - boolean
*/
public static boolean getDescriptorRepeatable() {
return prefStore.getBoolean(DESCRIPTOR_REPEATABLE);
}
/**
* Saves value for Repeatable feature of descriptor in preference store
*
* @param value -
* boolean true/false
*
*/
public static void setDescriptorRepeatable(boolean value) {
prefStore.setValue(DESCRIPTOR_REPEATABLE, value);
}
public static void applyDefaultValuesForBreakdownElementAttributes() {
Object[] nonDescriptorDefaultValueDefs = {
new Object[] {
UmaPackage.eINSTANCE
.getWorkBreakdownElement_IsEventDriven(),
Boolean.valueOf(LibraryUIPreferences
.getWorkBreakDownElementEventDriven()) },
new Object[] {
UmaPackage.eINSTANCE
.getBreakdownElement_HasMultipleOccurrences(),
Boolean.valueOf(LibraryUIPreferences
.getWorkBreakDownElementMultipleOccurrances()) },
new Object[] {
UmaPackage.eINSTANCE
.getWorkBreakdownElement_IsOngoing(),
Boolean.valueOf(LibraryUIPreferences
.getWorkBreakDownElementOngoing()) },
new Object[] {
UmaPackage.eINSTANCE.getBreakdownElement_IsOptional(),
Boolean.valueOf(LibraryUIPreferences
.getWorkBreakDownElementOptional()) },
new Object[] {
UmaPackage.eINSTANCE.getBreakdownElement_IsPlanned(),
Boolean.valueOf(LibraryUIPreferences
.getWorkBreakDownElementPlanned()) },
new Object[] {
UmaPackage.eINSTANCE
.getWorkBreakdownElement_IsRepeatable(),
Boolean.valueOf(LibraryUIPreferences
.getWorkBreakDownElementRepeatable()) } };
EClass[] nonDescriptorTypes = { UmaPackage.eINSTANCE.getPhase(),
UmaPackage.eINSTANCE.getIteration(),
UmaPackage.eINSTANCE.getActivity(),
UmaPackage.eINSTANCE.getMilestone() };
Object[] descriptorDefaultValueDefs = {
new Object[] {
UmaPackage.eINSTANCE
.getWorkBreakdownElement_IsEventDriven(),
Boolean.valueOf(LibraryUIPreferences
.getDescriptorEventDriven()) },
new Object[] {
UmaPackage.eINSTANCE
.getBreakdownElement_HasMultipleOccurrences(),
Boolean.valueOf(LibraryUIPreferences
.getDescriptorMultipleOccurrances()) },
new Object[] {
UmaPackage.eINSTANCE
.getWorkBreakdownElement_IsOngoing(),
Boolean.valueOf(LibraryUIPreferences
.getDescriptorOngoing()) },
new Object[] {
UmaPackage.eINSTANCE.getBreakdownElement_IsOptional(),
Boolean.valueOf(LibraryUIPreferences
.getDescriptorOptional()) },
new Object[] {
UmaPackage.eINSTANCE.getBreakdownElement_IsPlanned(),
Boolean.valueOf(LibraryUIPreferences
.getDescriptorPlanned()) },
new Object[] {
UmaPackage.eINSTANCE
.getWorkBreakdownElement_IsRepeatable(),
Boolean.valueOf(LibraryUIPreferences
.getDescriptorRepeatable()) } };
EClass[] descriptorTypes = { UmaPackage.eINSTANCE.getRoleDescriptor(),
UmaPackage.eINSTANCE.getTaskDescriptor(),
UmaPackage.eINSTANCE.getWorkProductDescriptor() };
Object[] defaultValueDefs = {
new Object[] { nonDescriptorTypes,
nonDescriptorDefaultValueDefs },
new Object[] { descriptorTypes, descriptorDefaultValueDefs } };
for (int i = 0; i < defaultValueDefs.length; i++) {
Object[] defaultValueDef = (Object[]) defaultValueDefs[i];
EClass[] types = (EClass[]) defaultValueDef[0];
Object[] featureDefaultValueDefs = (Object[]) defaultValueDef[1];
for (int k = 0; k < featureDefaultValueDefs.length; k++) {
Object[] featureDefaultValue = (Object[]) featureDefaultValueDefs[k];
EStructuralFeature feature = (EStructuralFeature) featureDefaultValue[0];
Object defaultValue = featureDefaultValue[1];
for (int j = 0; j < types.length; j++) {
EClass type = types[j];
DefaultValueManager.INSTANCE.setDefaultValue(type, feature,
defaultValue);
}
}
}
}
}