package com.dubture.composer.core.preferences; import java.util.HashMap; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.ProjectScope; import org.eclipse.core.runtime.preferences.IEclipsePreferences; import org.eclipse.jface.preference.IPreferenceStore; public class PreferencesSupport { private HashMap<IProject, ProjectScope> projectToScope; private String nodeQualifier; private IPreferenceStore preferenceStore; /** * Constructs a new PreferencesSupport. * * @param nodeQualifier * A string qualifier for the node (for example: * PHPCorePlugin.ID) * @param preferenceStore * The relevant preferences store. */ public PreferencesSupport(String nodeQualifier, IPreferenceStore preferenceStore) { this.nodeQualifier = nodeQualifier; this.preferenceStore = preferenceStore; projectToScope = new HashMap<IProject, ProjectScope>(); } public String getProjectSpecificPreferencesValue(String key, String def, IProject project) { assert project != null; ProjectScope scope = (ProjectScope) projectToScope.get(project); if (scope == null) { scope = new ProjectScope(project); projectToScope.put(project, scope); } IEclipsePreferences node = scope.getNode(nodeQualifier); if (node != null) { return node.get(key, def); } return null; } public String getPreferencesValue(String key, String def, IProject project) { if (project == null) { return getWorkspacePreferencesValue(key, def); } String projectSpecificPreferencesValue = getProjectSpecificPreferencesValue( key, null, project); if (projectSpecificPreferencesValue == null) { return getWorkspacePreferencesValue(key, def); } return projectSpecificPreferencesValue; } public boolean getBooleanPreferencesValue(String key, boolean def, IProject project) { return Boolean.valueOf(getPreferencesValue(key, def ? "True" : "False", project)).booleanValue(); } public String getWorkspacePreferencesValue(String key) { return preferenceStore.getString(key); } public String getWorkspacePreferencesValue(String key, String def) { if (!preferenceStore.contains(key) && !preferenceStore.isDefault(key)) { return def; } return preferenceStore.getString(key); } }