| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 part of html; | 5 part of html; |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * Internal class that does the actual calculations to determine keyCode and | 8 * Internal class that does the actual calculations to determine keyCode and |
| 9 * charCode for keydown, keypress, and keyup events for all browsers. | 9 * charCode for keydown, keypress, and keyup events for all browsers. |
| 10 */ | 10 */ |
| 11 class _KeyboardEventHandler extends EventStreamProvider<KeyEvent> { | 11 class _KeyboardEventHandler extends EventStreamProvider<KeyEvent> { |
| 12 // This code inspired by Closure's KeyHandling library. | 12 // This code inspired by Closure's KeyHandling library. |
| 13 // http://closure-library.googlecode.com/svn/docs/closure_goog_events_keyhandl
er.js.source.html | 13 // http://closure-library.googlecode.com/svn/docs/closure_goog_events_keyhandl
er.js.source.html |
| 14 | 14 |
| 15 /** | 15 /** |
| 16 * The set of keys that have been pressed down without seeing their | 16 * The set of keys that have been pressed down without seeing their |
| 17 * corresponding keyup event. | 17 * corresponding keyup event. |
| 18 */ | 18 */ |
| 19 final List<KeyboardEvent> _keyDownList = <KeyboardEvent>[]; | 19 final List<KeyEvent> _keyDownList = <KeyEvent>[]; |
| 20 | 20 |
| 21 /** The type of KeyEvent we are tracking (keyup, keydown, keypress). */ | 21 /** The type of KeyEvent we are tracking (keyup, keydown, keypress). */ |
| 22 final String _type; | 22 final String _type; |
| 23 | 23 |
| 24 /** The element we are watching for events to happen on. */ | 24 /** The element we are watching for events to happen on. */ |
| 25 final EventTarget _target; | 25 final EventTarget _target; |
| 26 | 26 |
| 27 // The distance to shift from upper case alphabet Roman letters to lower case. | 27 // The distance to shift from upper case alphabet Roman letters to lower case. |
| 28 static final int _ROMAN_ALPHABET_OFFSET = "a".codeUnits[0] - "A".codeUnits[0]; | 28 static final int _ROMAN_ALPHABET_OFFSET = "a".codeUnits[0] - "A".codeUnits[0]; |
| 29 | 29 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 CustomStream<KeyEvent> forTarget(EventTarget e, {bool useCapture: false}) { | 68 CustomStream<KeyEvent> forTarget(EventTarget e, {bool useCapture: false}) { |
| 69 var handler = new _KeyboardEventHandler.initializeAllEventListeners( | 69 var handler = new _KeyboardEventHandler.initializeAllEventListeners( |
| 70 _type, e); | 70 _type, e); |
| 71 return handler._stream; | 71 return handler._stream; |
| 72 } | 72 } |
| 73 | 73 |
| 74 /** | 74 /** |
| 75 * General constructor, performs basic initialization for our improved | 75 * General constructor, performs basic initialization for our improved |
| 76 * KeyboardEvent controller. | 76 * KeyboardEvent controller. |
| 77 */ | 77 */ |
| 78 _KeyboardEventHandler(this._type): super(_EVENT_TYPE), | 78 _KeyboardEventHandler(this._type): |
| 79 _stream = new _CustomKeyEventStreamImpl('event'), _target = null; | 79 _stream = new _CustomKeyEventStreamImpl('event'), _target = null, |
| 80 super(_EVENT_TYPE); |
| 80 | 81 |
| 81 /** | 82 /** |
| 82 * Hook up all event listeners under the covers so we can estimate keycodes | 83 * Hook up all event listeners under the covers so we can estimate keycodes |
| 83 * and charcodes when they are not provided. | 84 * and charcodes when they are not provided. |
| 84 */ | 85 */ |
| 85 _KeyboardEventHandler.initializeAllEventListeners(this._type, this._target) : | 86 _KeyboardEventHandler.initializeAllEventListeners(this._type, this._target) : |
| 86 super(_EVENT_TYPE) { | 87 super(_EVENT_TYPE) { |
| 87 Element.keyDownEvent.forTarget(_target, useCapture: true).listen( | 88 Element.keyDownEvent.forTarget(_target, useCapture: true).listen( |
| 88 processKeyDown); | 89 processKeyDown); |
| 89 Element.keyPressEvent.forTarget(_target, useCapture: true).listen( | 90 Element.keyPressEvent.forTarget(_target, useCapture: true).listen( |
| (...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 372 new _KeyboardEventHandler('keypress').forTarget(target); | 373 new _KeyboardEventHandler('keypress').forTarget(target); |
| 373 | 374 |
| 374 /** Named constructor to produce a stream for onKeyUp events. */ | 375 /** Named constructor to produce a stream for onKeyUp events. */ |
| 375 static CustomStream<KeyEvent> onKeyUp(EventTarget target) => | 376 static CustomStream<KeyEvent> onKeyUp(EventTarget target) => |
| 376 new _KeyboardEventHandler('keyup').forTarget(target); | 377 new _KeyboardEventHandler('keyup').forTarget(target); |
| 377 | 378 |
| 378 /** Named constructor to produce a stream for onKeyDown events. */ | 379 /** Named constructor to produce a stream for onKeyDown events. */ |
| 379 static CustomStream<KeyEvent> onKeyDown(EventTarget target) => | 380 static CustomStream<KeyEvent> onKeyDown(EventTarget target) => |
| 380 new _KeyboardEventHandler('keydown').forTarget(target); | 381 new _KeyboardEventHandler('keydown').forTarget(target); |
| 381 } | 382 } |
| OLD | NEW |