package helpers; import org.eclipse.core.runtime.preferences.IEclipsePreferences; import org.eclipse.core.runtime.preferences.InstanceScope; import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener; import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent; public abstract class PreferenceChangedAdapter implements IPreferenceChangeListener { private final String[] preferences; private final IEclipsePreferences source; public PreferenceChangedAdapter(String pluginId,String... preferences) { this(InstanceScope.INSTANCE .getNode(pluginId),preferences); } public PreferenceChangedAdapter(IEclipsePreferences source ,String... preference ) { this.preferences = preference; this.source = source; source.addPreferenceChangeListener(this); } public final void preferenceChange(PreferenceChangeEvent event) { for (String preference: preferences) { if (event.getKey().equals(preference)) { preferenceChanged(preference,(String)event.getOldValue(),(String)event.getNewValue()); } } } public void dispose() { source.removePreferenceChangeListener(this); } public void reregister() { source.addPreferenceChangeListener(this); } public abstract void preferenceChanged(String preference,String oldValue,String newValue); }