| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 part of observable; | 5 part of observable; |
| 6 | 6 |
| 7 /** A change to an observable instance. */ | 7 /** A change to an observable instance. */ |
| 8 class ChangeEvent { | 8 class ChangeEvent { |
| 9 // TODO(sigmund): capture language issues around enums & create a cannonical | 9 // TODO(sigmund): capture language issues around enums & create a cannonical |
| 10 // Dart enum design. | 10 // Dart enum design. |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 | 40 |
| 41 /** | 41 /** |
| 42 * Index of the list operation. Insertions prepend in front of the given | 42 * Index of the list operation. Insertions prepend in front of the given |
| 43 * index (insert at 0 means an insertion at the beginning of the list). | 43 * index (insert at 0 means an insertion at the beginning of the list). |
| 44 */ | 44 */ |
| 45 final int index; | 45 final int index; |
| 46 | 46 |
| 47 /** Factory constructor for property change events. */ | 47 /** Factory constructor for property change events. */ |
| 48 ChangeEvent.property( | 48 ChangeEvent.property( |
| 49 this.target, this.propertyName, this.newValue, this.oldValue) | 49 this.target, this.propertyName, this.newValue, this.oldValue) |
| 50 : type = UPDATE, index = null; | 50 : type = UPDATE, |
| 51 index = null; |
| 51 | 52 |
| 52 /** Factory constructor for list change events. */ | 53 /** Factory constructor for list change events. */ |
| 53 ChangeEvent.list( | 54 ChangeEvent.list( |
| 54 this.target, this.type, this.index, this.newValue, this.oldValue) | 55 this.target, this.type, this.index, this.newValue, this.oldValue) |
| 55 : propertyName = null; | 56 : propertyName = null; |
| 56 | 57 |
| 57 /** Factory constructor for [GLOBAL] change events. */ | 58 /** Factory constructor for [GLOBAL] change events. */ |
| 58 ChangeEvent.global(this.target) | 59 ChangeEvent.global(this.target) |
| 59 : type = GLOBAL, newValue = null, oldValue = null, propertyName = null, inde
x = null; | 60 : type = GLOBAL, |
| 61 newValue = null, |
| 62 oldValue = null, |
| 63 propertyName = null, |
| 64 index = null; |
| 60 } | 65 } |
| 61 | 66 |
| 62 /** A collection of change events on a single observable instance. */ | 67 /** A collection of change events on a single observable instance. */ |
| 63 class EventSummary { | 68 class EventSummary { |
| 64 final Observable target; | 69 final Observable target; |
| 65 | 70 |
| 66 // TODO(sigmund): evolve this to track changes per property. | 71 // TODO(sigmund): evolve this to track changes per property. |
| 67 List<ChangeEvent> events; | 72 List<ChangeEvent> events; |
| 68 | 73 |
| 69 EventSummary(this.target) : events = new List<ChangeEvent>(); | 74 EventSummary(this.target) : events = new List<ChangeEvent>(); |
| 70 | 75 |
| 71 void addEvent(ChangeEvent e) { | 76 void addEvent(ChangeEvent e) { |
| 72 events.add(e); | 77 events.add(e); |
| 73 } | 78 } |
| 74 | 79 |
| 75 /** Notify listeners of [target] and parents of [target] about all changes. */ | 80 /** Notify listeners of [target] and parents of [target] about all changes. */ |
| 76 void notify() { | 81 void notify() { |
| 77 if (!events.isEmpty) { | 82 if (!events.isEmpty) { |
| 78 for (Observable obj = target; obj != null; obj = obj.parent) { | 83 for (Observable obj = target; obj != null; obj = obj.parent) { |
| 79 for (final listener in obj.listeners) { | 84 for (final listener in obj.listeners) { |
| 80 listener(this); | 85 listener(this); |
| 81 } | 86 } |
| 82 } | 87 } |
| 83 } | 88 } |
| 84 } | 89 } |
| 85 } | 90 } |
| 86 | 91 |
| 87 /** A listener of change events. */ | 92 /** A listener of change events. */ |
| 88 typedef void ChangeListener(EventSummary events); | 93 typedef void ChangeListener(EventSummary events); |
| OLD | NEW |