package com.amazonaws.eclipse.sdk.ui.preferences;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.DirectoryFieldEditor;
import org.eclipse.jface.preference.FieldEditor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import com.amazonaws.eclipse.core.ui.preferences.AwsToolkitPreferencePage;
/**
* Abstract preferences page for determining the sdk installation directory, as
* well whether to download the sdk automatically or not.
*/
public abstract class AbstractSDKPreferencesPage extends AwsToolkitPreferencePage implements IWorkbenchPreferencePage {
protected FieldEditor downloadAutomaticallyFieldEditor;
protected DirectoryFieldEditor downloadDirectory;
public AbstractSDKPreferencesPage(String name) {
super(name);
}
@Override
protected Control createContents(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
GridLayoutFactory.fillDefaults().numColumns(1).applyTo(composite);
GridDataFactory.fillDefaults().grab(true, true).applyTo(composite);
Composite downloadDirectoryComposite = new Composite(composite, SWT.None);
GridDataFactory.fillDefaults().grab(true, false).applyTo(downloadDirectoryComposite);
downloadDirectory = new DirectoryFieldEditor(getDownloadDirectoryPreferenceName(), "SDK directory",
downloadDirectoryComposite);
downloadDirectory.setPreferenceStore(getPreferenceStore());
Composite downloadAutomaticallyComposite = new Composite(composite, SWT.None);
GridDataFactory.fillDefaults().grab(true, false).applyTo(downloadAutomaticallyComposite);
downloadAutomaticallyFieldEditor = new BooleanFieldEditor(getDownloadAutomaticallyPreferenceName(),
"Download new SDKs automatically", downloadAutomaticallyComposite);
downloadAutomaticallyFieldEditor.setPreferenceStore(getPreferenceStore());
GridLayoutFactory.fillDefaults().numColumns(3).applyTo(downloadAutomaticallyComposite);
Button checkNow = new Button(downloadAutomaticallyComposite, SWT.None);
checkNow.setText("Check for updates now");
checkNow.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
checkForSDKUpdates();
}
});
downloadAutomaticallyFieldEditor.load();
downloadDirectory.load();
return composite;
}
protected abstract String getDownloadAutomaticallyPreferenceName();
protected abstract String getDownloadDirectoryPreferenceName();
protected abstract void checkForSDKUpdates();
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.preference.PreferencePage#performDefaults()
*/
@Override
protected void performDefaults() {
downloadAutomaticallyFieldEditor.loadDefault();
downloadDirectory.loadDefault();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.preference.PreferencePage#performOk()
*/
@Override
public boolean performOk() {
downloadAutomaticallyFieldEditor.store();
downloadDirectory.store();
return super.performOk();
}
}