annotate dwtx/jface/preference/FieldEditor.d @ 34:b3c8e32d406f

preference
author Frank Benoit <benoit@tionex.de>
date Sat, 05 Apr 2008 01:45:47 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
34
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 /*******************************************************************************
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2 * Copyright (c) 2000, 2006 IBM Corporation and others.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 * Port to the D programming language:
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 * Frank Benoit <benoit@tionex.de>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 *******************************************************************************/
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 module dwtx.jface.preference.FieldEditor;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15 import dwtx.jface.preference.IPreferenceStore;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16 import dwtx.jface.preference.PreferencePage;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 import dwt.DWT;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 import dwt.events.DisposeEvent;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 import dwt.events.DisposeListener;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 import dwt.graphics.FontMetrics;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 import dwt.graphics.GC;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 import dwt.layout.GridData;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 import dwt.layout.GridLayout;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 import dwt.widgets.Button;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 import dwt.widgets.Composite;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 import dwt.widgets.Control;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 import dwt.widgets.Label;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 import dwtx.core.runtime.Assert;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 import dwtx.jface.dialogs.DialogPage;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 import dwtx.jface.dialogs.IDialogConstants;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 import dwtx.jface.resource.JFaceResources;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 import dwtx.jface.util.IPropertyChangeListener;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 import dwtx.jface.util.PropertyChangeEvent;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 import dwt.dwthelper.utils;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 * Abstract base class for all field editors.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 * <p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 * A field editor presents the value of a preference to the end
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 * user. The value is loaded from a preference store; if
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 * modified by the end user, the value is validated and eventually
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 * stored back to the preference store. A field editor reports
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 * an event when the value, or the validity of the value, changes.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 * </p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 * <p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 * Field editors should be used in conjunction with a field
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 * editor preference page (<code>FieldEditorPreferencePage</code>)
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 * which coordinates everything and provides the message line
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 * which display messages emanating from the editor.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 * </p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 * <p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 * This package contains ready-to-use field editors for various
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55 * types of preferences:
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 * <ul>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 * <li><code>BooleanFieldEditor</code> - booleans</li>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 * <li><code>IntegerFieldEditor</code> - integers</li>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 * <li><code>StringFieldEditor</code> - text strings</li>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 * <li><code>RadioGroupFieldEditor</code> - enumerations</li>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 * <li><code>ColorFieldEditor</code> - RGB colors</li>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 * <li><code>FontFieldEditor</code> - fonts</li>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 * <li><code>DirectoryFieldEditor</code> - directories</li>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 * <li><code>FileFieldEditor</code> - files</li>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 * <li><code>PathEditor</code> - paths</li>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 * </ul>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 * </p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 public abstract class FieldEditor {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 * Property name constant (value <code>"field_editor_is_valid"</code>)
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 * to signal a change in the validity of the value of this field editor.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 public static const String IS_VALID = "field_editor_is_valid";//$NON-NLS-1$
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 * Property name constant (value <code>"field_editor_value"</code>)
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 * to signal a change in the value of this field editor.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 public static const String VALUE = "field_editor_value";//$NON-NLS-1$
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 * Gap between label and control.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 protected static const int HORIZONTAL_GAP = 8;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 * The preference store, or <code>null</code> if none.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 private IPreferenceStore preferenceStore = null;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
93 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 * The name of the preference displayed in this field editor.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 private String preferenceName;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 * Indicates whether the default value is currently displayed,
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 * initially <code>false</code>.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 private bool isDefaultPresented = false;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105 * The label's text.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 private String labelText;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110 * The label control.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 private Label label;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 * Listener, or <code>null</code> if none
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 private IPropertyChangeListener propertyChangeListener;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120 * The page containing this field editor
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 private DialogPage page;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125 * Creates a new field editor.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 protected this() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 * Creates a new field editor.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133 * @param name the name of the preference this field editor works on
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 * @param labelText the label text of the field editor
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 * @param parent the parent of the field editor's control
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 protected this(String name, String labelText, Composite parent) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138 init(name, labelText);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 createControl(parent);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143 * Adjusts the horizontal span of this field editor's basic controls.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 * <p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 * Subclasses must implement this method to adjust the horizontal span
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 * of controls so they appear correct in the given number of columns.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147 * </p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
148 * <p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
149 * The number of columns will always be equal to or greater than the
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
150 * value returned by this editor's <code>getNumberOfControls</code> method.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
151 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152 * @param numColumns the number of columns
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
153 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154 protected abstract void adjustForNumColumns(int numColumns);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
155 package void adjustForNumColumns_package(int numColumns){
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
156 adjustForNumColumns(numColumns);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
157 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
158
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
159 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
160 * Applies a font.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
161 * <p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
162 * The default implementation of this framework method
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
163 * does nothing. Subclasses should override this method
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
164 * if they want to change the font of the DWT control to
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165 * a value different than the standard dialog font.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 * </p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168 protected void applyFont() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
170 package void applyFont_package() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
171 applyFont();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
172 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
173
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
175 * Checks if the given parent is the current parent of the
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
176 * supplied control; throws an (unchecked) exception if they
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177 * are not correctly related.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 * @param control the control
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 * @param parent the parent control
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182 protected void checkParent(Control control, Composite parent) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 Assert.isTrue(control.getParent() is parent, "Different parents");//$NON-NLS-1$
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187 * Clears the error message from the message line.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 protected void clearErrorMessage() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190 if (page !is null) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191 page.setErrorMessage(null);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196 * Clears the normal message from the message line.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
198 protected void clearMessage() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199 if (page !is null) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
200 page.setMessage(null);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
201 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
203
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205 * Returns the number of pixels corresponding to the
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 * given number of horizontal dialog units.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 * <p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 * Clients may call this framework method, but should not override it.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209 * </p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
210 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211 * @param control the control being sized
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212 * @param dlus the number of horizontal dialog units
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213 * @return the number of pixels
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
214 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215 protected int convertHorizontalDLUsToPixels(Control control, int dlus) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 GC gc = new GC(control);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217 gc.setFont(control.getFont());
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
218 int averageWidth = gc.getFontMetrics().getAverageCharWidth();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219 gc.dispose();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
220
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
221 double horizontalDialogUnitSize = averageWidth * 0.25;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
222
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
223 return cast(int) Math.round(dlus * horizontalDialogUnitSize);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
224 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
225
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
226 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
227 * Returns the number of pixels corresponding to the
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
228 * given number of vertical dialog units.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
229 * <p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
230 * Clients may call this framework method, but should not override it.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
231 * </p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
232 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
233 * @param control the control being sized
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
234 * @param dlus the number of vertical dialog units
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
235 * @return the number of pixels
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
236 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
237 protected int convertVerticalDLUsToPixels(Control control, int dlus) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
238 GC gc = new GC(control);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
239 gc.setFont(control.getFont());
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
240 int height = gc.getFontMetrics().getHeight();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
241 gc.dispose();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
242
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
243 double verticalDialogUnitSize = height * 0.125;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
244
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
245 return cast(int) Math.round(dlus * verticalDialogUnitSize);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
246 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
247
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
248 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
249 * Creates this field editor's main control containing all of its
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
250 * basic controls.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
251 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
252 * @param parent the parent control
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
253 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
254 protected void createControl(Composite parent) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
255 GridLayout layout = new GridLayout();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
256 layout.numColumns = getNumberOfControls();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
257 layout.marginWidth = 0;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
258 layout.marginHeight = 0;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
259 layout.horizontalSpacing = HORIZONTAL_GAP;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
260 parent.setLayout(layout);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
261 doFillIntoGrid(parent, layout.numColumns);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
262 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
263
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
264 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
265 * Disposes the DWT resources used by this field editor.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
266 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
267 public void dispose() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
268 // nothing to dispose
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
269 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
270
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
271 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
272 * Fills this field editor's basic controls into the given parent.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
273 * <p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
274 * Subclasses must implement this method to create the controls
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
275 * for this field editor.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
276 * </p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
277 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
278 * @param parent the composite used as a parent for the basic controls;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
279 * the parent's layout must be a <code>GridLayout</code>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
280 * @param numColumns the number of columns
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
281 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
282 protected abstract void doFillIntoGrid(Composite parent, int numColumns);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
283
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
284 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
285 * Initializes this field editor with the preference value from
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
286 * the preference store.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
287 * <p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
288 * Subclasses must implement this method to properly initialize
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
289 * the field editor.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
290 * </p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
291 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
292 protected abstract void doLoad();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
293
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
294 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
295 * Initializes this field editor with the default preference value from
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
296 * the preference store.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
297 * <p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
298 * Subclasses must implement this method to properly initialize
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
299 * the field editor.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
300 * </p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
301 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
302 protected abstract void doLoadDefault();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
303
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
304 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
305 * Stores the preference value from this field editor into
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
306 * the preference store.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
307 * <p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
308 * Subclasses must implement this method to save the entered value
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
309 * into the preference store.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
310 * </p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
311 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
312 protected abstract void doStore();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
313
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
314 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
315 * Fills this field editor's basic controls into the given parent.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
316 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
317 * @param parent the composite used as a parent for the basic controls;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
318 * the parent's layout must be a <code>GridLayout</code>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
319 * @param numColumns the number of columns
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
320 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
321 public void fillIntoGrid(Composite parent, int numColumns) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
322 Assert.isTrue(numColumns >= getNumberOfControls());
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
323 Assert.isTrue(null !is cast(GridLayout)parent.getLayout() );
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
324 doFillIntoGrid(parent, numColumns);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
325 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
326
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
327 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
328 * Informs this field editor's listener, if it has one, about a change to
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
329 * one of this field editor's bool-valued properties. Does nothing
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
330 * if the old and new values are the same.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
331 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
332 * @param property the field editor property name,
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
333 * such as <code>VALUE</code> or <code>IS_VALID</code>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
334 * @param oldValue the old value
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
335 * @param newValue the new value
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
336 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
337 protected void fireStateChanged(String property, bool oldValue,
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
338 bool newValue) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
339 if (oldValue is newValue) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
340 return;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
341 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
342 fireValueChanged(property, oldValue ? Boolean.TRUE : Boolean.FALSE, newValue ? Boolean.TRUE : Boolean.FALSE);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
343 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
344
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
345 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
346 * Informs this field editor's listener, if it has one, about a change to
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
347 * one of this field editor's properties.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
348 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
349 * @param property the field editor property name,
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
350 * such as <code>VALUE</code> or <code>IS_VALID</code>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
351 * @param oldValue the old value object, or <code>null</code>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
352 * @param newValue the new value, or <code>null</code>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
353 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
354 protected void fireValueChanged(String property, Object oldValue,
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
355 Object newValue) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
356 if (propertyChangeListener is null) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
357 return;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
358 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
359 propertyChangeListener.propertyChange(new PropertyChangeEvent(this,
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
360 property, oldValue, newValue));
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
361 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
362
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
363 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
364 * Returns the symbolic font name used by this field editor.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
365 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
366 * @return the symbolic font name
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
367 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
368 public String getFieldEditorFontName() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
369 return JFaceResources.DIALOG_FONT;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
370 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
371
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
372 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
373 * Returns the label control.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
374 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
375 * @return the label control, or <code>null</code>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
376 * if no label control has been created
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
377 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
378 protected Label getLabelControl() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
379 return label;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
380 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
381
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
382 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
383 * Returns this field editor's label component.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
384 * <p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
385 * The label is created if it does not already exist
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
386 * </p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
387 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
388 * @param parent the parent
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
389 * @return the label control
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
390 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
391 public Label getLabelControl(Composite parent) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
392 if (label is null) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
393 label = new Label(parent, DWT.LEFT);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
394 label.setFont(parent.getFont());
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
395 String text = getLabelText();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
396 if (text !is null) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
397 label.setText(text);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
398 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
399 label.addDisposeListener(new class DisposeListener {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
400 public void widgetDisposed(DisposeEvent event) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
401 label = null;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
402 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
403 });
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
404 } else {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
405 checkParent(label, parent);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
406 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
407 return label;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
408 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
409
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
410 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
411 * Returns this field editor's label text.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
412 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
413 * @return the label text
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
414 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
415 public String getLabelText() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
416 return labelText;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
417 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
418
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
419 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
420 * Returns the number of basic controls this field editor consists of.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
421 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
422 * @return the number of controls
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
423 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
424 public abstract int getNumberOfControls();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
425
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
426 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
427 * Returns the name of the preference this field editor operates on.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
428 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
429 * @return the name of the preference
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
430 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
431 public String getPreferenceName() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
432 return preferenceName;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
433 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
434
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
435 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
436 * Returns the preference page in which this field editor
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
437 * appears.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
438 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
439 * @return the preference page, or <code>null</code> if none
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
440 * @deprecated use #getPage()
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
441 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
442 protected PreferencePage getPreferencePage() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
443 if(page !is null && cast(PreferencePage)page ) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
444 return cast(PreferencePage) page;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
445 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
446 return null;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
447 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
448
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
449 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
450 * Return the DialogPage that the receiver is sending
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
451 * updates to.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
452 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
453 * @return DialogPage or <code>null</code> if it
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
454 * has not been set.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
455 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
456 * @since 3.1
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
457 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
458 protected DialogPage getPage(){
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
459 return page;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
460 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
461
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
462 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
463 * Returns the preference store used by this field editor.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
464 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
465 * @return the preference store, or <code>null</code> if none
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
466 * @see #setPreferenceStore
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
467 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
468 public IPreferenceStore getPreferenceStore() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
469 return preferenceStore;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
470 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
471
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
472 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
473 * Initialize the field editor with the given preference name and label.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
474 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
475 * @param name the name of the preference this field editor works on
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
476 * @param text the label text of the field editor
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
477 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
478 protected void init(String name, String text) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
479 Assert.isNotNull(name);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
480 Assert.isNotNull(text);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
481 preferenceName = name;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
482 this.labelText = text;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
483 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
484
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
485 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
486 * Returns whether this field editor contains a valid value.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
487 * <p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
488 * The default implementation of this framework method
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
489 * returns <code>true</code>. Subclasses wishing to perform
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
490 * validation should override both this method and
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
491 * <code>refreshValidState</code>.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
492 * </p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
493 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
494 * @return <code>true</code> if the field value is valid,
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
495 * and <code>false</code> if invalid
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
496 * @see #refreshValidState()
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
497 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
498 public bool isValid() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
499 return true;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
500 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
501
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
502 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
503 * Initializes this field editor with the preference value from
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
504 * the preference store.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
505 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
506 public void load() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
507 if (preferenceStore !is null) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
508 isDefaultPresented = false;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
509 doLoad();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
510 refreshValidState();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
511 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
512 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
513
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
514 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
515 * Initializes this field editor with the default preference value
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
516 * from the preference store.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
517 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
518 public void loadDefault() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
519 if (preferenceStore !is null) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
520 isDefaultPresented = true;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
521 doLoadDefault();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
522 refreshValidState();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
523 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
524 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
525
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
526 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
527 * Returns whether this field editor currently presents the
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
528 * default value for its preference.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
529 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
530 * @return <code>true</code> if the default value is presented,
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
531 * and <code>false</code> otherwise
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
532 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
533 public bool presentsDefaultValue() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
534 return isDefaultPresented;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
535 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
536
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
537 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
538 * Refreshes this field editor's valid state after a value change
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
539 * and fires an <code>IS_VALID</code> property change event if
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
540 * warranted.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
541 * <p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
542 * The default implementation of this framework method does
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
543 * nothing. Subclasses wishing to perform validation should override
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
544 * both this method and <code>isValid</code>.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
545 * </p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
546 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
547 * @see #isValid
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
548 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
549 protected void refreshValidState() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
550 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
551
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
552 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
553 * Sets the focus to this field editor.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
554 * <p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
555 * The default implementation of this framework method
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
556 * does nothing. Subclasses may reimplement.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
557 * </p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
558 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
559 public void setFocus() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
560 // do nothing;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
561 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
562
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
563 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
564 * Sets this field editor's label text.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
565 * The label is typically presented to the left of the entry field.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
566 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
567 * @param text the label text
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
568 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
569 public void setLabelText(String text) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
570 Assert.isNotNull(text);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
571 labelText = text;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
572 if (label !is null) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
573 label.setText(text);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
574 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
575 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
576
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
577 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
578 * Sets the name of the preference this field editor operates on.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
579 * <p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
580 * The ability to change this allows the same field editor object
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
581 * to be reused for different preferences.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
582 * </p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
583 * <p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
584 * For example: <p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
585 * <pre>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
586 * ...
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
587 * editor.setPreferenceName("font");
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
588 * editor.load();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
589 * </pre>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
590 * </p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
591 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
592 * @param name the name of the preference
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
593 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
594 public void setPreferenceName(String name) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
595 preferenceName = name;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
596 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
597
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
598 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
599 * Sets the preference page in which this field editor
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
600 * appears.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
601 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
602 * @param preferencePage the preference page, or <code>null</code> if none
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
603 * @deprecated use #setPage(DialogPage)
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
604 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
605 public void setPreferencePage(PreferencePage preferencePage) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
606 setPage(preferencePage);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
607 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
608
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
609
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
610 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
611 * Set the page to be the receiver.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
612 * @param dialogPage
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
613 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
614 * @since 3.1
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
615 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
616 public void setPage(DialogPage dialogPage) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
617 page = dialogPage;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
618
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
619 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
620
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
621 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
622 * Sets the preference store used by this field editor.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
623 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
624 * @param store the preference store, or <code>null</code> if none
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
625 * @see #getPreferenceStore
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
626 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
627 public void setPreferenceStore(IPreferenceStore store) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
628 preferenceStore = store;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
629 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
630
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
631 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
632 * Sets whether this field editor is presenting the default value.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
633 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
634 * @param booleanValue <code>true</code> if the default value is being presented,
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
635 * and <code>false</code> otherwise
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
636 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
637 protected void setPresentsDefaultValue(bool booleanValue) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
638 isDefaultPresented = booleanValue;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
639 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
640 package void setPresentsDefaultValue_package(bool booleanValue) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
641 setPresentsDefaultValue(booleanValue);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
642 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
643
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
644 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
645 * Sets or removes the property change listener for this field editor.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
646 * <p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
647 * Note that field editors can support only a single listener.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
648 * </p>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
649 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
650 * @param listener a property change listener, or <code>null</code>
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
651 * to remove
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
652 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
653 public void setPropertyChangeListener(IPropertyChangeListener listener) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
654 propertyChangeListener = listener;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
655 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
656
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
657 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
658 * Shows the given error message in the page for this
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
659 * field editor if it has one.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
660 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
661 * @param msg the error message
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
662 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
663 protected void showErrorMessage(String msg) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
664 if (page !is null) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
665 page.setErrorMessage(msg);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
666 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
667 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
668
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
669 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
670 * Shows the given message in the page for this
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
671 * field editor if it has one.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
672 *
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
673 * @param msg the message
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
674 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
675 protected void showMessage(String msg) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
676 if (page !is null) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
677 page.setErrorMessage(msg);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
678 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
679 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
680
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
681 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
682 * Stores this field editor's value back into the preference store.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
683 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
684 public void store() {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
685 if (preferenceStore is null) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
686 return;
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
687 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
688
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
689 if (isDefaultPresented) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
690 preferenceStore.setToDefault(preferenceName);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
691 } else {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
692 doStore();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
693 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
694 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
695
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
696 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
697 * Set the GridData on button to be one that is spaced for the
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
698 * current font.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
699 * @param button the button the data is being set on.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
700 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
701
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
702 protected void setButtonLayoutData(Button button) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
703
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
704 GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
705
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
706 // Compute and store a font metric
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
707 GC gc = new GC(button);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
708 gc.setFont(button.getFont());
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
709 FontMetrics fontMetrics = gc.getFontMetrics();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
710 gc.dispose();
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
711
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
712 int widthHint = dwtx.jface.dialogs.Dialog.Dialog
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
713 .convertVerticalDLUsToPixels(fontMetrics,
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
714 IDialogConstants.BUTTON_WIDTH);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
715 data.widthHint = Math.max(widthHint, button.computeSize(DWT.DEFAULT,
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
716 DWT.DEFAULT, true).x);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
717 button.setLayoutData(data);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
718 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
719
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
720 /**
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
721 * Set whether or not the controls in the field editor
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
722 * are enabled.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
723 * @param enabled The enabled state.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
724 * @param parent The parent of the controls in the group.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
725 * Used to create the controls if required.
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
726 */
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
727 public void setEnabled(bool enabled, Composite parent) {
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
728 getLabelControl(parent).setEnabled(enabled);
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
729 }
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
730
b3c8e32d406f preference
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
731 }