package dk.contix.eclipse.hudson.preference;
import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.IntegerFieldEditor;
import org.eclipse.jface.preference.StringButtonFieldEditor;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import dk.contix.eclipse.hudson.Activator;
import dk.contix.eclipse.hudson.HudsonClient;
public class HudsonPreferencesPage extends FieldEditorPreferencePage implements
IWorkbenchPreferencePage {
private IPropertyChangeListener listener;
public HudsonPreferencesPage() {
super(FieldEditorPreferencePage.GRID);
}
protected void createFieldEditors() {
addField(new StringButtonFieldEditor(Activator.PREF_BASE_URL, "Hudson base url", getFieldEditorParent()) {
{
setChangeButtonText("Check url");
}
protected String changePressed() {
try {
HudsonClient.checkValidUrl(getStringValue());
showMessage("Valid url");
setValid(true);
} catch (Exception e) {
showErrorMessage(e.getMessage());
setValid(false);
}
return null;
}
});
final BooleanFieldEditor enabled = new BooleanFieldEditor(Activator.PREF_AUTO_UPDATE, "Update periodically?", getFieldEditorParent());
final IntegerFieldEditor interval = new IntegerFieldEditor(Activator.PREF_UPDATE_INTERVAL, "Update interval (seconds)", getFieldEditorParent());
listener = new IPropertyChangeListener() {
public void propertyChange(PropertyChangeEvent event) {
if (enabled.getBooleanValue()) {
interval.setEnabled(true, getFieldEditorParent());
}
}
};
getPreferenceStore().addPropertyChangeListener(listener);
addField(enabled);
addField(interval);
addField(new BooleanFieldEditor(Activator.PREF_POPUP_ON_ERROR, "Popup window when state changes to error?", getFieldEditorParent()));
}
public boolean isValid() {
return getPreferenceStore().getString(Activator.PREF_BASE_URL) != null;
}
public void init(IWorkbench workbench) {
}
protected IPreferenceStore doGetPreferenceStore() {
return Activator.getDefault().getPreferenceStore();
}
public void dispose() {
getPreferenceStore().removePropertyChangeListener(listener);
super.dispose();
}
public boolean performOk() {
return super.performOk();
}
}