| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 touch; | 5 part of touch; |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * Common events related helpers. | 8 * Common events related helpers. |
| 9 */ | 9 */ |
| 10 class EventUtil { | 10 class EventUtil { |
| 11 | |
| 12 /** | 11 /** |
| 13 * Add an event listener to an element. | 12 * Add an event listener to an element. |
| 14 * The event callback is specified by [handler]. | 13 * The event callback is specified by [handler]. |
| 15 * If [capture] is true, the listener gets events on the capture phase. | 14 * If [capture] is true, the listener gets events on the capture phase. |
| 16 * If [removeHandlerOnFocus] is true the handler is removed when there is any | 15 * If [removeHandlerOnFocus] is true the handler is removed when there is any |
| 17 * focus event, and added back on blur events. | 16 * focus event, and added back on blur events. |
| 18 */ | 17 */ |
| 19 static void observe(/*Element or Document*/ element, | 18 static void observe( |
| 20 Stream stream, Function handler, | 19 /*Element or Document*/ element, Stream stream, Function handler, |
| 21 [bool removeHandlerOnFocus = false]) { | 20 [bool removeHandlerOnFocus = false]) { |
| 22 var subscription = stream.listen(handler); | 21 var subscription = stream.listen(handler); |
| 23 // TODO(jacobr): this remove on focus behavior seems really ugly. | 22 // TODO(jacobr): this remove on focus behavior seems really ugly. |
| 24 if (removeHandlerOnFocus) { | 23 if (removeHandlerOnFocus) { |
| 25 element.onFocus.listen((e) { subscription.cancel(); }); | 24 element.onFocus.listen((e) { |
| 26 element.onBlur.listen((e) { subscription.cancel(); }); | 25 subscription.cancel(); |
| 26 }); |
| 27 element.onBlur.listen((e) { |
| 28 subscription.cancel(); |
| 29 }); |
| 27 } | 30 } |
| 28 } | 31 } |
| 29 | 32 |
| 30 /** | 33 /** |
| 31 * Clear the keyboard focus of the currently focused element (if there is | 34 * Clear the keyboard focus of the currently focused element (if there is |
| 32 * one). If there is no currently focused element then this function will do | 35 * one). If there is no currently focused element then this function will do |
| 33 * nothing. For most browsers this will cause the keyboard to be dismissed. | 36 * nothing. For most browsers this will cause the keyboard to be dismissed. |
| 34 */ | 37 */ |
| 35 static void blurFocusedElement() { | 38 static void blurFocusedElement() { |
| 36 Element focusedEl = document.querySelector("*:focus"); | 39 Element focusedEl = document.querySelector("*:focus"); |
| 37 if (focusedEl != null) { | 40 if (focusedEl != null) { |
| 38 focusedEl.blur(); | 41 focusedEl.blur(); |
| 39 } | 42 } |
| 40 } | 43 } |
| 41 } | 44 } |
| OLD | NEW |