hot_key.html revision 4a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724
1<!DOCTYPE html>
2<!--
3Copyright (c) 2014 The Chromium Authors. All rights reserved.
4Use of this source code is governed by a BSD-style license that can be
5found in the LICENSE file.
6-->
7<link rel="import" href="/tracing/base/guid.html">
8<script>
9'use strict';
10
11tr.exportTo('tr.ui.b', function() {
12  function HotKey(dict) {
13    if (dict.eventType === undefined)
14      throw new Error('eventType must be given');
15    if (dict.keyCode === undefined && dict.keyCodes === undefined)
16      throw new Error('keyCode or keyCodes must be given');
17    if (dict.keyCode !== undefined && dict.keyCodes !== undefined)
18      throw new Error('Only keyCode or keyCodes can be given');
19    if (dict.callback === undefined)
20      throw new Error('callback must be given');
21
22    this.eventType_ = dict.eventType;
23    this.keyCodes_ = [];
24
25    if (dict.keyCode)
26      this.pushKeyCode_(dict.keyCode);
27    else if (dict.keyCodes) {
28      dict.keyCodes.forEach(this.pushKeyCode_, this);
29    }
30
31    this.useCapture_ = !!dict.useCapture;
32    this.callback_ = dict.callback;
33    this.thisArg_ = dict.thisArg !== undefined ? dict.thisArg : undefined;
34
35    this.helpText_ = dict.helpText !== undefined ? dict.helpText : undefined;
36  }
37
38  HotKey.prototype = {
39    get eventType() {
40      return this.eventType_;
41    },
42
43    get keyCodes() {
44      return this.keyCodes_;
45    },
46
47    get helpText() {
48      return this.helpText_;
49    },
50
51    call: function(e) {
52      this.callback_.call(this.thisArg_, e);
53    },
54
55    pushKeyCode_: function(keyCode) {
56      this.keyCodes_.push(keyCode);
57    }
58  };
59
60  return {
61    HotKey: HotKey
62  };
63});
64</script>
65