package com.aptana.editor.php.util; import org.eclipse.core.runtime.preferences.IEclipsePreferences; import org.eclipse.core.runtime.preferences.IScopeContext; import org.eclipse.ui.preferences.IWorkingCopyManager; import org.osgi.service.prefs.BackingStoreException; public final class Key { private String fQualifier; private String fKey; public Key(String qualifier, String key) { 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, IWorkingCopyManager manager) { // fixed bug 197125 // check if the node preferences existence before get its keys IEclipsePreferences node = getNode(context, manager); try { if (node.nodeExists("")) { //$NON-NLS-1$ return node.get(fKey, null); } } catch (BackingStoreException e) { } return 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); } } public void setStoredValue(IScopeContext[] context, String value, IWorkingCopyManager manager) { if (value != null) { getNode(context[0], manager).put(fKey, value); } else { getNode(context[0], manager).remove(fKey); } } /* * (non-Javadoc) * @see java.lang.Object#toString() */ public String toString() { return fQualifier + '/' + fKey; } public String getQualifier() { return fQualifier; } }