Dragger class
class Dragger { final Element _element; final EventHandle<Vector> _dragDeltaHandle; final EventHandle<CancelableEventArgs> _dragStartHandle; Coordinate _clientLoc; Dragger(this._element) : _dragDeltaHandle = new EventHandle<Vector>(), _dragStartHandle = new EventHandle<CancelableEventArgs>() { _element.on.mouseDown.add(_onMouseDown); window.on.mouseMove.add(_handleMove); window.on.mouseUp.add(_endDrag); window.on.blur.add(_endDrag); } EventRoot<Vector> get dragDelta => _dragDeltaHandle; EventRoot<CancelableEventArgs> get dragStart => _dragStartHandle; bool get isDragging => _clientLoc != null; void _onMouseDown(MouseEvent event) { assert(!isDragging); final args = new CancelableEventArgs(); _dragStartHandle.fireEvent(args); if(!args.isCanceled) { event.preventDefault(); _clientLoc = new Coordinate(event.clientX, event.clientY); } } void _handleMove(MouseEvent event) { if(isDragging) { final newLoc = new Coordinate(event.clientX, event.clientY); final delta = newLoc - _clientLoc; _dragDeltaHandle.fireEvent(delta); _clientLoc = newLoc; } } void _endDrag(Event event) { if(isDragging) { _clientLoc = null; } } }
Constructors
new Dragger(Element _element) #
Dragger(this._element) : _dragDeltaHandle = new EventHandle<Vector>(), _dragStartHandle = new EventHandle<CancelableEventArgs>() { _element.on.mouseDown.add(_onMouseDown); window.on.mouseMove.add(_handleMove); window.on.mouseUp.add(_endDrag); window.on.blur.add(_endDrag); }
Properties
final EventRoot<CancelableEventArgs> dragStart #
EventRoot<CancelableEventArgs> get dragStart => _dragStartHandle;
final bool isDragging #
bool get isDragging => _clientLoc != null;
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
new Dragger(Element _element) #
Dragger(this._element) : _dragDeltaHandle = new EventHandle<Vector>(), _dragStartHandle = new EventHandle<CancelableEventArgs>() { _element.on.mouseDown.add(_onMouseDown); window.on.mouseMove.add(_handleMove); window.on.mouseUp.add(_endDrag); window.on.blur.add(_endDrag); }
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();
String toString() #
Returns a string representation of this object.
external String toString();