annotate org.eclipse.jface.examples.databinding/src/org/eclipse/jface/examples/databinding/snippets/Snippet021MultiFieldValidation.d @ 90:6086085e153d

Added databinding snippets. unmodified java sources.
author Frank Benoit <benoit@tionex.de>
date Sun, 19 Apr 2009 11:33:55 +0200
parents
children 5d5bd660917f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 /*******************************************************************************
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2 * Copyright (c) 2008 Matthew Hall and others.
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * Matthew Hall - initial API and implementation (bug 218269)
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 * Matthew Hall - bug 260329
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 ******************************************************************************/
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 package org.eclipse.jface.examples.databinding.snippets;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15 import java.util.ArrayList;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16 import java.util.Iterator;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 import org.eclipse.core.databinding.DataBindingContext;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 import org.eclipse.core.databinding.observable.Realm;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 import org.eclipse.core.databinding.observable.list.IObservableList;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 import org.eclipse.core.databinding.observable.list.WritableList;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 import org.eclipse.core.databinding.observable.value.IObservableValue;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 import org.eclipse.core.databinding.observable.value.WritableValue;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 import org.eclipse.core.databinding.validation.MultiValidator;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 import org.eclipse.core.databinding.validation.ValidationStatus;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 import org.eclipse.core.runtime.IStatus;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 import org.eclipse.jface.databinding.swt.SWTObservables;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 import org.eclipse.jface.databinding.wizard.WizardPageSupport;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 import org.eclipse.jface.dialogs.IInputValidator;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 import org.eclipse.jface.dialogs.InputDialog;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 import org.eclipse.jface.viewers.IStructuredSelection;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 import org.eclipse.jface.viewers.ListViewer;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 import org.eclipse.jface.window.Window;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 import org.eclipse.jface.wizard.IWizard;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 import org.eclipse.jface.wizard.Wizard;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 import org.eclipse.jface.wizard.WizardDialog;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 import org.eclipse.jface.wizard.WizardPage;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 import org.eclipse.swt.SWT;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 import org.eclipse.swt.events.SelectionAdapter;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 import org.eclipse.swt.events.SelectionEvent;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 import org.eclipse.swt.layout.GridData;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 import org.eclipse.swt.layout.GridLayout;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 import org.eclipse.swt.widgets.Button;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 import org.eclipse.swt.widgets.Composite;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 import org.eclipse.swt.widgets.Display;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 import org.eclipse.swt.widgets.Group;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 import org.eclipse.swt.widgets.Label;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 import org.eclipse.swt.widgets.List;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 import org.eclipse.swt.widgets.Text;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 /**
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 * @since 3.2
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 *
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55 */
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 public class Snippet021MultiFieldValidation extends WizardPage {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 private List list_1;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 private List list;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 private Button addAddendButton;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 private Button removeAddendButton;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 private Text sumModelValue;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 private Text field2ModelValue;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 private Text field1ModelValue;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 private Text sumTarget;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 private Text field2Target;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 private Text field1Target;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 private ListViewer addendsTarget;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 private ListViewer addendsModelValue;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 /**
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 * Create the wizard
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 */
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 public Snippet021MultiFieldValidation() {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 super("snippet021");
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 setTitle("Snippet 021 - Multi-field Validators");
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 setDescription("Enter values which satisfy the cross-field constraints");
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 }
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 /**
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 * Create contents of the wizard
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 *
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 * @param parent
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 */
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 public void createControl(Composite parent) {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 Composite container = new Composite(parent, SWT.NULL);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87 final GridLayout gridLayout = new GridLayout();
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 gridLayout.numColumns = 2;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 container.setLayout(gridLayout);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 //
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 setControl(container);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
93 final Group bothEvenOrGroup = new Group(container, SWT.NONE);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 bothEvenOrGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false,
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 false));
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 bothEvenOrGroup.setText("Numbers must be both even or both odd");
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 final GridLayout gridLayout_1 = new GridLayout();
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 gridLayout_1.numColumns = 3;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 bothEvenOrGroup.setLayout(gridLayout_1);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 new Label(bothEvenOrGroup, SWT.NONE);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 final Label targetLabel = new Label(bothEvenOrGroup, SWT.NONE);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103 targetLabel.setText("Target");
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105 final Label modelLabel = new Label(bothEvenOrGroup, SWT.NONE);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106 modelLabel.setText("Model");
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108 final Label field1Label = new Label(bothEvenOrGroup, SWT.NONE);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 field1Label.setText("Field 1");
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 field1Target = new Text(bothEvenOrGroup, SWT.BORDER);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 final GridData gd_field1Target = new GridData(SWT.FILL, SWT.CENTER,
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 true, false);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 field1Target.setLayoutData(gd_field1Target);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 field1ModelValue = new Text(bothEvenOrGroup, SWT.READ_ONLY | SWT.BORDER);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 final GridData gd_field1ModelValue = new GridData(SWT.FILL, SWT.CENTER,
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 true, false);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 field1ModelValue.setLayoutData(gd_field1ModelValue);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 final Label field2Label = new Label(bothEvenOrGroup, SWT.NONE);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 field2Label.setText("Field 2");
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 field2Target = new Text(bothEvenOrGroup, SWT.BORDER);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125 final GridData gd_field2Target = new GridData(SWT.FILL, SWT.CENTER,
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 true, false);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 field2Target.setLayoutData(gd_field2Target);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 field2ModelValue = new Text(bothEvenOrGroup, SWT.READ_ONLY | SWT.BORDER);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 final GridData gd_field2ModelValue = new GridData(SWT.FILL, SWT.CENTER,
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 true, false);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 field2ModelValue.setLayoutData(gd_field2ModelValue);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 final Group sumOfAllGroup = new Group(container, SWT.NONE);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 sumOfAllGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false,
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 true));
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 sumOfAllGroup.setText("Addends must add up to sum");
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138 final GridLayout gridLayout_2 = new GridLayout();
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 gridLayout_2.numColumns = 3;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 sumOfAllGroup.setLayout(gridLayout_2);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 new Label(sumOfAllGroup, SWT.NONE);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143 final Label targetLabel_1 = new Label(sumOfAllGroup, SWT.NONE);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 targetLabel_1.setText("Target");
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 final Label modelLabel_1 = new Label(sumOfAllGroup, SWT.NONE);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147 modelLabel_1.setText("Model");
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
148
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
149 final Label expectedSumLabel = new Label(sumOfAllGroup, SWT.NONE);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
150 expectedSumLabel.setText("Sum");
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
151
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152 sumTarget = new Text(sumOfAllGroup, SWT.BORDER);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
153 final GridData gd_sumTarget = new GridData(SWT.FILL, SWT.CENTER, true,
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154 false);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
155 sumTarget.setLayoutData(gd_sumTarget);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
156
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
157 sumModelValue = new Text(sumOfAllGroup, SWT.READ_ONLY | SWT.BORDER);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
158 final GridData gd_sumModelValue = new GridData(SWT.FILL, SWT.CENTER,
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
159 true, false);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
160 sumModelValue.setLayoutData(gd_sumModelValue);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
161
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
162 final Label addendsLabel = new Label(sumOfAllGroup, SWT.NONE);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
163 addendsLabel.setText("Addends");
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
164
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165 addendsTarget = new ListViewer(sumOfAllGroup, SWT.V_SCROLL | SWT.BORDER);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 list_1 = addendsTarget.getList();
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167 list_1
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168 .setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, true, 1,
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169 2));
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
170
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
171 addendsModelValue = new ListViewer(sumOfAllGroup, SWT.V_SCROLL
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
172 | SWT.BORDER);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
173 list = addendsModelValue.getList();
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 list.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, true, 1, 2));
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
175
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
176 final Composite composite = new Composite(sumOfAllGroup, SWT.NONE);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177 composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178 final GridLayout gridLayout_3 = new GridLayout();
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 gridLayout_3.marginWidth = 0;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 gridLayout_3.marginHeight = 0;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 composite.setLayout(gridLayout_3);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 addAddendButton = new Button(composite, SWT.NONE);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184 addAddendButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false,
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185 false));
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 addAddendButton.setText("Add");
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188 removeAddendButton = new Button(composite, SWT.NONE);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 removeAddendButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER,
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190 false, false));
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191 removeAddendButton.setText("Remove");
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193 bindUI();
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194 }
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196 private void bindUI() {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197 DataBindingContext dbc = new DataBindingContext();
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
198
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199 bindEvensAndOddsGroup(dbc);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
200 bindSumAndAddendsGroup(dbc);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
201
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202 WizardPageSupport.create(this, dbc);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
203 }
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205 private void bindEvensAndOddsGroup(DataBindingContext dbc) {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 IObservableValue targetField1 = SWTObservables.observeText(
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 field1Target, SWT.Modify);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 final IObservableValue middleField1 = new WritableValue(null,
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209 Integer.TYPE);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
210 dbc.bindValue(targetField1, middleField1);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212 IObservableValue targetField2 = SWTObservables.observeText(
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213 field2Target, SWT.Modify);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
214 final IObservableValue middleField2 = new WritableValue(null,
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215 Integer.TYPE);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 dbc.bindValue(targetField2, middleField2);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
218 MultiValidator validator = new MultiValidator() {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219 protected IStatus validate() {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
220 Integer field1 = (Integer) middleField1.getValue();
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
221 Integer field2 = (Integer) middleField2.getValue();
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
222 if (Math.abs(field1.intValue()) % 2 != Math.abs(field2
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
223 .intValue()) % 2)
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
224 return ValidationStatus
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
225 .error("Fields 1 and 2 must be both even or both odd");
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
226 return null;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
227 }
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
228 };
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
229 dbc.addValidationStatusProvider(validator);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
230
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
231 IObservableValue modelField1 = new WritableValue(new Integer(1),
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
232 Integer.TYPE);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
233 IObservableValue modelField2 = new WritableValue(new Integer(4),
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
234 Integer.TYPE);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
235 dbc.bindValue(validator.observeValidatedValue(middleField1),
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
236 modelField1);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
237 dbc.bindValue(validator.observeValidatedValue(middleField2),
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
238 modelField2);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
239
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
240 dbc.bindValue(SWTObservables.observeText(field1ModelValue, SWT.Modify),
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
241 modelField1);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
242 dbc.bindValue(SWTObservables.observeText(field2ModelValue, SWT.Modify),
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
243 modelField2);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
244 }
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
245
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
246 private void bindSumAndAddendsGroup(DataBindingContext dbc) {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
247 IObservableValue targetSum = SWTObservables.observeText(sumTarget,
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
248 SWT.Modify);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
249 final IObservableValue middleSum = new WritableValue(null, Integer.TYPE);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
250 dbc.bindValue(targetSum, middleSum);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
251
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
252 final IObservableList targetAddends = new WritableList(new ArrayList(),
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
253 Integer.TYPE);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
254 addendsTarget.setContentProvider(new ObservableListContentProvider());
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
255 addendsTarget.setInput(targetAddends);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
256
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
257 addAddendButton.addSelectionListener(new SelectionAdapter() {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
258 public void widgetSelected(final SelectionEvent e) {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
259 InputDialog dialog = new InputDialog(getShell(),
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
260 "Input addend", "Enter an integer addend", "0",
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
261 new IInputValidator() {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
262 public String isValid(String newText) {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
263 try {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
264 Integer.valueOf(newText);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
265 return null;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
266 } catch (NumberFormatException e) {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
267 return "Enter a number between "
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
268 + Integer.MIN_VALUE + " and "
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
269 + Integer.MAX_VALUE;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
270 }
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
271 }
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
272 });
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
273 if (dialog.open() == Window.OK) {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
274 targetAddends.add(Integer.valueOf(dialog.getValue()));
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
275 }
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
276 }
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
277 });
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
278
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
279 removeAddendButton.addSelectionListener(new SelectionAdapter() {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
280 public void widgetSelected(SelectionEvent e) {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
281 IStructuredSelection selection = (IStructuredSelection) addendsTarget
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
282 .getSelection();
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
283 if (!selection.isEmpty())
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
284 targetAddends.remove(selection.getFirstElement());
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
285 }
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
286 });
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
287
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
288 IObservableValue modelSum = new WritableValue(new Integer(5),
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
289 Integer.TYPE);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
290 dbc.bindValue(SWTObservables.observeText(sumModelValue, SWT.Modify),
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
291 modelSum);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
292
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
293 IObservableList modelAddends = new WritableList(new ArrayList(),
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
294 Integer.TYPE);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
295
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
296 MultiValidator validator = new MultiValidator() {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
297 protected IStatus validate() {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
298 Integer sum = (Integer) middleSum.getValue();
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
299 int actualSum = 0;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
300 for (Iterator iterator = targetAddends.iterator(); iterator
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
301 .hasNext();) {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
302 actualSum += ((Integer) iterator.next()).intValue();
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
303 }
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
304 if (sum.intValue() != actualSum)
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
305 return ValidationStatus.error("Sum of addends is "
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
306 + actualSum + ", expecting " + sum);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
307 return ValidationStatus.ok();
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
308 }
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
309 };
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
310 dbc.addValidationStatusProvider(validator);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
311
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
312 addendsModelValue
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
313 .setContentProvider(new ObservableListContentProvider());
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
314 addendsModelValue.setInput(modelAddends);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
315
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
316 dbc.bindValue(validator.observeValidatedValue(middleSum), modelSum);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
317 dbc.bindList(validator.observeValidatedList(targetAddends),
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
318 modelAddends);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
319 }
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
320
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
321 static class MultiFieldValidationWizard extends Wizard {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
322 public void addPages() {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
323 addPage(new Snippet021MultiFieldValidation());
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
324 }
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
325
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
326 public String getWindowTitle() {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
327 return "Snippet 021 - Multi-field Validation";
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
328 }
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
329
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
330 public boolean performFinish() {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
331 return true;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
332 }
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
333 }
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
334
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
335 public static void main(String[] args) {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
336 Display display = new Display();
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
337
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
338 Realm.runWithDefault(SWTObservables.getRealm(display), new Runnable() {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
339 public void run() {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
340 IWizard wizard = new MultiFieldValidationWizard();
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
341 WizardDialog dialog = new WizardDialog(null, wizard);
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
342 dialog.open();
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
343
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
344 // The SWT event loop
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
345 Display display = Display.getCurrent();
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
346 while (dialog.getShell() != null
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
347 && !dialog.getShell().isDisposed()) {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
348 if (!display.readAndDispatch()) {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
349 display.sleep();
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
350 }
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
351 }
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
352 }
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
353 });
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
354
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
355 display.dispose();
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
356 }
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
357 }