/** * */ package org.eclipse.dltk.ui.preferences; import org.eclipse.core.runtime.preferences.IEclipsePreferences; import org.eclipse.core.runtime.preferences.IScopeContext; import org.eclipse.ui.preferences.IWorkingCopyManager; public final class PreferenceKey { private final String fQualifier; private final String fKey; public PreferenceKey(String qualifier, String key) { // it is here to declare the parameter precondition, not to check // values at runtime. assert (qualifier != null); assert (key != null); fQualifier = qualifier; fKey = key; } public String getName() { return fKey; } private IEclipsePreferences getNode(IScopeContext context, IWorkingCopyManager manager) { IEclipsePreferences node = context.getNode(fQualifier); if (manager != null) { return manager.getWorkingCopy(node); } return node; } public String getStoredValue(IScopeContext context) { return getStoredValue(context, null); } public String getStoredValue(IScopeContext context, IWorkingCopyManager manager) { return getNode(context, manager).get(fKey, null); } public String getStoredValue(IScopeContext[] lookupOrder, boolean ignoreTopScope, IWorkingCopyManager manager) { for (int i = ignoreTopScope ? 1 : 0; i < lookupOrder.length; i++) { String value = getStoredValue(lookupOrder[i], manager); if (value != null) { return value; } } return null; } public void setStoredValue(IScopeContext context, String value, IWorkingCopyManager manager) { if (value != null) { getNode(context, manager).put(fKey, value); } else { getNode(context, manager).remove(fKey); } } /** * @param context * @param value */ public void setStoredValue(IScopeContext context, String value) { setStoredValue(context, value, null); } @Override public int hashCode() { return fQualifier.hashCode() ^ fKey.hashCode(); } @Override public boolean equals(Object obj) { if (obj instanceof PreferenceKey) { final PreferenceKey other = (PreferenceKey) obj; return fKey.equals(other.fKey) && fQualifier.equals(other.fQualifier); } return false; } @Override public String toString() { return fQualifier + '/' + fKey; } public String getQualifier() { return fQualifier; } /** * @since 2.0 */ public boolean belongsTo(String qualifier) { return fQualifier.equals(qualifier); } }