package org.netbeans.gradle.project.properties.global; import java.util.prefs.PreferenceChangeListener; import java.util.prefs.Preferences; import org.jtrim.event.ListenerRef; import org.netbeans.gradle.project.NbGradleProjectFactory; import org.netbeans.gradle.project.api.event.NbListenerRefs; import org.openide.util.NbPreferences; public enum NbGlobalPreference implements BasicPreference { DEFAULT; private static Preferences getPreferences() { return NbPreferences.forModule(NbGradleProjectFactory.class); } @Override public void put(String key, String value) { getPreferences().put(key, value); } @Override public void remove(String key) { getPreferences().remove(key); } @Override public String get(String key) { return getPreferences().get(key, null); } @Override public ListenerRef addPreferenceChangeListener(final PreferenceChangeListener pcl) { final Preferences preferences = getPreferences(); // To be super safe, we could wrap the listener preferences.addPreferenceChangeListener(pcl); return NbListenerRefs.fromRunnable(new Runnable() { @Override public void run() { preferences.removePreferenceChangeListener(pcl); } }); } }