|
7 | 7 | import org.eclipse.core.databinding.beans.BeanProperties; |
8 | 8 | import org.eclipse.core.databinding.conversion.IConverter; |
9 | 9 | import org.eclipse.core.databinding.observable.value.IObservableValue; |
| 10 | +import org.eclipse.core.databinding.validation.ValidationStatus; |
10 | 11 | import org.eclipse.jface.databinding.swt.WidgetProperties; |
11 | 12 | import org.eclipse.jface.layout.GridDataFactory; |
12 | 13 | import org.eclipse.jface.layout.GridLayoutFactory; |
@@ -38,18 +39,29 @@ public void createPartControl(Composite parent) { |
38 | 39 | DataBindingContext dbc = new DataBindingContext(); |
39 | 40 |
|
40 | 41 | // 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 | + ; |
45 | 46 |
|
46 | 47 | // 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); |
48 | 50 | IObservableValue<Person> programmingSkillsModel = BeanProperties.value("programmingSkills").observe(person); |
49 | 51 |
|
| 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 | + |
50 | 62 | // bind observables together with the appropriate UpdateValueStrategies |
51 | 63 | dbc.bindValue(programmingSkillsTarget, programmingSkillsModel, |
52 | | - UpdateValueStrategy.create(convertToStringArray), |
| 64 | + updateStrategy, |
53 | 65 | UpdateValueStrategy.create(convertToString)); |
54 | 66 |
|
55 | 67 | // button to check the data model |
|
0 commit comments