package org.marketcetera.photon.ui;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.ui.preferences.ScopedPreferenceStore;
import org.marketcetera.photon.PhotonPlugin;
import org.marketcetera.photon.preferences.FIXMessageColumnPreferenceParser;
public class FIXMessageTableRefresher implements IPropertyChangeListener {
private FIXMessageColumnPreferenceParser prefsParser = new FIXMessageColumnPreferenceParser();
private TableViewer parentTableViewer;
private FIXMessageTableFormat<?> tableFormat;
public FIXMessageTableRefresher(TableViewer parentTableViewer,
FIXMessageTableFormat<?> tableFormat) {
this.parentTableViewer = parentTableViewer;
this.tableFormat = tableFormat;
addListeners();
}
protected void addListeners() {
ScopedPreferenceStore thePreferenceStore = PhotonPlugin.getDefault()
.getPreferenceStore();
thePreferenceStore.addPropertyChangeListener(this);
}
protected void removeListeners() {
ScopedPreferenceStore thePreferenceStore = PhotonPlugin.getDefault()
.getPreferenceStore();
thePreferenceStore.removePropertyChangeListener(this);
}
public void dispose() {
removeListeners();
}
public void propertyChange(PropertyChangeEvent event) {
String affectedProperty = event.getProperty();
if (prefsParser.isPreferenceForView(affectedProperty, tableFormat
.getAssignedViewID())) {
tableFormat.updateColumnsFromPreferences();
parentTableViewer.refresh();
}
}
}