Mercurial > projects > dwt-addons
annotate dwtx/jface/viewers/CellEditor.d @ 90:7ffeace6c47f
Update 3.4M7 to 3.4
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sun, 06 Jul 2008 23:30:07 +0200 |
parents | 5df4896124c7 |
children |
rev | line source |
---|---|
10 | 1 /******************************************************************************* |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
2 * Copyright (c) 2000, 2008 IBM Corporation and others. |
10 | 3 * All rights reserved. This program and the accompanying materials |
4 * are made available under the terms of the Eclipse Public License v1.0 | |
5 * which accompanies this distribution, and is available at | |
6 * http://www.eclipse.org/legal/epl-v10.html | |
7 * | |
8 * Contributors: | |
9 * IBM Corporation - initial API and implementation | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
10 * Tom Schindl <tom.schindl@bestsolution.at> - bugfix in: 187963, 218336 |
10 | 11 * Port to the D programming language: |
12 * Frank Benoit <benoit@tionex.de> | |
13 *******************************************************************************/ | |
14 | |
15 module dwtx.jface.viewers.CellEditor; | |
16 | |
17 import dwtx.jface.viewers.ICellEditorValidator; | |
18 import dwtx.jface.viewers.ICellEditorListener; | |
19 import dwtx.jface.viewers.ColumnViewerEditorActivationEvent; | |
71 | 20 import dwtx.jface.viewers.ColumnViewerEditorDeactivationEvent; |
10 | 21 |
22 import dwt.DWT; | |
23 import dwt.events.KeyEvent; | |
24 import dwt.widgets.Composite; | |
25 import dwt.widgets.Control; | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
26 import dwt.widgets.Display; |
10 | 27 import dwtx.core.runtime.Assert; |
28 import dwtx.core.runtime.ListenerList; | |
29 import dwtx.jface.util.IPropertyChangeListener; | |
30 import dwtx.jface.util.PropertyChangeEvent; | |
31 import dwtx.jface.util.SafeRunnable; | |
32 | |
33 import dwt.dwthelper.utils; | |
34 | |
69
07b9d96fd764
Make nested class CellEditor.LayoutData a top level class to omit compiler errors "forward reference"
Frank Benoit <benoit@tionex.de>
parents:
39
diff
changeset
|
35 /** |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
36 * Struct-like layout data for cell editors, with reasonable defaults for |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
37 * all fields. |
90 | 38 * |
39 * @noextend This class is not intended to be subclassed by clients. | |
69
07b9d96fd764
Make nested class CellEditor.LayoutData a top level class to omit compiler errors "forward reference"
Frank Benoit <benoit@tionex.de>
parents:
39
diff
changeset
|
40 */ |
07b9d96fd764
Make nested class CellEditor.LayoutData a top level class to omit compiler errors "forward reference"
Frank Benoit <benoit@tionex.de>
parents:
39
diff
changeset
|
41 public static class LayoutData { |
07b9d96fd764
Make nested class CellEditor.LayoutData a top level class to omit compiler errors "forward reference"
Frank Benoit <benoit@tionex.de>
parents:
39
diff
changeset
|
42 /** |
07b9d96fd764
Make nested class CellEditor.LayoutData a top level class to omit compiler errors "forward reference"
Frank Benoit <benoit@tionex.de>
parents:
39
diff
changeset
|
43 * Horizontal alignment; <code>DWT.LEFT</code> by default. |
07b9d96fd764
Make nested class CellEditor.LayoutData a top level class to omit compiler errors "forward reference"
Frank Benoit <benoit@tionex.de>
parents:
39
diff
changeset
|
44 */ |
07b9d96fd764
Make nested class CellEditor.LayoutData a top level class to omit compiler errors "forward reference"
Frank Benoit <benoit@tionex.de>
parents:
39
diff
changeset
|
45 public int horizontalAlignment = DWT.LEFT; |
07b9d96fd764
Make nested class CellEditor.LayoutData a top level class to omit compiler errors "forward reference"
Frank Benoit <benoit@tionex.de>
parents:
39
diff
changeset
|
46 |
07b9d96fd764
Make nested class CellEditor.LayoutData a top level class to omit compiler errors "forward reference"
Frank Benoit <benoit@tionex.de>
parents:
39
diff
changeset
|
47 /** |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
48 * Indicates control grabs additional space; <code>true</code> by |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
49 * default. |
69
07b9d96fd764
Make nested class CellEditor.LayoutData a top level class to omit compiler errors "forward reference"
Frank Benoit <benoit@tionex.de>
parents:
39
diff
changeset
|
50 */ |
07b9d96fd764
Make nested class CellEditor.LayoutData a top level class to omit compiler errors "forward reference"
Frank Benoit <benoit@tionex.de>
parents:
39
diff
changeset
|
51 public bool grabHorizontal = true; |
07b9d96fd764
Make nested class CellEditor.LayoutData a top level class to omit compiler errors "forward reference"
Frank Benoit <benoit@tionex.de>
parents:
39
diff
changeset
|
52 |
07b9d96fd764
Make nested class CellEditor.LayoutData a top level class to omit compiler errors "forward reference"
Frank Benoit <benoit@tionex.de>
parents:
39
diff
changeset
|
53 /** |
07b9d96fd764
Make nested class CellEditor.LayoutData a top level class to omit compiler errors "forward reference"
Frank Benoit <benoit@tionex.de>
parents:
39
diff
changeset
|
54 * Minimum width in pixels; <code>50</code> pixels by default. |
07b9d96fd764
Make nested class CellEditor.LayoutData a top level class to omit compiler errors "forward reference"
Frank Benoit <benoit@tionex.de>
parents:
39
diff
changeset
|
55 */ |
07b9d96fd764
Make nested class CellEditor.LayoutData a top level class to omit compiler errors "forward reference"
Frank Benoit <benoit@tionex.de>
parents:
39
diff
changeset
|
56 public int minimumWidth = 50; |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
57 |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
58 /** |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
59 * Minimum height in pixels; by default the height is aligned to the |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
60 * row-height |
90 | 61 * @since 3.4 |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
62 */ |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
63 public int minimumHeight = DWT.DEFAULT; |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
64 |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
65 /** |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
66 * The vertical alignment; <code>DWT.CENTER</code> by default. |
90 | 67 * @since 3.4 |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
68 */ |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
69 public int verticalAlignment = DWT.CENTER; |
69
07b9d96fd764
Make nested class CellEditor.LayoutData a top level class to omit compiler errors "forward reference"
Frank Benoit <benoit@tionex.de>
parents:
39
diff
changeset
|
70 } |
10 | 71 /** |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
72 * Abstract base class for cell editors. Implements property change listener |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
73 * handling, and DWT window management. |
10 | 74 * <p> |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
75 * Subclasses implement particular kinds of cell editors. This package contains |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
76 * various specialized cell editors: |
10 | 77 * <ul> |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
78 * <li><code>TextCellEditor</code> - for simple text strings</li> |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
79 * <li><code>ColorCellEditor</code> - for colors</li> |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
80 * <li><code>ComboBoxCellEditor</code> - value selected from drop-down combo |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
81 * box</li> |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
82 * <li><code>CheckboxCellEditor</code> - bool valued checkbox</li> |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
83 * <li><code>DialogCellEditor</code> - value from arbitrary dialog</li> |
10 | 84 * </ul> |
85 * </p> | |
86 */ | |
87 public abstract class CellEditor { | |
88 | |
89 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
90 * List of cell editor listeners (element type: |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
91 * <code>ICellEditorListener</code>). |
10 | 92 */ |
93 private ListenerList listeners; | |
94 | |
95 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
96 * List of cell editor property change listeners (element type: |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
97 * <code>IPropertyChangeListener</code>). |
10 | 98 */ |
99 private ListenerList propertyChangeListeners; | |
100 | |
101 /** | |
102 * Indicates whether this cell editor's current value is valid. | |
103 */ | |
104 private bool valid = false; | |
105 | |
106 /** | |
107 * Optional cell editor validator; <code>null</code> if none. | |
108 */ | |
109 private ICellEditorValidator validator = null; | |
110 | |
111 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
112 * The error message string to display for invalid values; <code>null</code> |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
113 * if none (that is, the value is valid). |
10 | 114 */ |
115 private String errorMessage = null; | |
116 | |
117 /** | |
118 * Indicates whether this cell editor has been changed recently. | |
119 */ | |
120 private bool dirty = false; | |
121 | |
122 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
123 * This cell editor's control, or <code>null</code> if not created yet. |
10 | 124 */ |
125 private Control control = null; | |
126 | |
127 /** | |
128 * Default cell editor style | |
129 */ | |
130 private static const int defaultStyle = DWT.NONE; | |
131 | |
132 /** | |
133 * This cell editor's style | |
134 */ | |
135 private int style = defaultStyle; | |
136 | |
69
07b9d96fd764
Make nested class CellEditor.LayoutData a top level class to omit compiler errors "forward reference"
Frank Benoit <benoit@tionex.de>
parents:
39
diff
changeset
|
137 //public alias dwtx.jface.viewers.CellEditor.LayoutData LayoutData; |
10 | 138 /** |
139 * Property name for the copy action | |
140 */ | |
141 public static const String COPY = "copy"; //$NON-NLS-1$ | |
142 | |
143 /** | |
144 * Property name for the cut action | |
145 */ | |
146 public static const String CUT = "cut"; //$NON-NLS-1$ | |
147 | |
148 /** | |
149 * Property name for the delete action | |
150 */ | |
151 public static const String DELETE = "delete"; //$NON-NLS-1$ | |
152 | |
153 /** | |
154 * Property name for the find action | |
155 */ | |
156 public static const String FIND = "find"; //$NON-NLS-1$ | |
157 | |
158 /** | |
159 * Property name for the paste action | |
160 */ | |
161 public static const String PASTE = "paste"; //$NON-NLS-1$ | |
162 | |
163 /** | |
164 * Property name for the redo action | |
165 */ | |
166 public static const String REDO = "redo"; //$NON-NLS-1$ | |
167 | |
168 /** | |
169 * Property name for the select all action | |
170 */ | |
171 public static const String SELECT_ALL = "selectall"; //$NON-NLS-1$ | |
172 | |
173 /** | |
174 * Property name for the undo action | |
175 */ | |
176 public static const String UNDO = "undo"; //$NON-NLS-1$ | |
177 | |
178 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
179 * Creates a new cell editor with no control The cell editor has no cell |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
180 * validator. |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
181 * |
10 | 182 * @since 2.1 |
183 */ | |
184 protected this() { | |
185 propertyChangeListeners = new ListenerList(); | |
186 listeners = new ListenerList(); | |
187 } | |
188 | |
189 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
190 * Creates a new cell editor under the given parent control. The cell editor |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
191 * has no cell validator. |
10 | 192 * |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
193 * @param parent |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
194 * the parent control |
10 | 195 */ |
196 protected this(Composite parent) { | |
197 this(parent, defaultStyle); | |
198 } | |
199 | |
200 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
201 * Creates a new cell editor under the given parent control. The cell editor |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
202 * has no cell validator. |
10 | 203 * |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
204 * @param parent |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
205 * the parent control |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
206 * @param style |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
207 * the style bits |
10 | 208 * @since 2.1 |
209 */ | |
210 protected this(Composite parent, int style) { | |
211 propertyChangeListeners = new ListenerList(); | |
212 listeners = new ListenerList(); | |
213 this.style = style; | |
214 create(parent); | |
215 } | |
216 | |
217 /** | |
218 * Activates this cell editor. | |
219 * <p> | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
220 * The default implementation of this framework method does nothing. |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
221 * Subclasses may reimplement. |
10 | 222 * </p> |
223 */ | |
224 public void activate() { | |
225 } | |
226 | |
227 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
228 * Adds a listener to this cell editor. Has no effect if an identical |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
229 * listener is already registered. |
10 | 230 * |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
231 * @param listener |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
232 * a cell editor listener |
10 | 233 */ |
234 public void addListener(ICellEditorListener listener) { | |
235 listeners.add(cast(Object)listener); | |
236 } | |
237 | |
238 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
239 * Adds a property change listener to this cell editor. Has no effect if an |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
240 * identical property change listener is already registered. |
10 | 241 * |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
242 * @param listener |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
243 * a property change listener |
10 | 244 */ |
245 public void addPropertyChangeListener(IPropertyChangeListener listener) { | |
246 propertyChangeListeners.add(cast(Object)listener); | |
247 } | |
248 | |
249 /** | |
250 * Creates the control for this cell editor under the given parent control. | |
251 * <p> | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
252 * This framework method must be implemented by concrete subclasses. |
10 | 253 * </p> |
254 * | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
255 * @param parent |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
256 * the parent control |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
257 * @return the new control, or <code>null</code> if this cell editor has |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
258 * no control |
10 | 259 */ |
260 protected abstract Control createControl(Composite parent); | |
261 | |
262 /** | |
263 * Creates the control for this cell editor under the given parent control. | |
264 * | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
265 * @param parent |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
266 * the parent control |
10 | 267 * @since 2.1 |
268 */ | |
269 public void create(Composite parent) { | |
270 Assert.isTrue(control is null); | |
271 control = createControl(parent); | |
272 // See 1GD5CA6: ITPUI:ALL - TaskView.setSelection does not work | |
90 | 273 // Control is created with getVisible()is true by default. |
10 | 274 // This causes composite.setFocus() to work incorrectly. |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
275 // The cell editor's control grabs focus instead, even if it is not |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
276 // active. |
10 | 277 // Make the control invisible here by default. |
278 deactivate(); | |
279 } | |
280 | |
281 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
282 * Hides this cell editor's control. Does nothing if this cell editor is not |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
283 * visible. |
10 | 284 */ |
285 public void deactivate() { | |
286 if (control !is null && !control.isDisposed()) { | |
287 control.setVisible(false); | |
288 } | |
289 } | |
290 | |
291 /** | |
292 * Disposes of this cell editor and frees any associated DWT resources. | |
293 */ | |
294 public void dispose() { | |
295 if (control !is null && !control.isDisposed()) { | |
296 control.dispose(); | |
297 } | |
298 control = null; | |
299 } | |
300 | |
301 /** | |
302 * Returns this cell editor's value. | |
303 * <p> | |
304 * This framework method must be implemented by concrete subclasses. | |
305 * </p> | |
306 * | |
307 * @return the value of this cell editor | |
308 * @see #getValue | |
309 */ | |
310 protected abstract Object doGetValue(); | |
311 | |
312 /** | |
313 * Sets the focus to the cell editor's control. | |
314 * <p> | |
315 * This framework method must be implemented by concrete subclasses. | |
316 * </p> | |
317 * | |
318 * @see #setFocus | |
319 */ | |
320 protected abstract void doSetFocus(); | |
321 | |
322 /** | |
323 * Sets this cell editor's value. | |
324 * <p> | |
325 * This framework method must be implemented by concrete subclasses. | |
326 * </p> | |
327 * | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
328 * @param value |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
329 * the value of this cell editor |
10 | 330 * @see #setValue |
331 */ | |
332 protected abstract void doSetValue(Object value); | |
333 | |
334 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
335 * Notifies all registered cell editor listeners of an apply event. Only |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
336 * listeners registered at the time this method is called are notified. |
10 | 337 * |
338 * @see ICellEditorListener#applyEditorValue | |
339 */ | |
340 protected void fireApplyEditorValue() { | |
341 Object[] array = listeners.getListeners(); | |
342 for (int i = 0; i < array.length; i++) { | |
39 | 343 SafeRunnable.run(new class(cast(ICellEditorListener) array[i]) SafeRunnable { |
10 | 344 ICellEditorListener l; |
39 | 345 this(ICellEditorListener a){ |
346 l = a; | |
10 | 347 } |
348 public void run() { | |
349 l.applyEditorValue(); | |
350 } | |
351 }); | |
352 } | |
353 } | |
354 | |
355 /** | |
356 * Notifies all registered cell editor listeners that editing has been | |
357 * canceled. | |
358 * | |
359 * @see ICellEditorListener#cancelEditor | |
360 */ | |
361 protected void fireCancelEditor() { | |
362 Object[] array = listeners.getListeners(); | |
363 for (int i = 0; i < array.length; i++) { | |
39 | 364 SafeRunnable.run(new class(cast(ICellEditorListener) array[i]) SafeRunnable { |
10 | 365 ICellEditorListener l; |
39 | 366 this(ICellEditorListener a){ |
367 l = a; | |
10 | 368 } |
369 public void run() { | |
370 l.cancelEditor(); | |
371 } | |
372 }); | |
373 } | |
374 } | |
375 | |
376 /** | |
377 * Notifies all registered cell editor listeners of a value change. | |
378 * | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
379 * @param oldValidState |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
380 * the valid state before the end user changed the value |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
381 * @param newValidState |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
382 * the current valid state |
10 | 383 * @see ICellEditorListener#editorValueChanged |
384 */ | |
385 protected void fireEditorValueChanged(bool oldValidState, | |
386 bool newValidState) { | |
387 Object[] array = listeners.getListeners(); | |
388 for (int i = 0; i < array.length; i++) { | |
39 | 389 SafeRunnable.run(new class(newValidState,oldValidState,cast(ICellEditorListener) array[i]) SafeRunnable { |
10 | 390 bool newValidState_; |
391 bool oldValidState_; | |
392 ICellEditorListener l; | |
39 | 393 this(bool a, bool b, ICellEditorListener c){ |
394 newValidState_=a; | |
395 oldValidState_=b; | |
396 l = c; | |
10 | 397 } |
398 public void run() { | |
399 l.editorValueChanged(oldValidState_, newValidState_); | |
400 } | |
401 }); | |
402 } | |
403 } | |
404 | |
405 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
406 * Notifies all registered property listeners of an enablement change. |
10 | 407 * |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
408 * @param actionId |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
409 * the id indicating what action's enablement has changed. |
10 | 410 */ |
411 protected void fireEnablementChanged(String actionId) { | |
412 Object[] array = propertyChangeListeners.getListeners(); | |
413 for (int i = 0; i < array.length; i++) { | |
39 | 414 SafeRunnable.run(new class(actionId,cast(IPropertyChangeListener) array[i]) SafeRunnable { |
10 | 415 String actionId_; |
416 IPropertyChangeListener l; | |
39 | 417 this(String a, IPropertyChangeListener b){ |
418 actionId_=a; | |
419 l = b; | |
10 | 420 } |
421 public void run() { | |
422 l.propertyChange(new PropertyChangeEvent(this, actionId_, | |
423 null, null)); | |
424 } | |
425 }); | |
426 } | |
427 } | |
428 | |
429 /** | |
430 * Sets the style bits for this cell editor. | |
431 * | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
432 * @param style |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
433 * the DWT style bits for this cell editor |
10 | 434 * @since 2.1 |
435 */ | |
436 public void setStyle(int style) { | |
437 this.style = style; | |
438 } | |
439 | |
440 /** | |
441 * Returns the style bits for this cell editor. | |
442 * | |
443 * @return the style for this cell editor | |
444 * @since 2.1 | |
445 */ | |
446 public int getStyle() { | |
447 return style; | |
448 } | |
449 | |
450 /** | |
451 * Returns the control used to implement this cell editor. | |
452 * | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
453 * @return the control, or <code>null</code> if this cell editor has no |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
454 * control |
10 | 455 */ |
456 public Control getControl() { | |
457 return control; | |
458 } | |
459 | |
460 /** | |
461 * Returns the current error message for this cell editor. | |
462 * | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
463 * @return the error message if the cell editor is in an invalid state, and |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
464 * <code>null</code> if the cell editor is valid |
10 | 465 */ |
466 public String getErrorMessage() { | |
467 return errorMessage; | |
468 } | |
469 | |
470 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
471 * Returns a layout data object for this cell editor. This is called each |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
472 * time the cell editor is activated and controls the layout of the DWT |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
473 * table editor. |
10 | 474 * <p> |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
475 * The default implementation of this method sets the minimum width to the |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
476 * control's preferred width. Subclasses may extend or reimplement. |
10 | 477 * </p> |
478 * | |
479 * @return the layout data object | |
480 */ | |
481 public LayoutData getLayoutData() { | |
482 LayoutData result = new LayoutData(); | |
483 Control control = getControl(); | |
484 if (control !is null) { | |
485 result.minimumWidth = control.computeSize(DWT.DEFAULT, DWT.DEFAULT, | |
486 true).x; | |
487 } | |
488 return result; | |
489 } | |
490 | |
491 /** | |
492 * Returns the input validator for this cell editor. | |
493 * | |
494 * @return the input validator, or <code>null</code> if none | |
495 */ | |
496 public ICellEditorValidator getValidator() { | |
497 return validator; | |
498 } | |
499 | |
500 /** | |
501 * Returns this cell editor's value provided that it has a valid one. | |
502 * | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
503 * @return the value of this cell editor, or <code>null</code> if the cell |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
504 * editor does not contain a valid value |
10 | 505 */ |
506 public final Object getValue() { | |
507 if (!valid) { | |
508 return null; | |
509 } | |
510 | |
511 return doGetValue(); | |
512 } | |
513 | |
514 /** | |
515 * Returns whether this cell editor is activated. | |
516 * | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
517 * @return <code>true</code> if this cell editor's control is currently |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
518 * activated, and <code>false</code> if not activated |
10 | 519 */ |
520 public bool isActivated() { | |
521 // Use the state of the visible style bit (getVisible()) rather than the | |
522 // window's actual visibility (isVisible()) to get correct handling when | |
523 // an ancestor control goes invisible, see bug 85331. | |
524 return control !is null && control.getVisible(); | |
525 } | |
526 | |
527 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
528 * Returns <code>true</code> if this cell editor is able to perform the |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
529 * copy action. |
10 | 530 * <p> |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
531 * This default implementation always returns <code>false</code>. |
10 | 532 * </p> |
533 * <p> | |
534 * Subclasses may override | |
535 * </p> | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
536 * |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
537 * @return <code>true</code> if copy is possible, <code>false</code> |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
538 * otherwise |
10 | 539 */ |
540 public bool isCopyEnabled() { | |
541 return false; | |
542 } | |
543 | |
544 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
545 * Returns whether the given value is valid for this cell editor. This cell |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
546 * editor's validator (if any) makes the actual determination. |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
547 * |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
548 * @param value |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
549 * the value to check for |
10 | 550 * |
551 * @return <code>true</code> if the value is valid, and <code>false</code> | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
552 * if invalid |
10 | 553 */ |
554 protected bool isCorrect(Object value) { | |
555 errorMessage = null; | |
556 if (validator is null) { | |
557 return true; | |
558 } | |
559 | |
560 errorMessage = validator.isValid(value); | |
561 return (errorMessage is null || errorMessage.equals(""));//$NON-NLS-1$ | |
562 } | |
563 | |
564 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
565 * Returns <code>true</code> if this cell editor is able to perform the |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
566 * cut action. |
10 | 567 * <p> |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
568 * This default implementation always returns <code>false</code>. |
10 | 569 * </p> |
570 * <p> | |
571 * Subclasses may override | |
572 * </p> | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
573 * |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
574 * @return <code>true</code> if cut is possible, <code>false</code> |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
575 * otherwise |
10 | 576 */ |
577 public bool isCutEnabled() { | |
578 return false; | |
579 } | |
580 | |
581 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
582 * Returns <code>true</code> if this cell editor is able to perform the |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
583 * delete action. |
10 | 584 * <p> |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
585 * This default implementation always returns <code>false</code>. |
10 | 586 * </p> |
587 * <p> | |
588 * Subclasses may override | |
589 * </p> | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
590 * |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
591 * @return <code>true</code> if delete is possible, <code>false</code> |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
592 * otherwise |
10 | 593 */ |
594 public bool isDeleteEnabled() { | |
595 return false; | |
596 } | |
597 | |
598 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
599 * Returns whether the value of this cell editor has changed since the last |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
600 * call to <code>setValue</code>. |
10 | 601 * |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
602 * @return <code>true</code> if the value has changed, and |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
603 * <code>false</code> if unchanged |
10 | 604 */ |
605 public bool isDirty() { | |
606 return dirty; | |
607 } | |
608 | |
609 /** | |
610 * Marks this cell editor as dirty. | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
611 * |
10 | 612 * @since 2.1 |
613 */ | |
614 protected void markDirty() { | |
615 dirty = true; | |
616 } | |
617 | |
618 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
619 * Returns <code>true</code> if this cell editor is able to perform the |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
620 * find action. |
10 | 621 * <p> |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
622 * This default implementation always returns <code>false</code>. |
10 | 623 * </p> |
624 * <p> | |
625 * Subclasses may override | |
626 * </p> | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
627 * |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
628 * @return <code>true</code> if find is possible, <code>false</code> |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
629 * otherwise |
10 | 630 */ |
631 public bool isFindEnabled() { | |
632 return false; | |
633 } | |
634 | |
635 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
636 * Returns <code>true</code> if this cell editor is able to perform the |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
637 * paste action. |
10 | 638 * <p> |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
639 * This default implementation always returns <code>false</code>. |
10 | 640 * </p> |
641 * <p> | |
642 * Subclasses may override | |
643 * </p> | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
644 * |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
645 * @return <code>true</code> if paste is possible, <code>false</code> |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
646 * otherwise |
10 | 647 */ |
648 public bool isPasteEnabled() { | |
649 return false; | |
650 } | |
651 | |
652 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
653 * Returns <code>true</code> if this cell editor is able to perform the |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
654 * redo action. |
10 | 655 * <p> |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
656 * This default implementation always returns <code>false</code>. |
10 | 657 * </p> |
658 * <p> | |
659 * Subclasses may override | |
660 * </p> | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
661 * |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
662 * @return <code>true</code> if redo is possible, <code>false</code> |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
663 * otherwise |
10 | 664 */ |
665 public bool isRedoEnabled() { | |
666 return false; | |
667 } | |
668 | |
669 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
670 * Returns <code>true</code> if this cell editor is able to perform the |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
671 * select all action. |
10 | 672 * <p> |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
673 * This default implementation always returns <code>false</code>. |
10 | 674 * </p> |
675 * <p> | |
676 * Subclasses may override | |
677 * </p> | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
678 * |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
679 * @return <code>true</code> if select all is possible, <code>false</code> |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
680 * otherwise |
10 | 681 */ |
682 public bool isSelectAllEnabled() { | |
683 return false; | |
684 } | |
685 | |
686 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
687 * Returns <code>true</code> if this cell editor is able to perform the |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
688 * undo action. |
10 | 689 * <p> |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
690 * This default implementation always returns <code>false</code>. |
10 | 691 * </p> |
692 * <p> | |
693 * Subclasses may override | |
694 * </p> | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
695 * |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
696 * @return <code>true</code> if undo is possible, <code>false</code> |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
697 * otherwise |
10 | 698 */ |
699 public bool isUndoEnabled() { | |
700 return false; | |
701 } | |
702 | |
703 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
704 * Returns whether this cell editor has a valid value. The default value is |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
705 * false. |
10 | 706 * |
707 * @return <code>true</code> if the value is valid, and <code>false</code> | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
708 * if invalid |
10 | 709 * |
710 * @see #setValueValid(bool) | |
711 */ | |
712 public bool isValueValid() { | |
713 return valid; | |
714 } | |
715 | |
716 /** | |
717 * Processes a key release event that occurred in this cell editor. | |
718 * <p> | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
719 * The default implementation of this framework method cancels editing when |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
720 * the ESC key is pressed. When the RETURN key is pressed the current value |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
721 * is applied and the cell editor deactivates. Subclasses should call this |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
722 * method at appropriate times. Subclasses may also extend or reimplement. |
10 | 723 * </p> |
724 * | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
725 * @param keyEvent |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
726 * the key event |
10 | 727 */ |
728 protected void keyReleaseOccured(KeyEvent keyEvent) { | |
729 if (keyEvent.character is '\u001b') { // Escape character | |
730 fireCancelEditor(); | |
731 } else if (keyEvent.character is '\r') { // Return key | |
732 fireApplyEditorValue(); | |
733 deactivate(); | |
734 } | |
735 } | |
736 | |
737 /** | |
738 * Processes a focus lost event that occurred in this cell editor. | |
739 * <p> | |
740 * The default implementation of this framework method applies the current | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
741 * value and deactivates the cell editor. Subclasses should call this method |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
742 * at appropriate times. Subclasses may also extend or reimplement. |
10 | 743 * </p> |
744 */ | |
745 protected void focusLost() { | |
746 if (isActivated()) { | |
747 fireApplyEditorValue(); | |
748 deactivate(); | |
749 } | |
750 } | |
751 | |
752 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
753 * Performs the copy action. This default implementation does nothing. |
10 | 754 * <p> |
755 * Subclasses may override | |
756 * </p> | |
757 */ | |
758 public void performCopy() { | |
759 } | |
760 | |
761 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
762 * Performs the cut action. This default implementation does nothing. |
10 | 763 * <p> |
764 * Subclasses may override | |
765 * </p> | |
766 */ | |
767 public void performCut() { | |
768 } | |
769 | |
770 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
771 * Performs the delete action. This default implementation does nothing. |
10 | 772 * <p> |
773 * Subclasses may override | |
774 * </p> | |
775 */ | |
776 public void performDelete() { | |
777 } | |
778 | |
779 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
780 * Performs the find action. This default implementation does nothing. |
10 | 781 * <p> |
782 * Subclasses may override | |
783 * </p> | |
784 */ | |
785 public void performFind() { | |
786 } | |
787 | |
788 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
789 * Performs the paste action. This default implementation does nothing. |
10 | 790 * <p> |
791 * Subclasses may override | |
792 * </p> | |
793 */ | |
794 public void performPaste() { | |
795 } | |
796 | |
797 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
798 * Performs the redo action. This default implementation does nothing. |
10 | 799 * <p> |
800 * Subclasses may override | |
801 * </p> | |
802 */ | |
803 public void performRedo() { | |
804 } | |
805 | |
806 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
807 * Performs the select all action. This default implementation does nothing. |
10 | 808 * <p> |
809 * Subclasses may override | |
810 * </p> | |
811 */ | |
812 public void performSelectAll() { | |
813 } | |
814 | |
815 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
816 * Performs the undo action. This default implementation does nothing. |
10 | 817 * <p> |
818 * Subclasses may override | |
819 * </p> | |
820 */ | |
821 public void performUndo() { | |
822 } | |
823 | |
824 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
825 * Removes the given listener from this cell editor. Has no affect if an |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
826 * identical listener is not registered. |
10 | 827 * |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
828 * @param listener |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
829 * a cell editor listener |
10 | 830 */ |
831 public void removeListener(ICellEditorListener listener) { | |
832 listeners.remove(cast(Object)listener); | |
833 } | |
834 | |
835 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
836 * Removes the given property change listener from this cell editor. Has no |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
837 * affect if an identical property change listener is not registered. |
10 | 838 * |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
839 * @param listener |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
840 * a property change listener |
10 | 841 */ |
842 public void removePropertyChangeListener(IPropertyChangeListener listener) { | |
843 propertyChangeListeners.remove(cast(Object)listener); | |
844 } | |
845 | |
846 /** | |
847 * Sets or clears the current error message for this cell editor. | |
848 * <p> | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
849 * No formatting is done here, the message to be set is expected to be fully |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
850 * formatted before being passed in. |
10 | 851 * </p> |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
852 * |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
853 * @param message |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
854 * the error message, or <code>null</code> to clear |
10 | 855 */ |
856 protected void setErrorMessage(String message) { | |
857 errorMessage = message; | |
858 } | |
859 | |
860 /** | |
861 * Sets the focus to the cell editor's control. | |
862 */ | |
863 public void setFocus() { | |
864 doSetFocus(); | |
865 } | |
866 | |
867 /** | |
868 * Sets the input validator for this cell editor. | |
869 * | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
870 * @param validator |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
871 * the input validator, or <code>null</code> if none |
10 | 872 */ |
873 public void setValidator(ICellEditorValidator validator) { | |
874 this.validator = validator; | |
875 } | |
876 | |
877 /** | |
878 * Sets this cell editor's value. | |
879 * | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
880 * @param value |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
881 * the value of this cell editor |
10 | 882 */ |
883 public final void setValue(Object value) { | |
884 valid = isCorrect(value); | |
885 dirty = false; | |
886 doSetValue(value); | |
887 } | |
888 | |
889 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
890 * Sets the valid state of this cell editor. The default value is false. |
10 | 891 * Subclasses should call this method on construction. |
892 * | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
893 * @param valid |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
894 * <code>true</code> if the current value is valid, and |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
895 * <code>false</code> if invalid |
10 | 896 * |
897 * @see #isValueValid | |
898 */ | |
899 protected void setValueValid(bool valid) { | |
900 this.valid = valid; | |
901 } | |
902 | |
903 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
904 * The value has changed. Updates the valid state flag, marks this cell |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
905 * editor as dirty, and notifies all registered cell editor listeners of a |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
906 * value change. |
10 | 907 * |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
908 * @param oldValidState |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
909 * the valid state before the end user changed the value |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
910 * @param newValidState |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
911 * the current valid state |
10 | 912 * @see ICellEditorListener#editorValueChanged |
913 */ | |
914 protected void valueChanged(bool oldValidState, bool newValidState) { | |
915 valid = newValidState; | |
916 dirty = true; | |
917 fireEditorValueChanged(oldValidState, newValidState); | |
918 } | |
919 | |
920 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
921 * Activate the editor but also inform the editor which event triggered its |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
922 * activation. <b>The default implementation simply calls |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
923 * {@link #activate()}</b> |
10 | 924 * |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
925 * @param activationEvent |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
926 * the editor activation event |
10 | 927 * @since 3.3 |
928 */ | |
929 public void activate(ColumnViewerEditorActivationEvent activationEvent) { | |
930 activate(); | |
931 } | |
932 | |
933 /** | |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
934 * The default implementation of this method returns true. Subclasses that |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
935 * hook their own focus listener should override this method and return |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
936 * false. See also bug 58777. |
10 | 937 * |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
938 * @return <code>true</code> to indicate that a focus listener has to be |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
939 * attached |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
940 * @since 3.4 |
10 | 941 */ |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
942 protected bool dependsOnExternalFocusListener() { |
10 | 943 return true; |
944 } | |
72
5df4896124c7
JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents:
71
diff
changeset
|
945 package bool dependsOnExternalFocusListener_package() { |
5df4896124c7
JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents:
71
diff
changeset
|
946 return dependsOnExternalFocusListener(); |
5df4896124c7
JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents:
71
diff
changeset
|
947 } |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
948 |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
949 /** |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
950 * @param event |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
951 * deactivation event |
90 | 952 * @since 3.4 |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
953 * |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
954 */ |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
955 protected void deactivate(ColumnViewerEditorDeactivationEvent event) { |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
956 deactivate(); |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
957 } |
72
5df4896124c7
JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents:
71
diff
changeset
|
958 package void deactivate_package(ColumnViewerEditorDeactivationEvent event) { |
5df4896124c7
JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents:
71
diff
changeset
|
959 deactivate(event); |
5df4896124c7
JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents:
71
diff
changeset
|
960 } |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
961 |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
962 /** |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
963 * Returns the duration, in milliseconds, between the mouse button click |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
964 * that activates the cell editor and a subsequent mouse button click that |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
965 * will be considered a <em>double click</em> on the underlying control. |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
966 * Clients may override, in particular, clients can return 0 to denote that |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
967 * two subsequent mouse clicks in a cell should not be interpreted as a |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
968 * double click. |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
969 * |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
970 * @return the timeout or <code>0</code> |
90 | 971 * @since 3.4 |
70
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
972 */ |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
973 protected int getDoubleClickTimeout() { |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
974 return Display.getCurrent().getDoubleClickTime(); |
46a6e0e6ccd4
Merge with d-fied sources of 3.4M7
Frank Benoit <benoit@tionex.de>
parents:
69
diff
changeset
|
975 } |
72
5df4896124c7
JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents:
71
diff
changeset
|
976 package int getDoubleClickTimeout_package() { |
5df4896124c7
JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents:
71
diff
changeset
|
977 return getDoubleClickTimeout(); |
5df4896124c7
JFace and its examples do compile
Frank Benoit <benoit@tionex.de>
parents:
71
diff
changeset
|
978 } |
10 | 979 } |