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

Side by Side Diff: ui/webui/resources/js/cr/ui/command.js

Issue 2104103002: Convert Event#keyIdentifier (deprecated) to Event#key (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Patch file manager test Created 4 years, 5 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview A command is an abstraction of an action a user can do in the 6 * @fileoverview A command is an abstraction of an action a user can do in the
7 * UI. 7 * UI.
8 * 8 *
9 * When the focus changes in the document for each command a canExecute event 9 * When the focus changes in the document for each command a canExecute event
10 * is dispatched on the active element. By listening to this event you can 10 * is dispatched on the active element. By listening to this event you can
11 * enable and disable the command by setting the event.canExecute property. 11 * enable and disable the command by setting the event.canExecute property.
12 * 12 *
13 * When a command is executed a command event is dispatched on the active 13 * When a command is executed a command event is dispatched on the active
14 * element. Note that you should stop the propagation after you have handled the 14 * element. Note that you should stop the propagation after you have handled the
15 * command if there might be other command listeners higher up in the DOM tree. 15 * command if there might be other command listeners higher up in the DOM tree.
16 */ 16 */
17 17
18 cr.define('cr.ui', function() { 18 cr.define('cr.ui', function() {
19 19
20 /** 20 /**
21 * This is used to identify keyboard shortcuts. 21 * This is used to identify keyboard shortcuts.
22 * @param {string} shortcut The text used to describe the keys for this 22 * @param {string} shortcut The text used to describe the keys for this
23 * keyboard shortcut. 23 * keyboard shortcut.
24 * @constructor 24 * @constructor
25 */ 25 */
26 function KeyboardShortcut(shortcut) { 26 function KeyboardShortcut(shortcut) {
27 var mods = {}; 27 var mods = {};
28 var ident = ''; 28 var ident = '';
29 shortcut.split('-').forEach(function(part) { 29 shortcut.split('|').forEach(function(part) {
30 var partLc = part.toLowerCase(); 30 var partLc = part.toLowerCase();
31 switch (partLc) { 31 switch (partLc) {
32 case 'alt': 32 case 'alt':
33 case 'ctrl': 33 case 'ctrl':
34 case 'meta': 34 case 'meta':
35 case 'shift': 35 case 'shift':
36 mods[partLc + 'Key'] = true; 36 mods[partLc + 'Key'] = true;
37 break; 37 break;
38 default: 38 default:
39 if (ident) 39 if (ident)
40 throw Error('Invalid shortcut'); 40 throw Error('Invalid shortcut');
41 ident = part; 41 ident = part;
42 } 42 }
43 }); 43 });
44 44
45 this.ident_ = ident; 45 this.ident_ = ident;
46 this.mods_ = mods; 46 this.mods_ = mods;
47 } 47 }
48 48
49 KeyboardShortcut.prototype = { 49 KeyboardShortcut.prototype = {
50 /** 50 /**
51 * Whether the keyboard shortcut object matches a keyboard event. 51 * Whether the keyboard shortcut object matches a keyboard event.
52 * @param {!Event} e The keyboard event object. 52 * @param {!Event} e The keyboard event object.
53 * @return {boolean} Whether we found a match or not. 53 * @return {boolean} Whether we found a match or not.
54 */ 54 */
55 matchesEvent: function(e) { 55 matchesEvent: function(e) {
56 if (e.keyIdentifier == this.ident_) { 56 if (e.key == this.ident_) {
57 // All keyboard modifiers needs to match. 57 // All keyboard modifiers needs to match.
58 var mods = this.mods_; 58 var mods = this.mods_;
59 return ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].every(function(k) { 59 return ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].every(function(k) {
60 return e[k] == !!mods[k]; 60 return e[k] == !!mods[k];
61 }); 61 });
62 } 62 }
63 return false; 63 return false;
64 } 64 }
65 }; 65 };
66 66
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 * command can be executed or not. 107 * command can be executed or not.
108 * @param {Node=} opt_node Node for which to actuate command state. 108 * @param {Node=} opt_node Node for which to actuate command state.
109 */ 109 */
110 canExecuteChange: function(opt_node) { 110 canExecuteChange: function(opt_node) {
111 dispatchCanExecuteEvent(this, 111 dispatchCanExecuteEvent(this,
112 opt_node || this.ownerDocument.activeElement); 112 opt_node || this.ownerDocument.activeElement);
113 }, 113 },
114 114
115 /** 115 /**
116 * The keyboard shortcut that triggers the command. This is a string 116 * The keyboard shortcut that triggers the command. This is a string
117 * consisting of a keyIdentifier (as reported by WebKit in keydown) as 117 * consisting of a key (as reported by WebKit in keydown) as
118 * well as optional key modifiers joinded with a '-'. 118 * well as optional key modifiers joinded with a '|'.
119 * 119 *
120 * Multiple keyboard shortcuts can be provided by separating them by 120 * Multiple keyboard shortcuts can be provided by separating them by
121 * whitespace. 121 * whitespace.
122 * 122 *
123 * For example: 123 * For example:
124 * "F1" 124 * "F1"
125 * "U+0008-Meta" for Apple command backspace. 125 * "Backspace|Meta" for Apple command backspace.
126 * "U+0041-Ctrl" for Control A 126 * "a|Ctrl" for Control A
127 * "U+007F U+0008-Meta" for Delete and Command Backspace 127 * "Delete Backspace|Meta" for Delete and Command Backspace
128 * 128 *
129 * @type {string} 129 * @type {string}
130 */ 130 */
131 shortcut_: '', 131 shortcut_: '',
132 get shortcut() { 132 get shortcut() {
133 return this.shortcut_; 133 return this.shortcut_;
134 }, 134 },
135 set shortcut(shortcut) { 135 set shortcut(shortcut) {
136 var oldShortcut = this.shortcut_; 136 var oldShortcut = this.shortcut_;
137 if (shortcut !== oldShortcut) { 137 if (shortcut !== oldShortcut) {
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 this.preventDefault(); 321 this.preventDefault();
322 } 322 }
323 }; 323 };
324 324
325 // Export 325 // Export
326 return { 326 return {
327 Command: Command, 327 Command: Command,
328 CanExecuteEvent: CanExecuteEvent 328 CanExecuteEvent: CanExecuteEvent
329 }; 329 };
330 }); 330 });
OLDNEW
« no previous file with comments | « ui/webui/resources/js/cr/ui/autocomplete_list.js ('k') | ui/webui/resources/js/cr/ui/context_menu_handler.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698