Lines 12-18
Link Here
|
12 |
package org.eclipse.jface.examples.databinding.snippets; |
12 |
package org.eclipse.jface.examples.databinding.snippets; |
13 |
|
13 |
|
14 |
import java.util.ArrayList; |
14 |
import java.util.ArrayList; |
15 |
import java.util.Iterator; |
|
|
16 |
|
15 |
|
17 |
import org.eclipse.core.databinding.DataBindingContext; |
16 |
import org.eclipse.core.databinding.DataBindingContext; |
18 |
import org.eclipse.core.databinding.observable.Realm; |
17 |
import org.eclipse.core.databinding.observable.Realm; |
Lines 36-51
Link Here
|
36 |
import org.eclipse.jface.wizard.WizardDialog; |
35 |
import org.eclipse.jface.wizard.WizardDialog; |
37 |
import org.eclipse.jface.wizard.WizardPage; |
36 |
import org.eclipse.jface.wizard.WizardPage; |
38 |
import org.eclipse.swt.SWT; |
37 |
import org.eclipse.swt.SWT; |
39 |
import org.eclipse.swt.events.SelectionAdapter; |
|
|
40 |
import org.eclipse.swt.events.SelectionEvent; |
41 |
import org.eclipse.swt.layout.GridData; |
38 |
import org.eclipse.swt.layout.GridData; |
42 |
import org.eclipse.swt.layout.GridLayout; |
39 |
import org.eclipse.swt.layout.GridLayout; |
43 |
import org.eclipse.swt.widgets.Button; |
40 |
import org.eclipse.swt.widgets.Button; |
44 |
import org.eclipse.swt.widgets.Composite; |
41 |
import org.eclipse.swt.widgets.Composite; |
45 |
import org.eclipse.swt.widgets.Display; |
42 |
import org.eclipse.swt.widgets.Display; |
|
|
43 |
import org.eclipse.swt.widgets.Event; |
46 |
import org.eclipse.swt.widgets.Group; |
44 |
import org.eclipse.swt.widgets.Group; |
47 |
import org.eclipse.swt.widgets.Label; |
45 |
import org.eclipse.swt.widgets.Label; |
48 |
import org.eclipse.swt.widgets.List; |
46 |
import org.eclipse.swt.widgets.List; |
|
|
47 |
import org.eclipse.swt.widgets.Listener; |
49 |
import org.eclipse.swt.widgets.Text; |
48 |
import org.eclipse.swt.widgets.Text; |
50 |
|
49 |
|
51 |
/** |
50 |
/** |
Lines 82-88
Link Here
|
82 |
* @param parent |
81 |
* @param parent |
83 |
*/ |
82 |
*/ |
84 |
public void createControl(Composite parent) { |
83 |
public void createControl(Composite parent) { |
85 |
Composite container = new Composite(parent, SWT.NULL); |
84 |
Composite container = new Composite(parent, SWT.NONE); |
86 |
final GridLayout gridLayout = new GridLayout(); |
85 |
final GridLayout gridLayout = new GridLayout(); |
87 |
gridLayout.numColumns = 2; |
86 |
gridLayout.numColumns = 2; |
88 |
container.setLayout(gridLayout); |
87 |
container.setLayout(gridLayout); |
Lines 202-220
Link Here
|
202 |
} |
201 |
} |
203 |
|
202 |
|
204 |
private void bindEvensAndOddsGroup(DataBindingContext dbc) { |
203 |
private void bindEvensAndOddsGroup(DataBindingContext dbc) { |
205 |
IObservableValue targetField1 = SWTObservables.observeText( |
|
|
206 |
field1Target, SWT.Modify); |
207 |
final IObservableValue middleField1 = new WritableValue(null, |
204 |
final IObservableValue middleField1 = new WritableValue(null, |
208 |
Integer.TYPE); |
205 |
Integer.TYPE); |
209 |
dbc.bindValue(targetField1, middleField1, null, null); |
206 |
dbc.bindValue(SWTObservables.observeText(field1Target, SWT.Modify), |
|
|
207 |
middleField1, null, null); |
210 |
|
208 |
|
211 |
IObservableValue targetField2 = SWTObservables.observeText( |
|
|
212 |
field2Target, SWT.Modify); |
213 |
final IObservableValue middleField2 = new WritableValue(null, |
209 |
final IObservableValue middleField2 = new WritableValue(null, |
214 |
Integer.TYPE); |
210 |
Integer.TYPE); |
215 |
dbc.bindValue(targetField2, middleField2, null, null); |
211 |
dbc.bindValue(SWTObservables.observeText(field2Target, SWT.Modify), |
|
|
212 |
middleField2, null, null); |
216 |
|
213 |
|
217 |
MultiValidator validator = new MultiValidator() { |
214 |
MultiValidator validator = new MultiValidator() { |
|
|
215 |
|
218 |
protected IStatus validate() { |
216 |
protected IStatus validate() { |
219 |
Integer field1 = (Integer) middleField1.getValue(); |
217 |
Integer field1 = (Integer) middleField1.getValue(); |
220 |
Integer field2 = (Integer) middleField2.getValue(); |
218 |
Integer field2 = (Integer) middleField2.getValue(); |
Lines 236-260
Link Here
|
236 |
dbc.bindValue(validator.observeValidatedValue(middleField2), |
234 |
dbc.bindValue(validator.observeValidatedValue(middleField2), |
237 |
modelField2, null, null); |
235 |
modelField2, null, null); |
238 |
|
236 |
|
239 |
dbc.bindValue(SWTObservables.observeText(field1ModelValue, SWT.Modify), |
237 |
dbc.bindValue(SWTObservables.observeText(field1ModelValue, SWT.None), |
240 |
modelField1, null, null); |
238 |
modelField1, null, null); |
241 |
dbc.bindValue(SWTObservables.observeText(field2ModelValue, SWT.Modify), |
239 |
dbc.bindValue(SWTObservables.observeText(field2ModelValue, SWT.None), |
242 |
modelField2, null, null); |
240 |
modelField2, null, null); |
243 |
} |
241 |
} |
244 |
|
242 |
|
245 |
private void bindSumAndAddendsGroup(DataBindingContext dbc) { |
243 |
private void bindSumAndAddendsGroup(DataBindingContext dbc) { |
246 |
IObservableValue targetSum = SWTObservables.observeText(sumTarget, |
|
|
247 |
SWT.Modify); |
248 |
final IObservableValue middleSum = new WritableValue(null, Integer.TYPE); |
244 |
final IObservableValue middleSum = new WritableValue(null, Integer.TYPE); |
249 |
dbc.bindValue(targetSum, middleSum, null, null); |
245 |
dbc.bindValue(SWTObservables.observeText(sumTarget, SWT.Modify), |
|
|
246 |
middleSum, null, null); |
250 |
|
247 |
|
251 |
final IObservableList targetAddends = new WritableList(new ArrayList(), |
248 |
final IObservableList targetAddends = new WritableList(new ArrayList(), |
252 |
Integer.TYPE); |
249 |
Integer.TYPE); |
253 |
addendsTarget.setContentProvider(new ObservableListContentProvider()); |
250 |
addendsTarget.setContentProvider(new ObservableListContentProvider()); |
254 |
addendsTarget.setInput(targetAddends); |
251 |
addendsTarget.setInput(targetAddends); |
255 |
|
252 |
|
256 |
addAddendButton.addSelectionListener(new SelectionAdapter() { |
253 |
addAddendButton.addListener(SWT.Selection, new Listener() { |
257 |
public void widgetSelected(final SelectionEvent e) { |
254 |
public void handleEvent(Event event) { |
258 |
InputDialog dialog = new InputDialog(getShell(), |
255 |
InputDialog dialog = new InputDialog(getShell(), |
259 |
"Input addend", "Enter an integer addend", "0", |
256 |
"Input addend", "Enter an integer addend", "0", |
260 |
new IInputValidator() { |
257 |
new IInputValidator() { |
Lines 275-282
Link Here
|
275 |
} |
272 |
} |
276 |
}); |
273 |
}); |
277 |
|
274 |
|
278 |
removeAddendButton.addSelectionListener(new SelectionAdapter() { |
275 |
removeAddendButton.addListener(SWT.Selection, new Listener() { |
279 |
public void widgetSelected(SelectionEvent e) { |
276 |
public void handleEvent(Event event) { |
280 |
IStructuredSelection selection = (IStructuredSelection) addendsTarget |
277 |
IStructuredSelection selection = (IStructuredSelection) addendsTarget |
281 |
.getSelection(); |
278 |
.getSelection(); |
282 |
if (!selection.isEmpty()) |
279 |
if (!selection.isEmpty()) |
Lines 286-309
Link Here
|
286 |
|
283 |
|
287 |
IObservableValue modelSum = new WritableValue(new Integer(5), |
284 |
IObservableValue modelSum = new WritableValue(new Integer(5), |
288 |
Integer.TYPE); |
285 |
Integer.TYPE); |
289 |
dbc.bindValue(SWTObservables.observeText(sumModelValue, SWT.Modify), |
286 |
dbc.bindValue(SWTObservables.observeText(sumModelValue, SWT.None), |
290 |
modelSum, null, null); |
287 |
modelSum, null, null); |
291 |
|
288 |
|
292 |
IObservableList modelAddends = new WritableList(new ArrayList(), |
289 |
IObservableList modelAddends = new WritableList(new ArrayList(), |
293 |
Integer.TYPE); |
290 |
Integer.TYPE); |
294 |
|
291 |
|
295 |
MultiValidator validator = new MultiValidator() { |
292 |
MultiValidator validator = new MultiValidator() { |
296 |
protected IStatus validate() { |
293 |
protected void validate(final StatusHandler callback) { |
297 |
Integer sum = (Integer) middleSum.getValue(); |
294 |
final Integer sum = (Integer) middleSum.getValue(); |
298 |
int actualSum = 0; |
295 |
final Integer[] addends = (Integer[]) targetAddends |
299 |
for (Iterator iterator = targetAddends.iterator(); iterator |
296 |
.toArray(new Integer[targetAddends.size()]); |
300 |
.hasNext();) { |
297 |
new Thread(new Runnable() { |
301 |
actualSum += ((Integer) iterator.next()).intValue(); |
298 |
public void run() { |
302 |
} |
299 |
try { |
303 |
if (sum.intValue() != actualSum) |
300 |
// artificial delay |
304 |
return ValidationStatus.error("Sum of addends is " |
301 |
Thread.sleep(1000); |
305 |
+ actualSum + ", expecting " + sum); |
302 |
} catch (InterruptedException e) { |
306 |
return ValidationStatus.ok(); |
303 |
callback.handleStatus(ValidationStatus.error(e |
|
|
304 |
.getMessage(), e)); |
305 |
} |
306 |
|
307 |
if (sum == null) { |
308 |
callback.handleStatus(ValidationStatus |
309 |
.error("sum is null")); |
310 |
return; |
311 |
} |
312 |
|
313 |
int actualSum = 0; |
314 |
for (int i = 0; i < addends.length; i++) { |
315 |
actualSum += addends[i].intValue(); |
316 |
} |
317 |
|
318 |
if (sum.intValue() != actualSum) { |
319 |
callback.handleStatus(ValidationStatus |
320 |
.error("Sum of addends is " + actualSum |
321 |
+ ", expecting " + sum)); |
322 |
} else { |
323 |
callback.handleStatus(ValidationStatus.ok()); |
324 |
} |
325 |
} |
326 |
}).start(); |
307 |
} |
327 |
} |
308 |
}; |
328 |
}; |
309 |
dbc.addValidationStatusProvider(validator); |
329 |
dbc.addValidationStatusProvider(validator); |