Skip to content

Commit aa5d13b

Browse files
committed
Adds a validator
1 parent dfa855a commit aa5d13b

File tree

1 file changed

+18
-6
lines changed
  • com.vogella.rcp.databinding/src/com/vogella/rcp/databinding/parts

1 file changed

+18
-6
lines changed

com.vogella.rcp.databinding/src/com/vogella/rcp/databinding/parts/SamplePart.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.eclipse.core.databinding.beans.BeanProperties;
88
import org.eclipse.core.databinding.conversion.IConverter;
99
import org.eclipse.core.databinding.observable.value.IObservableValue;
10+
import org.eclipse.core.databinding.validation.ValidationStatus;
1011
import org.eclipse.jface.databinding.swt.WidgetProperties;
1112
import org.eclipse.jface.layout.GridDataFactory;
1213
import org.eclipse.jface.layout.GridLayoutFactory;
@@ -38,18 +39,29 @@ public void createPartControl(Composite parent) {
3839
DataBindingContext dbc = new DataBindingContext();
3940

4041
// define converters
41-
IConverter convertToStringArray =
42-
IConverter.create(String.class, String[].class, (o1) -> ((String) o1).split(","));
43-
IConverter convertToString =
44-
IConverter.create(String[].class, String.class, (o1) -> convert((String[])o1));;
42+
IConverter convertToStringArray = IConverter.create(String.class, String[].class,
43+
(o1) -> ((String) o1).split(","));
44+
IConverter convertToString = IConverter.create(String[].class, String.class, (o1) -> convert((String[]) o1));
45+
;
4546

4647
// create the observables, which should be bound
47-
IObservableValue<Text> programmingSkillsTarget = WidgetProperties.text(SWT.Modify).observe(programmingSkillsText);
48+
IObservableValue<Text> programmingSkillsTarget = WidgetProperties.text(SWT.Modify)
49+
.observe(programmingSkillsText);
4850
IObservableValue<Person> programmingSkillsModel = BeanProperties.value("programmingSkills").observe(person);
4951

52+
UpdateValueStrategy updateStrategy = UpdateValueStrategy.create(convertToStringArray);
53+
updateStrategy.setAfterGetValidator((o1) -> {
54+
String s = (String) o1;
55+
if (!s.contains("Perl")) {
56+
return ValidationStatus.ok();
57+
}
58+
return ValidationStatus.error("Perl is not a programming language");
59+
60+
});
61+
5062
// bind observables together with the appropriate UpdateValueStrategies
5163
dbc.bindValue(programmingSkillsTarget, programmingSkillsModel,
52-
UpdateValueStrategy.create(convertToStringArray),
64+
updateStrategy,
5365
UpdateValueStrategy.create(convertToString));
5466

5567
// button to check the data model

0 commit comments

Comments
 (0)