Index: packages/observable/lib/src/observable_map.dart |
diff --git a/packages/observe/lib/src/observable_map.dart b/packages/observable/lib/src/observable_map.dart |
similarity index 81% |
rename from packages/observe/lib/src/observable_map.dart |
rename to packages/observable/lib/src/observable_map.dart |
index b09c4683a835634e3c7f3e1861e65cc4374b0c72..23a7f11fa483d9562e039e429aa9de0ae783ef1f 100644 |
--- a/packages/observe/lib/src/observable_map.dart |
+++ b/packages/observable/lib/src/observable_map.dart |
@@ -1,12 +1,14 @@ |
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
+// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
// for details. All rights reserved. Use of this source code is governed by a |
// BSD-style license that can be found in the LICENSE file. |
-library observe.src.observable_map; |
+library observable.src.observable_map; |
import 'dart:collection'; |
-import 'package:observe/observe.dart'; |
+import 'change_record.dart' show ChangeRecord; |
+import 'observable.dart' show Observable; |
+import 'property_change_record.dart' show PropertyChangeRecord; |
// TODO(jmesserly): this needs to be faster. We currently require multiple |
// lookups per key to get the old value. |
@@ -35,13 +37,18 @@ class MapChangeRecord<K, V> extends ChangeRecord { |
final bool isRemove; |
MapChangeRecord(this.key, this.oldValue, this.newValue) |
- : isInsert = false, isRemove = false; |
+ : isInsert = false, |
+ isRemove = false; |
MapChangeRecord.insert(this.key, this.newValue) |
- : isInsert = true, isRemove = false, oldValue = null; |
+ : isInsert = true, |
+ isRemove = false, |
+ oldValue = null; |
MapChangeRecord.remove(this.key, this.oldValue) |
- : isInsert = false, isRemove = true, newValue = null; |
+ : isInsert = false, |
+ isRemove = true, |
+ newValue = null; |
String toString() { |
var kind = isInsert ? 'insert' : isRemove ? 'remove' : 'set'; |
@@ -52,7 +59,7 @@ class MapChangeRecord<K, V> extends ChangeRecord { |
/// Represents an observable map of model values. If any items are added, |
/// removed, or replaced, then observers that are listening to [changes] |
/// will be notified. |
-class ObservableMap<K, V> extends ChangeNotifier implements Map<K, V> { |
+class ObservableMap<K, V> extends Observable implements Map<K, V> { |
final Map<K, V> _map; |
/// Creates an observable map. |
@@ -77,7 +84,7 @@ class ObservableMap<K, V> extends ChangeNotifier implements Map<K, V> { |
/// Like [ObservableMap.from], but creates an empty map. |
factory ObservableMap.createFromType(Map<K, V> other) { |
- ObservableMap result; |
+ ObservableMap<K, V> result; |
if (other is SplayTreeMap) { |
result = new ObservableMap<K, V>.sorted(); |
} else if (other is LinkedHashMap) { |
@@ -88,23 +95,23 @@ class ObservableMap<K, V> extends ChangeNotifier implements Map<K, V> { |
return result; |
} |
- @reflectable Iterable<K> get keys => _map.keys; |
+ Iterable<K> get keys => _map.keys; |
- @reflectable Iterable<V> get values => _map.values; |
+ Iterable<V> get values => _map.values; |
- @reflectable int get length =>_map.length; |
+ int get length => _map.length; |
- @reflectable bool get isEmpty => length == 0; |
+ bool get isEmpty => length == 0; |
- @reflectable bool get isNotEmpty => !isEmpty; |
+ bool get isNotEmpty => !isEmpty; |
- @reflectable bool containsValue(Object value) => _map.containsValue(value); |
+ bool containsValue(Object value) => _map.containsValue(value); |
- @reflectable bool containsKey(Object key) => _map.containsKey(key); |
+ bool containsKey(Object key) => _map.containsKey(key); |
- @reflectable V operator [](Object key) => _map[key]; |
+ V operator [](Object key) => _map[key]; |
- @reflectable void operator []=(K key, V value) { |
+ void operator []=(K key, V value) { |
if (!hasObservers) { |
_map[key] = value; |
return; |
@@ -126,7 +133,9 @@ class ObservableMap<K, V> extends ChangeNotifier implements Map<K, V> { |
} |
void addAll(Map<K, V> other) { |
- other.forEach((K key, V value) { this[key] = value; }); |
+ other.forEach((K key, V value) { |
+ this[key] = value; |
+ }); |
} |
V putIfAbsent(K key, V ifAbsent()) { |
@@ -142,7 +151,7 @@ class ObservableMap<K, V> extends ChangeNotifier implements Map<K, V> { |
V remove(Object key) { |
int len = _map.length; |
- V result = _map.remove(key); |
+ V result = _map.remove(key); |
if (hasObservers && len != _map.length) { |
notifyChange(new MapChangeRecord.remove(key, result)); |
notifyPropertyChange(#length, len, _map.length); |