annotate org.eclipse.jface.examples.databinding/src/org/eclipse/jface/examples/databinding/snippets/Snippet027ExternalValidator.d @ 99:5d5bd660917f

build some databind snippets
author Frank Benoit <benoit@tionex.de>
date Wed, 22 Apr 2009 18:59:26 +0200
parents 6086085e153d
children e884642ad36e
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, 2009 Code 9 Corporation 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 * Chris Aniszczyk <zx@code9.com> - initial API and implementation
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 * Boris Bokowski, IBM - minor changes
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
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
13 module org.eclipse.jface.examples.databinding.snippets.Snippet027ExternalValidator;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
14
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
15 import java.lang.all;
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17 import java.beans.PropertyChangeListener;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 import java.beans.PropertyChangeSupport;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 import org.eclipse.core.databinding.DataBindingContext;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 import org.eclipse.core.databinding.beans.BeansObservables;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 import org.eclipse.core.databinding.observable.Realm;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 import org.eclipse.core.databinding.observable.value.IObservableValue;
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.core.runtime.Status;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 import org.eclipse.jface.databinding.swt.SWTObservables;
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.wizard.IWizard;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 import org.eclipse.jface.wizard.Wizard;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 import org.eclipse.jface.wizard.WizardDialog;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 import org.eclipse.jface.wizard.WizardPage;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 import org.eclipse.swt.SWT;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 import org.eclipse.swt.layout.GridData;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 import org.eclipse.swt.layout.GridLayout;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 import org.eclipse.swt.widgets.Composite;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 import org.eclipse.swt.widgets.Display;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 import org.eclipse.swt.widgets.Label;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 import org.eclipse.swt.widgets.Text;
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 /**
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 * This snippet demonstrates how to integrate an external validator
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 *
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 * @since 3.5
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 */
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 public class Snippet027ExternalValidator extends WizardPage {
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
49 private Text nameValue;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
50 private Text emailValue;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
51 private Text phoneNumberValue;
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
53 private Contact contact;
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
55 // Minimal JavaBeans support
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
56 public static abstract class AbstractModelObject {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
57 private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
58 this);
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
60 public void addPropertyChangeListener(PropertyChangeListener listener) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
61 propertyChangeSupport.addPropertyChangeListener(listener);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
62 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
64 public void addPropertyChangeListener(String propertyName,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
65 PropertyChangeListener listener) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
66 propertyChangeSupport.addPropertyChangeListener(propertyName,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
67 listener);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
68 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
70 public void removePropertyChangeListener(PropertyChangeListener listener) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
71 propertyChangeSupport.removePropertyChangeListener(listener);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
72 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
74 public void removePropertyChangeListener(String propertyName,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
75 PropertyChangeListener listener) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
76 propertyChangeSupport.removePropertyChangeListener(propertyName,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
77 listener);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
78 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
80 protected void firePropertyChange(String propertyName, Object oldValue,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
81 Object newValue) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
82 propertyChangeSupport.firePropertyChange(propertyName, oldValue,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
83 newValue);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
84 }
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
85 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
87 static class Contact extends AbstractModelObject {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
88 String name;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
89 String email;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
90 String phoneNumber;
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
92 public Contact(String name, String email, String number) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
93 this.name = name;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
94 this.email = email;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
95 this.phoneNumber = number;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
96 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
98 public String getName() {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
99 return name;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
100 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
102 public void setName(String name) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
103 String oldValue = this.name;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
104 this.name = name;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
105 firePropertyChange("name", oldValue, name);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
106 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
108 public String getEmail() {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
109 return email;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
110 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
112 public void setEmail(String email) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
113 String oldValue = this.email;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
114 this.email = email;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
115 firePropertyChange("email", oldValue, email);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
116 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
118 public String getPhoneNumber() {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
119 return phoneNumber;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
120 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
122 public void setPhoneNumber(String number) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
123 String oldValue = this.phoneNumber;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
124 this.phoneNumber = number;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
125 firePropertyChange("phoneNumber", oldValue, number);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
126 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
128 public IStatus validate() {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
129 if (name.indexOf(' ') == -1) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
130 return ValidationStatus
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
131 .error("Please enter both first and last name separated by a space.");
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
132 }
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
133 if (email.indexOf('@') == -1) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
134 return ValidationStatus
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
135 .error("Please enter a valid email address containing '@'.");
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
136 }
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
137 if (!phoneNumber.startsWith("+")) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
138 return ValidationStatus
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
139 .error("Please enter the phone number in international format starting with '+'.");
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
140 }
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
141 return Status.OK_STATUS;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
142 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
144 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
146 /**
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
147 * Create the wizard
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
148 */
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
149 public Snippet027ExternalValidator() {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
150 super("snippet024");
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
151 setTitle("Snippet 024 - External Validation");
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
152 setDescription("Please enter contact details.");
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
153 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
155 /**
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
156 * Create contents of the wizard
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
157 *
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
158 * @param parent
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
159 */
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
160 public void createControl(Composite parent) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
161 Composite container = new Composite(parent, SWT.NULL);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
162 final GridLayout gridLayout = new GridLayout();
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
163 gridLayout.numColumns = 2;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
164 container.setLayout(gridLayout);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
165 setControl(container);
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
167 final Label nameLabel = new Label(container, SWT.NONE);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
168 nameLabel.setText("Name");
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
170 nameValue = new Text(container, SWT.BORDER);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
171 final GridData gd = new GridData(SWT.FILL, SWT.CENTER, true, false);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
172 nameValue.setLayoutData(gd);
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
173
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
174 final Label emailLabel = new Label(container, SWT.NONE);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
175 emailLabel.setText("Email");
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
176
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
177 emailValue = new Text(container, SWT.BORDER);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
178 emailValue.setLayoutData(gd);
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
180 final Label phoneLabel = new Label(container, SWT.NONE);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
181 phoneLabel.setText("Phone");
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
183 phoneNumberValue = new Text(container, SWT.BORDER);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
184 phoneNumberValue.setLayoutData(gd);
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
186 contact = new Contact("BorisBokowski", "boris.at.somecompany.com",
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
187 "1-123-456-7890");
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
189 bindUI();
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
190 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
192 private void bindUI() {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
193 DataBindingContext dbc = new DataBindingContext();
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
195 final IObservableValue name = BeansObservables.observeValue(contact,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
196 "name");
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
197 dbc.bindValue(SWTObservables.observeText(nameValue, SWT.Modify), name,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
198 null, null);
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
200 final IObservableValue email = BeansObservables.observeValue(contact,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
201 "email");
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
202 dbc.bindValue(SWTObservables.observeText(emailValue, SWT.Modify),
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
203 email, null, null);
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
205 final IObservableValue phone = BeansObservables.observeValue(contact,
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
206 "phoneNumber");
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
207 dbc.bindValue(SWTObservables.observeText(phoneNumberValue, SWT.Modify),
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
208 phone, null, null);
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
210 MultiValidator validator = new MultiValidator() {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
211 protected IStatus validate() {
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
213 // Everything accessed here will trigger re-validation.
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
214 name.getValue();
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
215 email.getValue();
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
216 phone.getValue();
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
218 System.out.println("Validating...");
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
220 return contact.validate();
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
221 }
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
222 };
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
223 dbc.addValidationStatusProvider(validator);
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
224
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
225 WizardPageSupport.create(this, dbc);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
226 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
227
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
228 static class ExternalValidationWizard extends Wizard {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
229 public void addPages() {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
230 addPage(new Snippet027ExternalValidator());
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
231 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
232
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
233 public String getWindowTitle() {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
234 return "Snippet 024 - External Validation";
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
235 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
236
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
237 public bool performFinish() {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
238 return true;
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
239 }
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
240 }
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
241
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
242 public static void main(String[] args) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
243 Display display = new Display();
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
244
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
245 Realm.runWithDefault(SWTObservables.getRealm(display), new Runnable() {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
246 public void run() {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
247 IWizard wizard = new ExternalValidationWizard();
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
248 WizardDialog dialog = new WizardDialog(null, wizard);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
249 dialog.open();
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
250
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
251 // The SWT event loop
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
252 Display display = Display.getCurrent();
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
253 while (dialog.getShell() != null
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
254 && !dialog.getShell().isDisposed()) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
255 if (!display.readAndDispatch()) {
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
256 display.sleep();
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
257 }
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
258 }
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
259 }
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
260 });
90
6086085e153d Added databinding snippets. unmodified java sources.
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
261
99
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
262 display.dispose();
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
263 }
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
264 }
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
265 void main( String[] args ){
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
266 Snippet027ExternalValidator.main(args);
5d5bd660917f build some databind snippets
Frank Benoit <benoit@tionex.de>
parents: 90
diff changeset
267 }