/*******************************************************************************
* Copyright (c) 2009, 2010 Progress Software Corporation.
* 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
******************************************************************************/
package org.fusesource.tools.messaging.preference;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.fusesource.tools.messaging.IConstants;
import org.fusesource.tools.messaging.plugin.FuseMessagingPlugin;
public class BasePreferenceHandler implements PreferenceHandler, IPropertyChangeListener {
private IPreferenceStore store = null;
private List<PreferenceChangedListener> preferenceChangedListenerList = new ArrayList<PreferenceChangedListener>();
private static BasePreferenceHandler basePreferenceHandler;
private BasePreferenceHandler() {
setPreferenceStore();
initializeDefaultPreferences();
store.addPropertyChangeListener(this);
}
private void initializeDefaultPreferences() {
IPreferenceStore preferenceStore = getPreferenceStore();
preferenceStore.setDefault(IConstants.MESSAGES_HISTORY_COUNT, IConstants.DEFAULT_MESSAGES_HISTORY_COUNT);
}
private void setPreferenceStore() {
store = FuseMessagingPlugin.getDefault().getPreferenceStore();
}
public static BasePreferenceHandler getInstance() {
if (basePreferenceHandler == null) {
basePreferenceHandler = new BasePreferenceHandler();
}
return basePreferenceHandler;
}
public void propertyChange(PropertyChangeEvent event) {
String prefKey = event.getProperty();
String prefValue = store.getString(prefKey);
firePreferenceChangedEvent(prefKey, prefValue);
}
/**
* @param event
*/
public void firePreferenceChangedEvent(String prefKey, Object prefValue) {
PreferenceEvent event = new PreferenceEvent(prefKey, prefValue);
for (int i = 0; i < preferenceChangedListenerList.size(); i++) {
PreferenceChangedListener listener = preferenceChangedListenerList.get(i);
listener.valueChanged(event);
}
}
public IPreferenceStore getPreferenceStore() {
return store;
}
public void addPreferenceChangedListener(PreferenceChangedListener listener) {
preferenceChangedListenerList.add(listener);
}
public void removePreferenceChangedListener(PreferenceChangedListener listener) {
preferenceChangedListenerList.remove(listener);
}
public String getPreferenceValue(String key) {
return store.getString(key);
}
public void setPreferenceValue(String key, String value) {
store.setValue(key, value);
}
}