/**
* This file is licensed under the University of Illinois/NCSA Open Source License. See LICENSE.TXT for details.
*/
package edu.illinois.codingspectator.monitor.ui;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.StringFieldEditor;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.swt.widgets.Display;
/**
* @author Mohsen Vakilian
*
*/
public abstract class BundlePreferencePage extends FieldEditorPreferencePage {
public BundlePreferencePage(int style) {
super(style);
}
protected StringFieldEditor addDisabledTextField(String textFieldValue, String textFieldLabel) {
StringFieldEditor textfield= new StringFieldEditor(textFieldValue, textFieldLabel, getFieldEditorParent());
textfield.setEnabled(false, getFieldEditorParent());
addField(textfield);
return textfield;
}
/**
* This class implements a listener that updates a given field editor whenever its preference
* key changes.
*
*/
public static abstract class PreferenceChangeListener implements IPropertyChangeListener {
final String preferenceKey;
public PreferenceChangeListener(String preferenceKey) {
this.preferenceKey= preferenceKey;
}
protected abstract StringFieldEditor getFieldEditor();
@Override
public void propertyChange(final PropertyChangeEvent event) {
if (event.getProperty().equals(preferenceKey)) {
// Updates the field editor using syncExec to ensure that the preference page is open.
Display.getDefault().syncExec(new Runnable() {
@Override
public void run() {
getFieldEditor().setStringValue((String)event.getNewValue());
}
});
}
}
}
}