62
|
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;
|
130
|
37 import Path = tango.io.Path;
|
62
|
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(){
|
130
|
310 if( !Path.exists(FILENAME) ){
|
|
311 scope prefs = new File( FILENAME );
|
62
|
312 prefs.write( import("jface.showprefs.properties" ));
|
|
313 }
|
|
314 ShowPrefs.main( null );
|
|
315 }
|
|
316
|
|
317
|
|
318
|
|
319
|
|
320
|