| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 */ | 38 */ |
| 39 WebInspector.ContextMenuItem = function(topLevelMenu, type, label, disabled, che
cked) | 39 WebInspector.ContextMenuItem = function(topLevelMenu, type, label, disabled, che
cked) |
| 40 { | 40 { |
| 41 this._type = type; | 41 this._type = type; |
| 42 this._label = label; | 42 this._label = label; |
| 43 this._disabled = disabled; | 43 this._disabled = disabled; |
| 44 this._checked = checked; | 44 this._checked = checked; |
| 45 this._contextMenu = topLevelMenu; | 45 this._contextMenu = topLevelMenu; |
| 46 if (type === "item" || type === "checkbox") | 46 if (type === "item" || type === "checkbox") |
| 47 this._id = topLevelMenu._nextId(); | 47 this._id = topLevelMenu._nextId(); |
| 48 } | 48 }; |
| 49 | 49 |
| 50 WebInspector.ContextMenuItem.prototype = { | 50 WebInspector.ContextMenuItem.prototype = { |
| 51 /** | 51 /** |
| 52 * @return {number} | 52 * @return {number} |
| 53 */ | 53 */ |
| 54 id: function() | 54 id: function() |
| 55 { | 55 { |
| 56 return this._id; | 56 return this._id; |
| 57 }, | 57 }, |
| 58 | 58 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 throw new Error("Invalid item type:" + this._type); | 101 throw new Error("Invalid item type:" + this._type); |
| 102 }, | 102 }, |
| 103 | 103 |
| 104 /** | 104 /** |
| 105 * @param {string} shortcut | 105 * @param {string} shortcut |
| 106 */ | 106 */ |
| 107 setShortcut: function(shortcut) | 107 setShortcut: function(shortcut) |
| 108 { | 108 { |
| 109 this._shortcut = shortcut; | 109 this._shortcut = shortcut; |
| 110 } | 110 } |
| 111 } | 111 }; |
| 112 | 112 |
| 113 /** | 113 /** |
| 114 * @constructor | 114 * @constructor |
| 115 * @extends {WebInspector.ContextMenuItem} | 115 * @extends {WebInspector.ContextMenuItem} |
| 116 * @param {!WebInspector.ContextMenu} topLevelMenu | 116 * @param {!WebInspector.ContextMenu} topLevelMenu |
| 117 * @param {string=} label | 117 * @param {string=} label |
| 118 * @param {boolean=} disabled | 118 * @param {boolean=} disabled |
| 119 */ | 119 */ |
| 120 WebInspector.ContextSubMenuItem = function(topLevelMenu, label, disabled) | 120 WebInspector.ContextSubMenuItem = function(topLevelMenu, label, disabled) |
| 121 { | 121 { |
| 122 WebInspector.ContextMenuItem.call(this, topLevelMenu, "subMenu", label, disa
bled); | 122 WebInspector.ContextMenuItem.call(this, topLevelMenu, "subMenu", label, disa
bled); |
| 123 /** @type {!Array.<!WebInspector.ContextMenuItem>} */ | 123 /** @type {!Array.<!WebInspector.ContextMenuItem>} */ |
| 124 this._items = []; | 124 this._items = []; |
| 125 } | 125 }; |
| 126 | 126 |
| 127 WebInspector.ContextSubMenuItem.prototype = { | 127 WebInspector.ContextSubMenuItem.prototype = { |
| 128 /** | 128 /** |
| 129 * @param {string} label | 129 * @param {string} label |
| 130 * @param {function(?)} handler | 130 * @param {function(?)} handler |
| 131 * @param {boolean=} disabled | 131 * @param {boolean=} disabled |
| 132 * @return {!WebInspector.ContextMenuItem} | 132 * @return {!WebInspector.ContextMenuItem} |
| 133 */ | 133 */ |
| 134 appendItem: function(label, handler, disabled) | 134 appendItem: function(label, handler, disabled) |
| 135 { | 135 { |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 282 for (var groupName of groupWeights) { | 282 for (var groupName of groupWeights) { |
| 283 var group = groups.get(groupName); | 283 var group = groups.get(groupName); |
| 284 if (!group) | 284 if (!group) |
| 285 continue; | 285 continue; |
| 286 group.forEach(appendExtension.bind(null, this)); | 286 group.forEach(appendExtension.bind(null, this)); |
| 287 this.appendSeparator(); | 287 this.appendSeparator(); |
| 288 } | 288 } |
| 289 }, | 289 }, |
| 290 | 290 |
| 291 __proto__: WebInspector.ContextMenuItem.prototype | 291 __proto__: WebInspector.ContextMenuItem.prototype |
| 292 } | 292 }; |
| 293 | 293 |
| 294 /** | 294 /** |
| 295 * @constructor | 295 * @constructor |
| 296 * @extends {WebInspector.ContextSubMenuItem} | 296 * @extends {WebInspector.ContextSubMenuItem} |
| 297 * @param {!Event} event | 297 * @param {!Event} event |
| 298 * @param {boolean=} useSoftMenu | 298 * @param {boolean=} useSoftMenu |
| 299 * @param {number=} x | 299 * @param {number=} x |
| 300 * @param {number=} y | 300 * @param {number=} y |
| 301 */ | 301 */ |
| 302 WebInspector.ContextMenu = function(event, useSoftMenu, x, y) | 302 WebInspector.ContextMenu = function(event, useSoftMenu, x, y) |
| 303 { | 303 { |
| 304 WebInspector.ContextSubMenuItem.call(this, this, ""); | 304 WebInspector.ContextSubMenuItem.call(this, this, ""); |
| 305 /** @type {!Array.<!Promise.<!Array.<!WebInspector.ContextMenu.Provider>>>}
*/ | 305 /** @type {!Array.<!Promise.<!Array.<!WebInspector.ContextMenu.Provider>>>}
*/ |
| 306 this._pendingPromises = []; | 306 this._pendingPromises = []; |
| 307 /** @type {!Array<!Object>} */ | 307 /** @type {!Array<!Object>} */ |
| 308 this._pendingTargets = []; | 308 this._pendingTargets = []; |
| 309 this._event = event; | 309 this._event = event; |
| 310 this._useSoftMenu = !!useSoftMenu; | 310 this._useSoftMenu = !!useSoftMenu; |
| 311 this._x = x === undefined ? event.x : x; | 311 this._x = x === undefined ? event.x : x; |
| 312 this._y = y === undefined ? event.y : y; | 312 this._y = y === undefined ? event.y : y; |
| 313 this._handlers = {}; | 313 this._handlers = {}; |
| 314 this._id = 0; | 314 this._id = 0; |
| 315 /** @type {!Map<string, !WebInspector.ContextSubMenuItem>} */ | 315 /** @type {!Map<string, !WebInspector.ContextSubMenuItem>} */ |
| 316 this._namedSubMenus = new Map(); | 316 this._namedSubMenus = new Map(); |
| 317 } | 317 }; |
| 318 | 318 |
| 319 WebInspector.ContextMenu.initialize = function() | 319 WebInspector.ContextMenu.initialize = function() |
| 320 { | 320 { |
| 321 InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Event
s.SetUseSoftMenu, setUseSoftMenu); | 321 InspectorFrontendHost.events.addEventListener(InspectorFrontendHostAPI.Event
s.SetUseSoftMenu, setUseSoftMenu); |
| 322 /** | 322 /** |
| 323 * @param {!WebInspector.Event} event | 323 * @param {!WebInspector.Event} event |
| 324 */ | 324 */ |
| 325 function setUseSoftMenu(event) | 325 function setUseSoftMenu(event) |
| 326 { | 326 { |
| 327 WebInspector.ContextMenu._useSoftMenu = /** @type {boolean} */ (event.da
ta); | 327 WebInspector.ContextMenu._useSoftMenu = /** @type {boolean} */ (event.da
ta); |
| 328 } | 328 } |
| 329 } | 329 }; |
| 330 | 330 |
| 331 /** | 331 /** |
| 332 * @param {!Document} doc | 332 * @param {!Document} doc |
| 333 */ | 333 */ |
| 334 WebInspector.ContextMenu.installHandler = function(doc) | 334 WebInspector.ContextMenu.installHandler = function(doc) |
| 335 { | 335 { |
| 336 doc.body.addEventListener("contextmenu", handler, false); | 336 doc.body.addEventListener("contextmenu", handler, false); |
| 337 | 337 |
| 338 /** | 338 /** |
| 339 * @param {!Event} event | 339 * @param {!Event} event |
| 340 */ | 340 */ |
| 341 function handler(event) | 341 function handler(event) |
| 342 { | 342 { |
| 343 var contextMenu = new WebInspector.ContextMenu(event); | 343 var contextMenu = new WebInspector.ContextMenu(event); |
| 344 contextMenu.appendApplicableItems(/** @type {!Object} */ (event.deepElem
entFromPoint())); | 344 contextMenu.appendApplicableItems(/** @type {!Object} */ (event.deepElem
entFromPoint())); |
| 345 contextMenu.show(); | 345 contextMenu.show(); |
| 346 } | 346 } |
| 347 } | 347 }; |
| 348 | 348 |
| 349 WebInspector.ContextMenu.prototype = { | 349 WebInspector.ContextMenu.prototype = { |
| 350 /** | 350 /** |
| 351 * @return {number} | 351 * @return {number} |
| 352 */ | 352 */ |
| 353 _nextId: function() | 353 _nextId: function() |
| 354 { | 354 { |
| 355 return this._id++; | 355 return this._id++; |
| 356 }, | 356 }, |
| 357 | 357 |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 491 /** | 491 /** |
| 492 * @param {string} name | 492 * @param {string} name |
| 493 * @return {?WebInspector.ContextSubMenuItem} | 493 * @return {?WebInspector.ContextSubMenuItem} |
| 494 */ | 494 */ |
| 495 namedSubMenu: function(name) | 495 namedSubMenu: function(name) |
| 496 { | 496 { |
| 497 return this._namedSubMenus.get(name) || null; | 497 return this._namedSubMenus.get(name) || null; |
| 498 }, | 498 }, |
| 499 | 499 |
| 500 __proto__: WebInspector.ContextSubMenuItem.prototype | 500 __proto__: WebInspector.ContextSubMenuItem.prototype |
| 501 } | 501 }; |
| 502 | 502 |
| 503 /** | 503 /** |
| 504 * @interface | 504 * @interface |
| 505 */ | 505 */ |
| 506 WebInspector.ContextMenu.Provider = function() { | 506 WebInspector.ContextMenu.Provider = function() { |
| 507 } | 507 }; |
| 508 | 508 |
| 509 WebInspector.ContextMenu.Provider.prototype = { | 509 WebInspector.ContextMenu.Provider.prototype = { |
| 510 /** | 510 /** |
| 511 * @param {!Event} event | 511 * @param {!Event} event |
| 512 * @param {!WebInspector.ContextMenu} contextMenu | 512 * @param {!WebInspector.ContextMenu} contextMenu |
| 513 * @param {!Object} target | 513 * @param {!Object} target |
| 514 */ | 514 */ |
| 515 appendApplicableItems: function(event, contextMenu, target) { } | 515 appendApplicableItems: function(event, contextMenu, target) { } |
| 516 } | 516 }; |
| OLD | NEW |