Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(565)

Unified Diff: client/touch/TouchUtil.dart

Issue 9382027: Move client/{base, observable, layout, touch, util, view} to samples/ui_lib . (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « client/touch/TouchHandler.dart ('k') | client/touch/resources/touch.css » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: client/touch/TouchUtil.dart
===================================================================
--- client/touch/TouchUtil.dart (revision 4144)
+++ client/touch/TouchUtil.dart (working copy)
@@ -1,242 +0,0 @@
-// Copyright (c) 2011, 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.
-
-/**
- * Wraps a callback with translations of mouse events to touch events. Use
- * this function to invoke your callback that expects touch events after
- * touch events are created from the actual mouse events.
- */
-EventListener mouseToTouchCallback(EventListener callback) {
- return (MouseEvent e) {
- var touches = <Touch>[];
- var targetTouches = <Touch>[];
- var changedTouches = <Touch>[];
- final mockTouch = new MockTouch(e);
- final mockTouchList = <Touch>[mockTouch];
- if (e.type == 'mouseup') {
- changedTouches = mockTouchList;
- } else {
- touches = mockTouchList;
- targetTouches = mockTouchList;
- }
- callback(new MockTouchEvent(e, touches, targetTouches, changedTouches));
- // Required to prevent spurious selection changes while tracking touches
- // on devices that don't support touch events.
- e.preventDefault();
- };
-}
-
-/** Helper method to attach event listeners to a [node]. */
-void _addEventListeners(Element node,
- EventListener onStart, EventListener onMove, EventListener onEnd,
- EventListener onCancel, [bool capture = false]) {
-
- Function removeListeners;
-
- onEndWrapper(e) {
- removeListeners();
- return onEnd(e);
- }
-
- onLeaveWrapper(e) {
- removeListeners();
- return onEnd(e);
- }
-
- onCancelWrapper(e) {
- removeListeners();
- return onCancel(e);
- }
-
- if (Device.supportsTouch) {
- removeListeners = () {
- document.on.touchMove.remove(onMove, capture);
- document.on.touchEnd.remove(onEndWrapper, capture);
- document.on.touchLeave.remove(onLeaveWrapper, capture);
- document.on.touchCancel.remove(onCancelWrapper, capture);
- };
-
- node.on.touchStart.add((e) {
- document.on.touchMove.add(onMove, capture);
- document.on.touchEnd.add(onEndWrapper, capture);
- document.on.touchLeave.add(onLeaveWrapper, capture);
- document.on.touchCancel.add(onCancelWrapper, capture);
- return onStart(e);
- }, capture);
- } else {
- onStart = mouseToTouchCallback(onStart);
- onMove = mouseToTouchCallback(onMove);
- onEnd = mouseToTouchCallback(onEnd);
- // onLeave will never be called if the device does not support touches.
-
- removeListeners = () {
- document.on.mouseMove.remove(onMove, capture);
- document.on.mouseUp.remove(onEndWrapper, capture);
- document.on.touchCancel.remove(onCancelWrapper, capture);
- };
-
- node.on.mouseDown.add((e) {
- document.on.mouseMove.add(onMove, capture);
- document.on.mouseUp.add(onEndWrapper, capture);
- document.on.touchCancel.add(onCancelWrapper, capture);
- return onStart(e);
- }, capture);
- }
-}
-
-/**
- * Gets whether the given touch event targets the node, or one of the node's
- * children.
- */
-bool _touchEventTargetsNode(event, Node node) {
- Node target = event.changedTouches[0].target;
-
- // TODO(rnystrom): Move this into Dom.
- // Walk up the parents looking for the node.
- while (target != null) {
- if (target == node) {
- return true;
- }
- target = target.parent;
- }
-
- return false;
-}
-
-interface Touchable {
- /**
- * Provide the HTML element that should respond to touch events.
- */
- Element getElement();
-
- /**
- * The object has received a touchend event.
- */
- void onTouchEnd();
-
- /**
- * The object has received a touchstart event.
- * Returns return true if you want to allow a drag sequence to begin,
- * false you want to disable dragging for the duration of this touch.
- */
- bool onTouchStart(TouchEvent e);
-}
-
-interface Draggable extends Touchable {
- /**
- * The object's drag sequence is now complete.
- */
- void onDragEnd();
-
- /**
- * The object has been dragged to a new position.
- */
- void onDragMove();
-
- /**
- * The object has started dragging.
- * Returns true to allow a drag sequence to begin (custom behavior),
- * false to disable dragging for this touch duration (allow native scrolling).
- */
- bool onDragStart(TouchEvent e);
-
- bool get verticalEnabled();
- bool get horizontalEnabled();
-}
-
-class MockTouch implements Touch {
- MouseEvent wrapped;
-
- MockTouch(MouseEvent this.wrapped) {}
-
- int get clientX() => wrapped.clientX;
-
- int get clientY() => wrapped.clientY;
-
- int get identifier() => 0;
-
- int get pageX() => wrapped.pageX;
-
- int get pageY() => wrapped.pageY;
-
- int get screenX() => wrapped.screenX;
-
- int get screenY() {return wrapped.screenY; }
-
- EventTarget get target() => wrapped.target;
-
- num get webkitForce() { throw new NotImplementedException(); }
- int get webkitRadiusX() { throw new NotImplementedException(); }
- int get webkitRadiusY() { throw new NotImplementedException(); }
- num get webkitRotationAngle() { throw new NotImplementedException(); }
-}
-
-class MockTouchEvent implements TouchEvent {
- MouseEvent wrapped;
- // TODO(jacobr): these are currently Lists instead of a TouchList.
- final List<Touch> touches;
- final List<Touch> targetTouches;
- final List<Touch> changedTouches;
- MockTouchEvent(MouseEvent this.wrapped, List<Touch> this.touches,
- List<Touch> this.targetTouches,
- List<Touch> this.changedTouches) {}
-
- bool get bubbles() => wrapped.bubbles;
-
- bool get cancelBubble() => wrapped.cancelBubble;
-
- void set cancelBubble(bool value) { wrapped.cancelBubble = value; }
-
- bool get cancelable() => wrapped.cancelable;
-
- EventTarget get currentTarget() => wrapped.currentTarget;
-
- bool get defaultPrevented() => wrapped.defaultPrevented;
-
- int get eventPhase() => wrapped.eventPhase;
-
- void set returnValue(bool value) { wrapped.returnValue = value; }
-
- bool get returnValue() => wrapped.returnValue;
-
- EventTarget get srcElement() => wrapped.srcElement;
-
- EventTarget get target() => wrapped.target;
-
- int get timeStamp() => wrapped.timeStamp;
-
- String get type() => wrapped.type;
-
- void preventDefault() { wrapped.preventDefault(); }
-
- void stopImmediatePropagation() { wrapped.stopImmediatePropagation(); }
-
- void stopPropagation() { wrapped.stopPropagation(); }
-
- int get charCode() => wrapped.charCode;
-
- int get detail() => wrapped.detail;
-
- int get keyCode() => wrapped.keyCode;
-
- int get layerX() => wrapped.layerX;
-
- int get layerY() => wrapped.layerY;
-
- int get pageX() => wrapped.pageX;
-
- int get pageY() => wrapped.pageY;
-
- Window get view() => wrapped.view;
-
- int get which() => wrapped.which;
-
- bool get altKey() => wrapped.altKey;
-
- bool get ctrlKey() => wrapped.ctrlKey;
-
- bool get metaKey() => wrapped.metaKey;
-
- bool get shiftKey() => wrapped.shiftKey;
-}
« no previous file with comments | « client/touch/TouchHandler.dart ('k') | client/touch/resources/touch.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698