root/jface/ShowPrefs.d

Revision 130:5c1906bfc206, 9.5 kB (checked in by Frank Benoit <benoit@tionex.de>, 4 years ago)

Fix deprecated tango API

Line 
1 module jface.ShowPrefs;
2
3 import dwtx.jface.preference.BooleanFieldEditor;
4 import dwtx.jface.preference.ColorFieldEditor;
5 import dwtx.jface.preference.DirectoryFieldEditor;
6 import dwtx.jface.preference.FileFieldEditor;
7 import dwtx.jface.preference.FontFieldEditor;
8 import dwtx.jface.preference.FieldEditorPreferencePage;
9 import dwtx.jface.preference.RadioGroupFieldEditor;
10 import dwtx.jface.preference.PathEditor;
11 import dwtx.jface.preference.IntegerFieldEditor;
12 import dwtx.jface.preference.ScaleFieldEditor;
13 import dwtx.jface.preference.StringFieldEditor;
14 import dwtx.jface.preference.IPreferenceStore;
15 import dwtx.jface.preference.PreferenceManager;
16 import dwtx.jface.preference.PreferencePage;
17 import dwtx.jface.preference.PreferenceNode;
18 import dwtx.jface.preference.PreferenceStore;
19 import dwtx.jface.preference.PreferenceDialog;
20 import dwtx.jface.resource.ImageDescriptor;
21
22 import dwt.widgets.Display;
23 import dwt.widgets.Composite;
24 import dwt.widgets.Label;
25 import dwt.widgets.Button;
26 import dwt.widgets.Text;
27 import dwt.widgets.Control;
28 import dwt.events.SelectionAdapter;
29 import dwt.events.SelectionEvent;
30 import dwt.layout.RowLayout;
31 import dwt.layout.GridLayout;
32 import dwt.layout.GridData;
33 import dwt.DWT;
34 import dwt.dwthelper.utils;
35
36 import tango.io.File;
37 import Path = tango.io.Path;
38
39 version(JIVE) import jive.stacktrace;
40
41 const char[] FILENAME = "showprefs";
42
43 /**
44  * This class creates a preference page
45  */
46 public class PrefPageOne : PreferencePage {
47     // Names for preferences
48     private static final String ONE = "one.one";
49     private static final String TWO = "one.two";
50     private static final String THREE = "one.three";
51
52     // Text fields for user to enter preferences
53     private Text fieldOne;
54     private Text fieldTwo;
55     private Text fieldThree;
56
57     /**
58     * Creates the controls for this page
59     */
60     protected Control createContents(Composite parent) {
61         Composite composite = new Composite(parent, DWT.NONE);
62         composite.setLayout(new GridLayout(2, false));
63
64         // Get the preference store
65         IPreferenceStore preferenceStore = getPreferenceStore();
66
67         // Create three text fields.
68         // Set the text in each from the preference store
69         (new Label(composite, DWT.LEFT)).setText("Field One:");
70         fieldOne = new Text(composite, DWT.BORDER);
71         fieldOne.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
72         fieldOne.setText(preferenceStore.getString(ONE));
73
74         (new Label(composite, DWT.LEFT)).setText("Field Two:");
75         fieldTwo = new Text(composite, DWT.BORDER);
76         fieldTwo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
77         fieldTwo.setText(preferenceStore.getString(TWO));
78
79         (new Label(composite, DWT.LEFT)).setText("Field Three:");
80         fieldThree = new Text(composite, DWT.BORDER);
81         fieldThree.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
82         fieldThree.setText(preferenceStore.getString(THREE));
83
84         return composite;
85     }
86
87     /**
88     * Called when user clicks Restore Defaults
89     */
90     protected void performDefaults() {
91         // Get the preference store
92         IPreferenceStore preferenceStore = getPreferenceStore();
93
94         // Reset the fields to the defaults
95         fieldOne.setText(preferenceStore.getDefaultString(ONE));
96         fieldTwo.setText(preferenceStore.getDefaultString(TWO));
97         fieldThree.setText(preferenceStore.getDefaultString(THREE));
98     }
99
100     /**
101      * Called when user clicks Apply or OK
102      *
103      * @return bool
104      */
105     public bool performOk() {
106         // Get the preference store
107         IPreferenceStore preferenceStore = getPreferenceStore();
108
109         // Set the values from the fields
110         if (fieldOne !is null) preferenceStore.setValue(ONE, fieldOne.getText());
111         if (fieldTwo !is null) preferenceStore.setValue(TWO, fieldTwo.getText());
112         if (fieldThree !is null)
113             preferenceStore.setValue(THREE, fieldThree.getText());
114
115         // Return true to allow dialog to close
116         return true;
117     }
118 }
119
120
121 /**
122  * This class creates a preference page
123  */
124 public class PrefPageTwo : PreferencePage {
125     // Names for preferences
126     private static final String ONE = "two.one";
127     private static final String TWO = "two.two";
128     private static final String THREE = "two.three";
129
130     // The checkboxes
131     private Button checkOne;
132     private Button checkTwo;
133     private Button checkThree;
134
135     /**
136      * PrefPageTwo constructor
137      */
138     public this() {
139         super("Two");
140         setDescription("Check the checks");
141     }
142
143     /**
144      * Creates the controls for this page
145      */
146     protected Control createContents(Composite parent) {
147         Composite composite = new Composite(parent, DWT.NONE);
148         composite.setLayout(new RowLayout(DWT.VERTICAL));
149
150         // Get the preference store
151         IPreferenceStore preferenceStore = getPreferenceStore();
152
153         // Create three checkboxes
154         checkOne = new Button(composite, DWT.CHECK);
155         checkOne.setText("Check One");
156         checkOne.setSelection(preferenceStore.getBoolean(ONE));
157
158         checkTwo = new Button(composite, DWT.CHECK);
159         checkTwo.setText("Check Two");
160         checkTwo.setSelection(preferenceStore.getBoolean(TWO));
161
162         checkThree = new Button(composite, DWT.CHECK);
163         checkThree.setText("Check Three");
164         checkThree.setSelection(preferenceStore.getBoolean(THREE));
165
166         return composite;
167     }
168
169     /**
170      * Add buttons
171      *
172      * @param parent the parent composite
173      */
174     protected void contributeButtons(Composite parent) {
175         // Add a select all button
176         Button selectAll = new Button(parent, DWT.PUSH);
177         selectAll.setText("Select All");
178         selectAll.addSelectionListener(new class SelectionAdapter {
179             public void widgetSelected(SelectionEvent event) {
180                 checkOne.setSelection(true);
181                 checkTwo.setSelection(true);
182                 checkThree.setSelection(true);
183             }
184         });
185
186         // Add a select all button
187         Button clearAll = new Button(parent, DWT.PUSH);
188         clearAll.setText("Clear All");
189         clearAll.addSelectionListener(new class SelectionAdapter {
190             public void widgetSelected(SelectionEvent event) {
191                 checkOne.setSelection(false);
192                 checkTwo.setSelection(false);
193                 checkThree.setSelection(false);
194             }
195         });
196
197         // Add two columns to the parent's layout
198         (cast(GridLayout) parent.getLayout()).numColumns += 2;
199     }
200
201     /**
202      * Change the description label
203      */
204     protected Label createDescriptionLabel(Composite parent) {
205         Label label = null;
206         String description = getDescription();
207         if (description != null) {
208         // Upper case the description
209         description = description.toUpperCase();
210
211         // Right-align the label
212         label = new Label(parent, DWT.RIGHT);
213         label.setText(description);
214         }
215         return label;
216     }
217
218     /**
219      * Called when user clicks Restore Defaults
220      */
221     protected void performDefaults() {
222         // Get the preference store
223         IPreferenceStore preferenceStore = getPreferenceStore();
224
225         // Reset the fields to the defaults
226         checkOne.setSelection(preferenceStore.getDefaultBoolean(ONE));
227         checkTwo.setSelection(preferenceStore.getDefaultBoolean(TWO));
228         checkThree.setSelection(preferenceStore.getDefaultBoolean(THREE));
229     }
230
231     /**
232      * Called when user clicks Apply or OK
233      *
234      * @return bool
235      */
236     public bool performOk() {
237         // Get the preference store
238         IPreferenceStore preferenceStore = getPreferenceStore();
239
240         // Set the values from the fields
241         if (checkOne !is null) preferenceStore.setValue(ONE, checkOne.getSelection());
242         if (checkTwo !is null) preferenceStore.setValue(TWO, checkTwo.getSelection());
243         if (checkThree !is null)
244             preferenceStore.setValue(THREE, checkThree.getSelection());
245
246         // Return true to allow dialog to close
247         return true;
248     }
249 }
250
251
252
253 /**
254  * This class demonstrates JFace preferences
255  */
256 public class ShowPrefs {
257     /**
258      * Runs the application
259      */
260     public void run() {
261 //         Display display = new Display();
262
263         // Create the preference manager
264         PreferenceManager mgr = new PreferenceManager();
265
266         // Create the nodes
267         PreferenceNode one = new PreferenceNode("one", "One", ImageDescriptor
268             .createFromFile(getImportData!("cancel.gif")), PrefPageOne.classinfo.name );
269         PreferenceNode two = new PreferenceNode("two", new PrefPageTwo());
270
271         // Add the nodes
272         mgr.addToRoot(one);
273         mgr.addTo(one.getId(), two);
274
275         // Create the preferences dialog
276         PreferenceDialog dlg = new PreferenceDialog(null, mgr);
277
278         // Set the preference store
279         PreferenceStore ps = new PreferenceStore( FILENAME );
280         try {
281             ps.load();
282         } catch (IOException e) {
283             // Ignore
284         }
285         dlg.setPreferenceStore(ps);
286
287         // Open the dialog
288         dlg.open();
289
290         try {
291             // Save the preferences
292             ps.save();
293         } catch (IOException e) {
294             ExceptionPrintStackTrace(e);
295         }
296 //         display.dispose();
297     }
298
299     /**
300      * The application entry point
301      *
302      * @param args the command line arguments
303      */
304     public static void main(String[] args) {
305         (new ShowPrefs()).run();
306     }
307 }
308
309 void main(){
310     if( !Path.exists(FILENAME) ){
311         scope prefs = new File( FILENAME );
312         prefs.write( import("jface.showprefs.properties" ));
313     }
314     ShowPrefs.main( null );
315 }
Note: See TracBrowser for help on using the browser.