blob: 893f3d24f08b2076890456f3becf2b88e76a895e [file] [log] [blame]
// Copyright (c) 2012, 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.
class _EventsImpl implements Events {
/* Raw event target. */
// TODO(jacobr): it would be nice if we could specify this as
// _EventTargetImpl or EventTarget
final Dynamic _ptr;
_EventsImpl(this._ptr);
_EventListenerListImpl operator [](String type) {
return new _EventListenerListImpl(_ptr, type);
}
}
class _EventListenerListImpl implements EventListenerList {
// TODO(jacobr): make this _EventTargetImpl
final Dynamic _ptr;
final String _type;
_EventListenerListImpl(this._ptr, this._type);
// TODO(jacobr): implement equals.
_EventListenerListImpl add(EventListener listener,
[bool useCapture = false]) {
_add(listener, useCapture);
return this;
}
_EventListenerListImpl remove(EventListener listener,
[bool useCapture = false]) {
_remove(listener, useCapture);
return this;
}
bool dispatch(Event evt) {
// TODO(jacobr): what is the correct behavior here. We could alternately
// force the event to have the expected type.
assert(evt.type == _type);
return _ptr.$dom_dispatchEvent(evt);
}
void _add(EventListener listener, bool useCapture) {
_ptr.$dom_addEventListener(_type, listener, useCapture);
}
void _remove(EventListener listener, bool useCapture) {
_ptr.$dom_removeEventListener(_type, listener, useCapture);
}
}
class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
Events get on() => new _EventsImpl(this);
$!MEMBERS
}