Dart Documentationbot_htmlDragger

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<Vector> dragDelta #

EventRoot<Vector> get dragDelta => _dragDeltaHandle;

final EventRoot<CancelableEventArgs> dragStart #

EventRoot<CancelableEventArgs> get dragStart => _dragStartHandle;

final bool isDragging #

bool get isDragging => _clientLoc != null;

final Type runtimeType #

inherited from Object

A representation of the runtime type of the object.

external Type get runtimeType;

Operators

bool operator ==(other) #

inherited from Object

The equality operator.

The default behavior for all Objects 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() #

inherited from Object

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) #

inherited from Object

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() #

inherited from 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() #

inherited from Object

Returns a string representation of this object.

external String toString();