| /******************************************************************************* |
| * Copyright (c) 2009 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 API and implementation |
| * |
| * Modified by: |
| * Claudia Knobloch, Forschungszentrum Juelich GmbH |
| *******************************************************************************/ |
| |
| package org.eclipse.ptp.rm.lml.core; |
| |
| import org.eclipse.core.runtime.Platform; |
| import org.eclipse.core.runtime.preferences.DefaultScope; |
| import org.eclipse.core.runtime.preferences.IEclipsePreferences; |
| import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener; |
| import org.eclipse.core.runtime.preferences.IScopeContext; |
| import org.eclipse.core.runtime.preferences.InstanceScope; |
| import org.osgi.service.prefs.BackingStoreException; |
| |
| /** |
| * Convenience class to facilitate using the new {@link IEclipsePreferences} |
| * story. Adapted from org.eclipse.debug.internal.core.Preferences. |
| * |
| * @since 5.0 |
| * @noinstantiate This class is not intended to be instantiated by clients. |
| */ |
| public final class Preferences { |
| |
| private static final IScopeContext[] contexts = new IScopeContext[] { new DefaultScope(), new InstanceScope() }; |
| |
| private static final int DEFAULT_CONTEXT = 0; |
| private static final int INSTANCE_CONTEXT = 1; |
| |
| /** |
| * Adds the given preference listener to the {@link DefaultScope} and the |
| * {@link InstanceScope} |
| * |
| * @param qualifier |
| * @param listener |
| */ |
| public static void addPreferenceChangeListener(String qualifier, IPreferenceChangeListener listener) { |
| contexts[DEFAULT_CONTEXT].getNode(qualifier).addPreferenceChangeListener(listener); |
| contexts[INSTANCE_CONTEXT].getNode(qualifier).addPreferenceChangeListener(listener); |
| } |
| |
| /** |
| * Returns whether the named preference is know in the preference store. |
| * |
| * @param qualifier |
| * @param name |
| * @return |
| */ |
| public static boolean contains(String qualifier, String name) { |
| return (contexts[INSTANCE_CONTEXT].getNode(qualifier).get(name, null) != null || contexts[DEFAULT_CONTEXT].getNode( |
| qualifier).get(name, null) != null); |
| } |
| |
| /** |
| * Returns the value in the preference store for the given key. If the key |
| * is not defined then return the default value. Use the canonical scope |
| * lookup order for finding the preference value. |
| * |
| * @param qualifier |
| * @param key |
| * @param defaultvalue |
| * |
| * @return the value of the preference or the given default value |
| */ |
| public static boolean getBoolean(String qualifier, String key) { |
| return Platform.getPreferencesService().getBoolean(qualifier, key, false, null); |
| } |
| |
| /** |
| * Returns the value in the preference store for the given key. If the key |
| * is not defined then return the default value. Use the canonical scope |
| * lookup order for finding the preference value. |
| * |
| * @param qualifier |
| * @param key |
| * @param defaultvalue |
| * |
| * @return the value of the preference or the given default value |
| */ |
| public static byte[] getByteArray(String qualifier, String key) { |
| return Platform.getPreferencesService().getByteArray(qualifier, key, null, null); |
| } |
| |
| /** |
| * Returns the default boolean value stored in the {@link DefaultScope} for |
| * the given key or the specified default value if the key does not appear |
| * in the {@link DefaultScope} |
| * |
| * @param qualifier |
| * @param key |
| * @param defaultvalue |
| * |
| * @return the boolean value set in the {@link DefaultScope} for the given |
| * key, or the specified default value. |
| */ |
| public static synchronized boolean getDefaultBoolean(String qualifier, String key, boolean defaultvalue) { |
| return contexts[DEFAULT_CONTEXT].getNode(qualifier).getBoolean(key, defaultvalue); |
| } |
| |
| /** |
| * Returns the default byte array value stored in the {@link DefaultScope} |
| * for the given key or the specified default value if the key does not |
| * appear in the {@link DefaultScope} |
| * |
| * @param qualifier |
| * @param key |
| * @param defaultvalue |
| * |
| * @return the byte array value set in the {@link DefaultScope} for the |
| * given key, or the specified default value. |
| */ |
| public static synchronized byte[] getDefaultByteArray(String qualifier, String key, byte[] defaultvalue) { |
| return contexts[DEFAULT_CONTEXT].getNode(qualifier).getByteArray(key, defaultvalue); |
| } |
| |
| /** |
| * Returns the default double value stored in the {@link DefaultScope} for |
| * the given key or the specified default value if the key does not appear |
| * in the {@link DefaultScope} |
| * |
| * @param qualifier |
| * @param key |
| * @param defaultvalue |
| * |
| * @return the double value set in the {@link DefaultScope} for the given |
| * key, or the specified default value. |
| */ |
| public static synchronized double getDefaultDouble(String qualifier, String key, double defaultvalue) { |
| return contexts[DEFAULT_CONTEXT].getNode(qualifier).getDouble(key, defaultvalue); |
| } |
| |
| /** |
| * Returns the default float value stored in the {@link DefaultScope} for |
| * the given key or the specified default value if the key does not appear |
| * in the {@link DefaultScope} |
| * |
| * @param qualifier |
| * @param key |
| * @param defaultvalue |
| * |
| * @return the float value set in the {@link DefaultScope} for the given |
| * key, or the specified default value. |
| */ |
| public static synchronized float getDefaultFloat(String qualifier, String key, float defaultvalue) { |
| return contexts[DEFAULT_CONTEXT].getNode(qualifier).getFloat(key, defaultvalue); |
| } |
| |
| /** |
| * Returns the default integer value stored in the {@link DefaultScope} for |
| * the given key or the specified default value if the key does not appear |
| * in the {@link DefaultScope} |
| * |
| * @param qualifier |
| * @param key |
| * @param defaultvalue |
| * |
| * @return the integer value set in the {@link DefaultScope} for the given |
| * key, or the specified default value. |
| */ |
| public static synchronized int getDefaultInt(String qualifier, String key, int defaultvalue) { |
| return contexts[DEFAULT_CONTEXT].getNode(qualifier).getInt(key, defaultvalue); |
| } |
| |
| /** |
| * Returns the default long value stored in the {@link DefaultScope} for the |
| * given key or the specified default value if the key does not appear in |
| * the {@link DefaultScope} |
| * |
| * @param qualifier |
| * @param key |
| * @param defaultvalue |
| * |
| * @return the long value set in the {@link DefaultScope} for the given key, |
| * or the specified default value. |
| */ |
| public static synchronized long getDefaultLong(String qualifier, String key, long defaultvalue) { |
| return contexts[DEFAULT_CONTEXT].getNode(qualifier).getLong(key, defaultvalue); |
| } |
| |
| /** |
| * Returns the default string value stored in the {@link DefaultScope} for |
| * the given key or the specified default value if the key does not appear |
| * in the {@link DefaultScope} |
| * |
| * @param qualifier |
| * @param key |
| * @param defaultvalue |
| * |
| * @return the string value set in the {@link DefaultScope} for the given |
| * key, or the specified default value. |
| */ |
| public static synchronized String getDefaultString(String qualifier, String key, String defaultvalue) { |
| return contexts[DEFAULT_CONTEXT].getNode(qualifier).get(key, defaultvalue); |
| } |
| |
| /** |
| * Returns the value in the preference store for the given key. If the key |
| * is not defined then return the default value. Use the canonical scope |
| * lookup order for finding the preference value. |
| * |
| * @param qualifier |
| * @param key |
| * @param defaultvalue |
| * |
| * @return the value of the preference or the given default value |
| */ |
| public static double getDouble(String qualifier, String key) { |
| return Platform.getPreferencesService().getDouble(qualifier, key, 0.0, null); |
| } |
| |
| /** |
| * Returns the value in the preference store for the given key. If the key |
| * is not defined then return the default value. Use the canonical scope |
| * lookup order for finding the preference value. |
| * |
| * @param qualifier |
| * @param key |
| * @param defaultvalue |
| * |
| * @return the value of the preference or the given default value |
| */ |
| public static float getFloat(String qualifier, String key) { |
| return Platform.getPreferencesService().getFloat(qualifier, key, 0.0f, null); |
| } |
| |
| /** |
| * Returns the value in the preference store for the given key. If the key |
| * is not defined then return the default value. Use the canonical scope |
| * lookup order for finding the preference value. |
| * |
| * @param qualifier |
| * @param key |
| * @param defaultvalue |
| * |
| * @return the value of the preference or the given default value |
| */ |
| public static int getInt(String qualifier, String key) { |
| return Platform.getPreferencesService().getInt(qualifier, key, 0, null); |
| } |
| |
| /** |
| * Returns the value in the preference store for the given key. If the key |
| * is not defined then return the default value. Use the canonical scope |
| * lookup order for finding the preference value. |
| * |
| * @param qualifier |
| * @param key |
| * @param defaultvalue |
| * |
| * @return the value of the preference or the given default value |
| */ |
| public static long getLong(String qualifier, String key) { |
| return Platform.getPreferencesService().getLong(qualifier, key, 0L, null); |
| } |
| |
| /** |
| * Returns the value in the preference store for the given key. If the key |
| * is not defined then return the default value. Use the canonical scope |
| * lookup order for finding the preference value. |
| * |
| * @param qualifier |
| * @param key |
| * @param defaultvalue |
| * |
| * @return the value of the preference or the given default value |
| */ |
| public static String getString(String qualifier, String key) { |
| return Platform.getPreferencesService().getString(qualifier, key, "", null); //$NON-NLS-1$ |
| } |
| |
| /** |
| * Returns true if the named preference has the default value. |
| * |
| * @param qualifier |
| * @param name |
| * @return |
| */ |
| public static boolean isDefault(String qualifier, String name) { |
| String defVal = contexts[DEFAULT_CONTEXT].getNode(qualifier).get(name, null); |
| if (defVal != null) { |
| String val = contexts[INSTANCE_CONTEXT].getNode(qualifier).get(name, null); |
| return (val != null && val.equals(defVal)); |
| } |
| return false; |
| } |
| |
| /** |
| * Removes the given preference listener from the {@link DefaultScope} and |
| * the {@link InstanceScope} |
| * |
| * @param qualifier |
| * @param listener |
| */ |
| public static void removePreferenceChangeListener(String qualifier, IPreferenceChangeListener listener) { |
| contexts[DEFAULT_CONTEXT].getNode(qualifier).removePreferenceChangeListener(listener); |
| contexts[INSTANCE_CONTEXT].getNode(qualifier).removePreferenceChangeListener(listener); |
| } |
| |
| /** |
| * Save the preferences for the given plugin identifier. It should be noted |
| * that all pending preference changes will be flushed with this method. |
| * |
| * @param qualifier |
| */ |
| public static synchronized void savePreferences(String qualifier) { |
| try { |
| contexts[DEFAULT_CONTEXT].getNode(qualifier).flush(); |
| contexts[INSTANCE_CONTEXT].getNode(qualifier).flush(); |
| } catch (BackingStoreException bse) { |
| LMLCorePlugin.log(bse); |
| } |
| } |
| |
| /** |
| * Sets a boolean preference in the {@link InstanceScope}. |
| * |
| * @param qualifier |
| * @param key |
| * the key |
| * @param value |
| * the value |
| */ |
| public static synchronized void setBoolean(String qualifier, String key, boolean value) { |
| contexts[INSTANCE_CONTEXT].getNode(qualifier).putBoolean(key, value); |
| } |
| |
| /** |
| * Sets a byte array preference in the {@link InstanceScope}. |
| * |
| * @param qualifier |
| * @param key |
| * the key |
| * @param value |
| * the value |
| */ |
| public static synchronized void setByteArray(String qualifier, String key, byte[] value) { |
| contexts[INSTANCE_CONTEXT].getNode(qualifier).putByteArray(key, value); |
| } |
| |
| /** |
| * Sets a boolean in the {@link DefaultScope} |
| * |
| * @param qualifier |
| * @param key |
| * the key |
| * @param value |
| * the new value |
| */ |
| public static synchronized void setDefaultBoolean(String qualifier, String key, boolean value) { |
| contexts[DEFAULT_CONTEXT].getNode(qualifier).putBoolean(key, value); |
| } |
| |
| /** |
| * Sets a byte array in the {@link DefaultScope} |
| * |
| * @param qualifier |
| * @param key |
| * the key |
| * @param value |
| * the new value |
| */ |
| public static synchronized void setDefaultByteArray(String qualifier, String key, byte[] value) { |
| contexts[DEFAULT_CONTEXT].getNode(qualifier).putByteArray(key, value); |
| } |
| |
| /** |
| * Sets a double in the {@link DefaultScope} |
| * |
| * @param qualifier |
| * @param key |
| * the key |
| * @param value |
| * the new value |
| */ |
| public static synchronized void setDefaultDouble(String qualifier, String key, double value) { |
| contexts[DEFAULT_CONTEXT].getNode(qualifier).putDouble(key, value); |
| } |
| |
| /** |
| * Sets a float in the {@link DefaultScope} |
| * |
| * @param qualifier |
| * @param key |
| * the key |
| * @param value |
| * the new value |
| */ |
| public static synchronized void setDefaultFloat(String qualifier, String key, float value) { |
| contexts[DEFAULT_CONTEXT].getNode(qualifier).putFloat(key, value); |
| } |
| |
| /** |
| * Sets a integer in the {@link DefaultScope} |
| * |
| * @param qualifier |
| * @param key |
| * the key |
| * @param value |
| * the new value |
| */ |
| public static synchronized void setDefaultInt(String qualifier, String key, int value) { |
| contexts[DEFAULT_CONTEXT].getNode(qualifier).putInt(key, value); |
| } |
| |
| /** |
| * Sets a long in the {@link DefaultScope} |
| * |
| * @param qualifier |
| * @param key |
| * the key |
| * @param value |
| * the new value |
| */ |
| public static synchronized void setDefaultLong(String qualifier, String key, long value) { |
| contexts[DEFAULT_CONTEXT].getNode(qualifier).putLong(key, value); |
| } |
| |
| /** |
| * Sets a string in the {@link DefaultScope} |
| * |
| * @param qualifier |
| * @param key |
| * the key |
| * @param value |
| * the new value |
| */ |
| public static synchronized void setDefaultString(String qualifier, String key, String value) { |
| contexts[DEFAULT_CONTEXT].getNode(qualifier).put(key, value); |
| } |
| |
| /** |
| * Sets a double preference in the {@link InstanceScope}. |
| * |
| * @param qualifier |
| * @param key |
| * the key |
| * @param value |
| * the value |
| */ |
| public static synchronized void setDouble(String qualifier, String key, double value) { |
| contexts[INSTANCE_CONTEXT].getNode(qualifier).putDouble(key, value); |
| } |
| |
| /** |
| * Sets a float preference in the {@link InstanceScope}. |
| * |
| * @param qualifier |
| * @param key |
| * the key |
| * @param value |
| * the value |
| */ |
| public static synchronized void setFloat(String qualifier, String key, float value) { |
| contexts[INSTANCE_CONTEXT].getNode(qualifier).putFloat(key, value); |
| } |
| |
| /** |
| * Sets a integer preference in the {@link InstanceScope}. |
| * |
| * @param qualifier |
| * @param key |
| * the key |
| * @param value |
| * the value |
| */ |
| public static synchronized void setInt(String qualifier, String key, int value) { |
| contexts[INSTANCE_CONTEXT].getNode(qualifier).putInt(key, value); |
| } |
| |
| /** |
| * Sets a long preference in the {@link InstanceScope}. |
| * |
| * @param qualifier |
| * @param key |
| * the key |
| * @param value |
| * the value |
| */ |
| public static synchronized void setLong(String qualifier, String key, long value) { |
| contexts[INSTANCE_CONTEXT].getNode(qualifier).putLong(key, value); |
| } |
| |
| /** |
| * Sets a string preference in the {@link InstanceScope}. |
| * |
| * @param qualifier |
| * @param key |
| * the key |
| * @param value |
| * the value |
| */ |
| public static synchronized void setString(String qualifier, String key, String value) { |
| contexts[INSTANCE_CONTEXT].getNode(qualifier).put(key, value); |
| } |
| |
| /** |
| * Sets the given preference to its default value. This is done by removing |
| * any set value from the {@link InstanceScope}. Has no effect if the given |
| * key is <code>null</code>. |
| * |
| * @param qualifier |
| * @param key |
| * the key for the preference |
| */ |
| public static synchronized void setToDefault(String qualifier, String key) { |
| if (key != null) { |
| contexts[INSTANCE_CONTEXT].getNode(qualifier).remove(key); |
| } |
| } |
| |
| /** |
| * Constructor |
| */ |
| private Preferences() { |
| // no direct instantiation |
| } |
| } |