Mercurial > projects > dwt2
comparison org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/observable/ValidatedObservableSet.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 |
---|---|
47 // True when validation status changes from invalid to valid. | 47 // True when validation status changes from invalid to valid. |
48 private bool computeNextDiff = false; | 48 private bool computeNextDiff = false; |
49 | 49 |
50 private bool updatingTarget = false; | 50 private bool updatingTarget = false; |
51 | 51 |
52 private ISetChangeListener targetChangeListener = new class() ISetChangeListener { | 52 private ISetChangeListener targetChangeListener; |
53 class TargetChangeListener : ISetChangeListener { | |
53 public void handleSetChange(SetChangeEvent event) { | 54 public void handleSetChange(SetChangeEvent event) { |
54 if (updatingTarget) | 55 if (updatingTarget) |
55 return; | 56 return; |
56 IStatus status = cast(IStatus) validationStatus.getValue(); | 57 IStatus status = cast(IStatus) validationStatus.getValue(); |
57 if (isValid(status)) { | 58 if (isValid(status)) { |
73 makeStale(); | 74 makeStale(); |
74 } | 75 } |
75 } | 76 } |
76 }; | 77 }; |
77 | 78 |
78 private IStaleListener targetStaleListener = new class() IStaleListener { | 79 private IStaleListener targetStaleListener; |
80 class TargetStaleListener : IStaleListener { | |
79 public void handleStale(StaleEvent staleEvent) { | 81 public void handleStale(StaleEvent staleEvent) { |
80 fireStale(); | 82 fireStale(); |
81 } | 83 } |
82 }; | 84 }; |
83 | 85 |
84 private IValueChangeListener validationStatusChangeListener = new class() IValueChangeListener { | 86 private IValueChangeListener validationStatusChangeListener; |
87 class ValidationStatusChangeListener : IValueChangeListener { | |
85 public void handleValueChange(ValueChangeEvent event) { | 88 public void handleValueChange(ValueChangeEvent event) { |
86 IStatus oldStatus = cast(IStatus) event.diff.getOldValue(); | 89 IStatus oldStatus = cast(IStatus) event.diff.getOldValue(); |
87 IStatus newStatus = cast(IStatus) event.diff.getNewValue(); | 90 IStatus newStatus = cast(IStatus) event.diff.getNewValue(); |
88 if (stale && !isValid(oldStatus) && isValid(newStatus)) { | 91 if (stale && !isValid(oldStatus) && isValid(newStatus)) { |
89 // this.stale means we are out of sync with target, | 92 // this.stale means we are out of sync with target, |
102 * @param target | 105 * @param target |
103 * @param validationStatus | 106 * @param validationStatus |
104 */ | 107 */ |
105 public this(IObservableSet target, | 108 public this(IObservableSet target, |
106 IObservableValue validationStatus) { | 109 IObservableValue validationStatus) { |
110 targetStaleListener = new TargetStaleListener(); | |
111 targetChangeListener = new TargetChangeListener(); | |
112 validationStatusChangeListener = new ValidationStatusChangeListener(); | |
107 super(target.getRealm(), new HashSet(target), target.getElementType()); | 113 super(target.getRealm(), new HashSet(target), target.getElementType()); |
108 Assert.isNotNull(validationStatus, | 114 Assert.isNotNull(cast(Object)validationStatus, |
109 "Validation status observable cannot be null"); //$NON-NLS-1$ | 115 "Validation status observable cannot be null"); //$NON-NLS-1$ |
110 Assert | 116 Assert |
111 .isTrue(target.getRealm().equals(validationStatus.getRealm()), | 117 .isTrue(cast(bool)target.getRealm().opEquals(validationStatus.getRealm()), |
112 "Target and validation status observables must be on the same realm"); //$NON-NLS-1$ | 118 "Target and validation status observables must be on the same realm"); //$NON-NLS-1$ |
113 this.target = target; | 119 this.target = target; |
114 this.validationStatus = validationStatus; | 120 this.validationStatus = validationStatus; |
115 target.addSetChangeListener(targetChangeListener); | 121 target.addSetChangeListener(targetChangeListener); |
116 target.addStaleListener(targetStaleListener); | 122 target.addStaleListener(targetStaleListener); |