EventHandle<T> class
class EventHandle<T> extends DisposableImpl implements EventRoot<T> { HashMap<GlobalId, Action1<T>> _handlers; void fireEvent(T args){ assert(!isDisposed); if(_handlers != null){ _handlers.forEach((GlobalId id, Action1<T> handler){ handler(args); }); } } /** * _I'm not a huge fan of returning a [GlobalId] but at the moment * functions don't have a simple model for identity. [GlobalId] allows * reliable removal of an added handler._ * * Related dart bug [167](http://code.google.com/p/dart/issues/detail?id=167) */ GlobalId add(Action1<T> handler){ assert(!isDisposed); var id = new GlobalId(); if(_handlers == null){ _handlers = new HashMap<GlobalId, Action1<T>>(); } _handlers[id] = handler; return id; } bool remove(GlobalId id){ if(_handlers != null){ return _handlers.remove(id) != null; } else{ return false; } } void disposeInternal(){ super.disposeInternal(); if(_handlers != null){ _handlers.clear(); _handlers = null; } } }
Extends
DisposableImpl > EventHandle<T>
Implements
Properties
final Type runtimeType #
A representation of the runtime type of the object.
external Type get runtimeType;
Operators
bool operator ==(other) #
The equality operator.
The default behavior for all Object
s is to return true if and
only if this
and
other are the same object.
If a subclass overrides the equality operator it should override
the hashCode
method as well to maintain consistency.
bool operator ==(other) => identical(this, other);
Methods
GlobalId add(Action1 handler) #
I'm not a huge fan of returning a GlobalId but at the moment functions don't have a simple model for identity. GlobalId allows reliable removal of an added handler.
Related dart bug 167
GlobalId add(Action1<T> handler){ assert(!isDisposed); var id = new GlobalId(); if(_handlers == null){ _handlers = new HashMap<GlobalId, Action1<T>>(); } _handlers[id] = handler; return id; }
void dispose() #
void dispose(){ if (!_disposed) { // Set disposed_ to true first, in case during the chain of disposal this // gets disposed recursively. this._disposed = true; this.disposeInternal(); } }
void disposeInternal() #
Do not call this method directly. Call dispose
instead.
Subclasses should override this method to implement Disposable behavior.
void disposeInternal(){ super.disposeInternal(); if(_handlers != null){ _handlers.clear(); _handlers = null; } }
void fireEvent(T args) #
void fireEvent(T args){ assert(!isDisposed); if(_handlers != null){ _handlers.forEach((GlobalId id, Action1<T> handler){ handler(args); }); } }
int hashCode() #
Get a hash code for this object.
All objects have hash codes. Hash codes are guaranteed to be the
same for objects that are equal when compared using the equality
operator ==
. Other than that there are no guarantees about
the hash codes. They will not be consistent between runs and
there are no distribution guarantees.
If a subclass overrides hashCode
it should override the
equality operator as well to maintain consistency.
external int hashCode();
noSuchMethod(String name, List args) #
noSuchMethod
is invoked when users invoke a non-existant method
on an object. The name of the method and the arguments of the
invocation are passed to noSuchMethod
. If noSuchMethod
returns a value, that value becomes the result of the original
invocation.
The default behavior of noSuchMethod
is to throw a
noSuchMethodError
.
external Dynamic noSuchMethod(String name, List args);
const Object() #
Creates a new Object
instance.
Object
instances have no meaningful state, and are only useful
through their identity. An Object
instance is equal to itself
only.
const Object();
bool remove(GlobalId id) #
bool remove(GlobalId id){ if(_handlers != null){ return _handlers.remove(id) != null; } else{ return false; } }
String toString() #
Returns a string representation of this object.
external String toString();
void validateNotDisposed() #
void validateNotDisposed() { assert(!_disposed); }