Mercurial > projects > dwt-samples
diff jface/ShowPrefs.d @ 62:caaf053c44d6
more examples
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Fri, 11 Apr 2008 17:08:20 +0200 |
parents | |
children | 5c1906bfc206 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jface/ShowPrefs.d Fri Apr 11 17:08:20 2008 +0200 @@ -0,0 +1,321 @@ +module jface.ShowPrefs; + +import dwtx.jface.preference.BooleanFieldEditor; +import dwtx.jface.preference.ColorFieldEditor; +import dwtx.jface.preference.DirectoryFieldEditor; +import dwtx.jface.preference.FileFieldEditor; +import dwtx.jface.preference.FontFieldEditor; +import dwtx.jface.preference.FieldEditorPreferencePage; +import dwtx.jface.preference.RadioGroupFieldEditor; +import dwtx.jface.preference.PathEditor; +import dwtx.jface.preference.IntegerFieldEditor; +import dwtx.jface.preference.ScaleFieldEditor; +import dwtx.jface.preference.StringFieldEditor; +import dwtx.jface.preference.IPreferenceStore; +import dwtx.jface.preference.PreferenceManager; +import dwtx.jface.preference.PreferencePage; +import dwtx.jface.preference.PreferenceNode; +import dwtx.jface.preference.PreferenceStore; +import dwtx.jface.preference.PreferenceDialog; +import dwtx.jface.resource.ImageDescriptor; + +import dwt.widgets.Display; +import dwt.widgets.Composite; +import dwt.widgets.Label; +import dwt.widgets.Button; +import dwt.widgets.Text; +import dwt.widgets.Control; +import dwt.events.SelectionAdapter; +import dwt.events.SelectionEvent; +import dwt.layout.RowLayout; +import dwt.layout.GridLayout; +import dwt.layout.GridData; +import dwt.DWT; +import dwt.dwthelper.utils; + +import tango.io.File; +import tango.io.FilePath; + +version(JIVE) import jive.stacktrace; + +const char[] FILENAME = "showprefs"; + +/** + * This class creates a preference page + */ +public class PrefPageOne : PreferencePage { + // Names for preferences + private static final String ONE = "one.one"; + private static final String TWO = "one.two"; + private static final String THREE = "one.three"; + + // Text fields for user to enter preferences + private Text fieldOne; + private Text fieldTwo; + private Text fieldThree; + + /** + * Creates the controls for this page + */ + protected Control createContents(Composite parent) { + Composite composite = new Composite(parent, DWT.NONE); + composite.setLayout(new GridLayout(2, false)); + + // Get the preference store + IPreferenceStore preferenceStore = getPreferenceStore(); + + // Create three text fields. + // Set the text in each from the preference store + (new Label(composite, DWT.LEFT)).setText("Field One:"); + fieldOne = new Text(composite, DWT.BORDER); + fieldOne.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + fieldOne.setText(preferenceStore.getString(ONE)); + + (new Label(composite, DWT.LEFT)).setText("Field Two:"); + fieldTwo = new Text(composite, DWT.BORDER); + fieldTwo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + fieldTwo.setText(preferenceStore.getString(TWO)); + + (new Label(composite, DWT.LEFT)).setText("Field Three:"); + fieldThree = new Text(composite, DWT.BORDER); + fieldThree.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + fieldThree.setText(preferenceStore.getString(THREE)); + + return composite; + } + + /** + * Called when user clicks Restore Defaults + */ + protected void performDefaults() { + // Get the preference store + IPreferenceStore preferenceStore = getPreferenceStore(); + + // Reset the fields to the defaults + fieldOne.setText(preferenceStore.getDefaultString(ONE)); + fieldTwo.setText(preferenceStore.getDefaultString(TWO)); + fieldThree.setText(preferenceStore.getDefaultString(THREE)); + } + + /** + * Called when user clicks Apply or OK + * + * @return bool + */ + public bool performOk() { + // Get the preference store + IPreferenceStore preferenceStore = getPreferenceStore(); + + // Set the values from the fields + if (fieldOne !is null) preferenceStore.setValue(ONE, fieldOne.getText()); + if (fieldTwo !is null) preferenceStore.setValue(TWO, fieldTwo.getText()); + if (fieldThree !is null) + preferenceStore.setValue(THREE, fieldThree.getText()); + + // Return true to allow dialog to close + return true; + } +} + + +/** + * This class creates a preference page + */ +public class PrefPageTwo : PreferencePage { + // Names for preferences + private static final String ONE = "two.one"; + private static final String TWO = "two.two"; + private static final String THREE = "two.three"; + + // The checkboxes + private Button checkOne; + private Button checkTwo; + private Button checkThree; + + /** + * PrefPageTwo constructor + */ + public this() { + super("Two"); + setDescription("Check the checks"); + } + + /** + * Creates the controls for this page + */ + protected Control createContents(Composite parent) { + Composite composite = new Composite(parent, DWT.NONE); + composite.setLayout(new RowLayout(DWT.VERTICAL)); + + // Get the preference store + IPreferenceStore preferenceStore = getPreferenceStore(); + + // Create three checkboxes + checkOne = new Button(composite, DWT.CHECK); + checkOne.setText("Check One"); + checkOne.setSelection(preferenceStore.getBoolean(ONE)); + + checkTwo = new Button(composite, DWT.CHECK); + checkTwo.setText("Check Two"); + checkTwo.setSelection(preferenceStore.getBoolean(TWO)); + + checkThree = new Button(composite, DWT.CHECK); + checkThree.setText("Check Three"); + checkThree.setSelection(preferenceStore.getBoolean(THREE)); + + return composite; + } + + /** + * Add buttons + * + * @param parent the parent composite + */ + protected void contributeButtons(Composite parent) { + // Add a select all button + Button selectAll = new Button(parent, DWT.PUSH); + selectAll.setText("Select All"); + selectAll.addSelectionListener(new class SelectionAdapter { + public void widgetSelected(SelectionEvent event) { + checkOne.setSelection(true); + checkTwo.setSelection(true); + checkThree.setSelection(true); + } + }); + + // Add a select all button + Button clearAll = new Button(parent, DWT.PUSH); + clearAll.setText("Clear All"); + clearAll.addSelectionListener(new class SelectionAdapter { + public void widgetSelected(SelectionEvent event) { + checkOne.setSelection(false); + checkTwo.setSelection(false); + checkThree.setSelection(false); + } + }); + + // Add two columns to the parent's layout + (cast(GridLayout) parent.getLayout()).numColumns += 2; + } + + /** + * Change the description label + */ + protected Label createDescriptionLabel(Composite parent) { + Label label = null; + String description = getDescription(); + if (description != null) { + // Upper case the description + description = description.toUpperCase(); + + // Right-align the label + label = new Label(parent, DWT.RIGHT); + label.setText(description); + } + return label; + } + + /** + * Called when user clicks Restore Defaults + */ + protected void performDefaults() { + // Get the preference store + IPreferenceStore preferenceStore = getPreferenceStore(); + + // Reset the fields to the defaults + checkOne.setSelection(preferenceStore.getDefaultBoolean(ONE)); + checkTwo.setSelection(preferenceStore.getDefaultBoolean(TWO)); + checkThree.setSelection(preferenceStore.getDefaultBoolean(THREE)); + } + + /** + * Called when user clicks Apply or OK + * + * @return bool + */ + public bool performOk() { + // Get the preference store + IPreferenceStore preferenceStore = getPreferenceStore(); + + // Set the values from the fields + if (checkOne !is null) preferenceStore.setValue(ONE, checkOne.getSelection()); + if (checkTwo !is null) preferenceStore.setValue(TWO, checkTwo.getSelection()); + if (checkThree !is null) + preferenceStore.setValue(THREE, checkThree.getSelection()); + + // Return true to allow dialog to close + return true; + } +} + + + +/** + * This class demonstrates JFace preferences + */ +public class ShowPrefs { + /** + * Runs the application + */ + public void run() { +// Display display = new Display(); + + // Create the preference manager + PreferenceManager mgr = new PreferenceManager(); + + // Create the nodes + PreferenceNode one = new PreferenceNode("one", "One", ImageDescriptor + .createFromFile(getImportData!("cancel.gif")), PrefPageOne.classinfo.name ); + PreferenceNode two = new PreferenceNode("two", new PrefPageTwo()); + + // Add the nodes + mgr.addToRoot(one); + mgr.addTo(one.getId(), two); + + // Create the preferences dialog + PreferenceDialog dlg = new PreferenceDialog(null, mgr); + + // Set the preference store + PreferenceStore ps = new PreferenceStore( FILENAME ); + try { + ps.load(); + } catch (IOException e) { + // Ignore + } + dlg.setPreferenceStore(ps); + + // Open the dialog + dlg.open(); + + try { + // Save the preferences + ps.save(); + } catch (IOException e) { + ExceptionPrintStackTrace(e); + } +// display.dispose(); + } + + /** + * The application entry point + * + * @param args the command line arguments + */ + public static void main(String[] args) { + (new ShowPrefs()).run(); + } +} + +void main(){ + scope fn = new FilePath( FILENAME ); + if( !fn.exists ){ + scope prefs = new File( fn ); + prefs.write( import("jface.showprefs.properties" )); + } + ShowPrefs.main( null ); +} + + + + +