Mercurial > projects > dwt2
comparison org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/observable/masterdetail/DetailObservableValue.d @ 85:6be48cf9f95c
Work on databinding
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sat, 18 Apr 2009 13:54:50 +0200 |
parents | 0a55d2d5a946 |
children |
comparison
equal
deleted
inserted
replaced
84:fcf926c91ca4 | 85:6be48cf9f95c |
---|---|
29 */ | 29 */ |
30 public class DetailObservableValue : AbstractObservableValue , IObserving { | 30 public class DetailObservableValue : AbstractObservableValue , IObserving { |
31 | 31 |
32 private bool updating = false; | 32 private bool updating = false; |
33 | 33 |
34 private IValueChangeListener innerChangeListener = new class() IValueChangeListener { | 34 private IValueChangeListener innerChangeListener; |
35 class InnerChangeListener : IValueChangeListener { | |
35 public void handleValueChange(ValueChangeEvent event) { | 36 public void handleValueChange(ValueChangeEvent event) { |
36 if (!updating) { | 37 if (!updating) { |
37 fireValueChange(event.diff); | 38 fireValueChange(event.diff); |
38 } | 39 } |
39 } | 40 } |
54 * @param factory | 55 * @param factory |
55 * @param detailType | 56 * @param detailType |
56 */ | 57 */ |
57 public this(IObservableValue outerObservableValue, | 58 public this(IObservableValue outerObservableValue, |
58 IObservableFactory factory, Object detailType) { | 59 IObservableFactory factory, Object detailType) { |
60 innerChangeListener = new InnerChangeListener(); | |
61 outerChangeListener = new OuterChangeListener(); | |
59 super(outerObservableValue.getRealm()); | 62 super(outerObservableValue.getRealm()); |
60 this.factory = factory; | 63 this.factory = factory; |
61 this.detailType = detailType; | 64 this.detailType = detailType; |
62 this.outerObservableValue = outerObservableValue; | 65 this.outerObservableValue = outerObservableValue; |
63 updateInnerObservableValue(outerObservableValue); | 66 updateInnerObservableValue(outerObservableValue); |
64 | 67 |
65 outerObservableValue.addValueChangeListener(outerChangeListener); | 68 outerObservableValue.addValueChangeListener(outerChangeListener); |
66 } | 69 } |
67 | 70 |
68 IValueChangeListener outerChangeListener = new class() IValueChangeListener { | 71 IValueChangeListener outerChangeListener; |
72 class OuterChangeListener : IValueChangeListener { | |
69 public void handleValueChange(ValueChangeEvent event) { | 73 public void handleValueChange(ValueChangeEvent event) { |
70 Object oldValue = doGetValue(); | 74 Object oldValue = doGetValue(); |
71 updateInnerObservableValue(outerObservableValue); | 75 updateInnerObservableValue(outerObservableValue); |
72 fireValueChange(Diffs.createValueDiff(oldValue, doGetValue())); | 76 fireValueChange(Diffs.createValueDiff(oldValue, doGetValue())); |
73 } | 77 } |
88 Object innerValueType = innerObservableValue.getValueType(); | 92 Object innerValueType = innerObservableValue.getValueType(); |
89 | 93 |
90 if (detailType !is null) { | 94 if (detailType !is null) { |
91 Assert | 95 Assert |
92 .isTrue( | 96 .isTrue( |
93 detailType.equals(innerValueType), | 97 cast(bool)detailType.opEquals(innerValueType), |
94 "Cannot change value type in a nested observable value, from " + innerValueType + " to " + detailType); //$NON-NLS-1$ //$NON-NLS-2$ | 98 Format("Cannot change value type in a nested observable value, from {} to {}", innerValueType, detailType)); //$NON-NLS-1$ //$NON-NLS-2$ |
95 } | 99 } |
96 innerObservableValue.addValueChangeListener(innerChangeListener); | 100 innerObservableValue.addValueChangeListener(innerChangeListener); |
97 } | 101 } |
98 } | 102 } |
99 | 103 |