| Index: editor/tools/plugins/com.google.dart.tools.deploy/src/com/google/dart/tools/ui/theme/preferences/PreviewPreferences.java
|
| diff --git a/editor/tools/plugins/com.google.dart.tools.deploy/src/com/google/dart/tools/ui/theme/preferences/PreviewPreferences.java b/editor/tools/plugins/com.google.dart.tools.deploy/src/com/google/dart/tools/ui/theme/preferences/PreviewPreferences.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..bc1df1ab94594f1588cee76811a4e82429e0ddd4
|
| --- /dev/null
|
| +++ b/editor/tools/plugins/com.google.dart.tools.deploy/src/com/google/dart/tools/ui/theme/preferences/PreviewPreferences.java
|
| @@ -0,0 +1,199 @@
|
| +package com.google.dart.tools.ui.theme.preferences;
|
| +
|
| +import org.eclipse.core.runtime.ISafeRunnable;
|
| +import org.eclipse.core.runtime.SafeRunner;
|
| +import org.eclipse.core.runtime.preferences.IEclipsePreferences;
|
| +import org.eclipse.core.runtime.preferences.IPreferenceNodeVisitor;
|
| +import org.osgi.service.prefs.BackingStoreException;
|
| +import org.osgi.service.prefs.Preferences;
|
| +
|
| +import java.util.ArrayList;
|
| +import java.util.HashMap;
|
| +import java.util.List;
|
| +import java.util.Map;
|
| +
|
| +/**
|
| + * Provides just enough preference management to update the preview in the preference page, without
|
| + * also updating all open editors.
|
| + */
|
| +public class PreviewPreferences implements IEclipsePreferences {
|
| +
|
| + private Map<String, String> store = new HashMap<String, String>();
|
| + private List<IEclipsePreferences.IPreferenceChangeListener> listeners = new ArrayList<IEclipsePreferences.IPreferenceChangeListener>();;
|
| +
|
| + @Override
|
| + public String absolutePath() {
|
| + return null;
|
| + }
|
| +
|
| + @Override
|
| + public void accept(IPreferenceNodeVisitor visitor) throws BackingStoreException {
|
| + }
|
| +
|
| + @Override
|
| + public void addNodeChangeListener(INodeChangeListener listener) {
|
| + }
|
| +
|
| + @Override
|
| + public void addPreferenceChangeListener(IPreferenceChangeListener listener) {
|
| + listeners.add(listener);
|
| + }
|
| +
|
| + @Override
|
| + public String[] childrenNames() throws BackingStoreException {
|
| + return null;
|
| + }
|
| +
|
| + @Override
|
| + public void clear() throws BackingStoreException {
|
| + store.clear();
|
| + }
|
| +
|
| + @Override
|
| + public void flush() throws BackingStoreException {
|
| + }
|
| +
|
| + @Override
|
| + public String get(String key, String def) {
|
| + if (store.containsKey(key)) {
|
| + return store.get(key);
|
| + } else {
|
| + return def;
|
| + }
|
| + }
|
| +
|
| + @Override
|
| + public boolean getBoolean(String key, boolean def) {
|
| + return Boolean.parseBoolean(get(key, String.valueOf(def)));
|
| + }
|
| +
|
| + @Override
|
| + public byte[] getByteArray(String key, byte[] def) {
|
| + return null;
|
| + }
|
| +
|
| + @Override
|
| + public double getDouble(String key, double def) {
|
| + return 0;
|
| + }
|
| +
|
| + @Override
|
| + public float getFloat(String key, float def) {
|
| + return 0;
|
| + }
|
| +
|
| + @Override
|
| + public int getInt(String key, int def) {
|
| + return 0;
|
| + }
|
| +
|
| + @Override
|
| + public long getLong(String key, long def) {
|
| + return 0;
|
| + }
|
| +
|
| + @Override
|
| + public String[] keys() throws BackingStoreException {
|
| + return store.keySet().toArray(new String[0]);
|
| + }
|
| +
|
| + @Override
|
| + public String name() {
|
| + return null;
|
| + }
|
| +
|
| + @Override
|
| + public Preferences node(String path) {
|
| + return null;
|
| + }
|
| +
|
| + @Override
|
| + public boolean nodeExists(String pathName) throws BackingStoreException {
|
| + return false;
|
| + }
|
| +
|
| + @Override
|
| + public Preferences parent() {
|
| + return null;
|
| + }
|
| +
|
| + @Override
|
| + public void put(String key, String value) {
|
| + Object oldValue = store.get(key);
|
| + store.put(key, value);
|
| + firePreferenceEvent(key, oldValue, value);
|
| + }
|
| +
|
| + @Override
|
| + public void putBoolean(String key, boolean value) {
|
| + put(key, String.valueOf(value));
|
| + }
|
| +
|
| + @Override
|
| + public void putByteArray(String key, byte[] value) {
|
| + }
|
| +
|
| + @Override
|
| + public void putDouble(String key, double value) {
|
| + }
|
| +
|
| + @Override
|
| + public void putFloat(String key, float value) {
|
| + }
|
| +
|
| + @Override
|
| + public void putInt(String key, int value) {
|
| + put(key, String.valueOf(value));
|
| + }
|
| +
|
| + @Override
|
| + public void putLong(String key, long value) {
|
| + }
|
| +
|
| + @Override
|
| + public void remove(String key) {
|
| + store.remove(key);
|
| + }
|
| +
|
| + @Override
|
| + public void removeNode() throws BackingStoreException {
|
| + }
|
| +
|
| + @Override
|
| + public void removeNodeChangeListener(INodeChangeListener listener) {
|
| + }
|
| +
|
| + @Override
|
| + public void removePreferenceChangeListener(IPreferenceChangeListener listener) {
|
| + listeners.remove(listener);
|
| + }
|
| +
|
| + @Override
|
| + public void sync() throws BackingStoreException {
|
| + }
|
| +
|
| + /*
|
| + * Convenience method for notifying preference change listeners.
|
| + */
|
| + protected void firePreferenceEvent(String key, Object oldValue, Object newValue) {
|
| + if (listeners == null) {
|
| + return;
|
| + }
|
| + final PreferenceChangeEvent event = new PreferenceChangeEvent(this, key, oldValue, newValue);
|
| + for (int i = 0; i < listeners.size(); i++) {
|
| + final IPreferenceChangeListener listener = listeners.get(i);
|
| + ISafeRunnable job = new ISafeRunnable() {
|
| + @Override
|
| + public void handleException(Throwable exception) {
|
| + // already logged in Platform#run()
|
| + }
|
| +
|
| + @Override
|
| + public void run() throws Exception {
|
| + listener.preferenceChange(event);
|
| + }
|
| + };
|
| + SafeRunner.run(job);
|
| + }
|
| + }
|
| +}
|
|
|