| 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 12 matching lines...) Expand all Loading... |
| 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 29 */ | 29 */ |
| 30 | 30 |
| 31 /** | 31 /** |
| 32 * @constructor | 32 * @constructor |
| 33 * @param {!WebInspector.ContextSubMenuItem} topLevelMenu | 33 * @param {!WebInspector.ContextMenu} topLevelMenu |
| 34 * @param {string} type | 34 * @param {string} type |
| 35 * @param {string=} label | 35 * @param {string=} label |
| 36 * @param {boolean=} disabled | 36 * @param {boolean=} disabled |
| 37 * @param {boolean=} checked | 37 * @param {boolean=} checked |
| 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; |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 return { type: "separator" }; | 89 return { type: "separator" }; |
| 90 case "checkbox": | 90 case "checkbox": |
| 91 return { type: "checkbox", id: this._id, label: this._label, checked
: !!this._checked, enabled: !this._disabled }; | 91 return { type: "checkbox", id: this._id, label: this._label, checked
: !!this._checked, enabled: !this._disabled }; |
| 92 } | 92 } |
| 93 } | 93 } |
| 94 } | 94 } |
| 95 | 95 |
| 96 /** | 96 /** |
| 97 * @constructor | 97 * @constructor |
| 98 * @extends {WebInspector.ContextMenuItem} | 98 * @extends {WebInspector.ContextMenuItem} |
| 99 * @param topLevelMenu | 99 * @param {!WebInspector.ContextMenu} topLevelMenu |
| 100 * @param {string=} label | 100 * @param {string=} label |
| 101 * @param {boolean=} disabled | 101 * @param {boolean=} disabled |
| 102 */ | 102 */ |
| 103 WebInspector.ContextSubMenuItem = function(topLevelMenu, label, disabled) | 103 WebInspector.ContextSubMenuItem = function(topLevelMenu, label, disabled) |
| 104 { | 104 { |
| 105 WebInspector.ContextMenuItem.call(this, topLevelMenu, "subMenu", label, disa
bled); | 105 WebInspector.ContextMenuItem.call(this, topLevelMenu, "subMenu", label, disa
bled); |
| 106 /** @type {!Array.<!WebInspector.ContextMenuItem>} */ | 106 /** @type {!Array.<!WebInspector.ContextMenuItem>} */ |
| 107 this._items = []; | 107 this._items = []; |
| 108 } | 108 } |
| 109 | 109 |
| 110 WebInspector.ContextSubMenuItem.prototype = { | 110 WebInspector.ContextSubMenuItem.prototype = { |
| 111 /** | 111 /** |
| 112 * @param {string} label | 112 * @param {string} label |
| 113 * @param {function(?)} handler | 113 * @param {function(?)} handler |
| 114 * @param {boolean=} disabled | 114 * @param {boolean=} disabled |
| 115 * @return {!WebInspector.ContextMenuItem} | 115 * @return {!WebInspector.ContextMenuItem} |
| 116 */ | 116 */ |
| 117 appendItem: function(label, handler, disabled) | 117 appendItem: function(label, handler, disabled) |
| 118 { | 118 { |
| 119 var item = new WebInspector.ContextMenuItem(this._contextMenu, "item", l
abel, disabled); | 119 var item = new WebInspector.ContextMenuItem(this._contextMenu, "item", l
abel, disabled); |
| 120 this._pushItem(item); | 120 this._pushItem(item); |
| 121 this._contextMenu._setHandler(item.id(), handler); | 121 this._contextMenu._setHandler(item.id(), handler); |
| 122 return item; | 122 return item; |
| 123 }, | 123 }, |
| 124 | 124 |
| 125 /** | 125 /** |
| 126 * @param {string} label | 126 * @param {string} label |
| 127 * @param {boolean=} disabled | 127 * @param {boolean=} disabled |
| 128 * @return {!WebInspector.ContextMenuItem} | 128 * @return {!WebInspector.ContextSubMenuItem} |
| 129 */ | 129 */ |
| 130 appendSubMenuItem: function(label, disabled) | 130 appendSubMenuItem: function(label, disabled) |
| 131 { | 131 { |
| 132 var item = new WebInspector.ContextSubMenuItem(this._contextMenu, label,
disabled); | 132 var item = new WebInspector.ContextSubMenuItem(this._contextMenu, label,
disabled); |
| 133 this._pushItem(item); | 133 this._pushItem(item); |
| 134 return item; | 134 return item; |
| 135 }, | 135 }, |
| 136 | 136 |
| 137 /** | 137 /** |
| 138 * @param {string} label |
| 139 * @param {function()} handler |
| 140 * @param {boolean=} checked |
| 138 * @param {boolean=} disabled | 141 * @param {boolean=} disabled |
| 139 * @return {!WebInspector.ContextMenuItem} | 142 * @return {!WebInspector.ContextMenuItem} |
| 140 */ | 143 */ |
| 141 appendCheckboxItem: function(label, handler, checked, disabled) | 144 appendCheckboxItem: function(label, handler, checked, disabled) |
| 142 { | 145 { |
| 143 var item = new WebInspector.ContextMenuItem(this._contextMenu, "checkbox
", label, disabled, checked); | 146 var item = new WebInspector.ContextMenuItem(this._contextMenu, "checkbox
", label, disabled, checked); |
| 144 this._pushItem(item); | 147 this._pushItem(item); |
| 145 this._contextMenu._setHandler(item.id(), handler); | 148 this._contextMenu._setHandler(item.id(), handler); |
| 146 return item; | 149 return item; |
| 147 }, | 150 }, |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 result.subItems.push(this._items[i]._buildDescriptor()); | 182 result.subItems.push(this._items[i]._buildDescriptor()); |
| 180 return result; | 183 return result; |
| 181 }, | 184 }, |
| 182 | 185 |
| 183 __proto__: WebInspector.ContextMenuItem.prototype | 186 __proto__: WebInspector.ContextMenuItem.prototype |
| 184 } | 187 } |
| 185 | 188 |
| 186 /** | 189 /** |
| 187 * @constructor | 190 * @constructor |
| 188 * @extends {WebInspector.ContextSubMenuItem} | 191 * @extends {WebInspector.ContextSubMenuItem} |
| 192 * @param {?Event} event |
| 189 */ | 193 */ |
| 190 WebInspector.ContextMenu = function(event) { | 194 WebInspector.ContextMenu = function(event) |
| 195 { |
| 191 WebInspector.ContextSubMenuItem.call(this, this, ""); | 196 WebInspector.ContextSubMenuItem.call(this, this, ""); |
| 192 this._event = event; | 197 this._event = /** @type {!Event} */ (event); |
| 193 this._handlers = {}; | 198 this._handlers = {}; |
| 194 this._id = 0; | 199 this._id = 0; |
| 195 } | 200 } |
| 196 | 201 |
| 197 /** | 202 /** |
| 198 * @param {boolean} useSoftMenu | 203 * @param {boolean} useSoftMenu |
| 199 */ | 204 */ |
| 200 WebInspector.ContextMenu.setUseSoftMenu = function(useSoftMenu) | 205 WebInspector.ContextMenu.setUseSoftMenu = function(useSoftMenu) |
| 201 { | 206 { |
| 202 WebInspector.ContextMenu._useSoftMenu = useSoftMenu; | 207 WebInspector.ContextMenu._useSoftMenu = useSoftMenu; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 220 if (WebInspector.ContextMenu._useSoftMenu) { | 225 if (WebInspector.ContextMenu._useSoftMenu) { |
| 221 var softMenu = new WebInspector.SoftContextMenu(menuObject); | 226 var softMenu = new WebInspector.SoftContextMenu(menuObject); |
| 222 softMenu.show(this._event); | 227 softMenu.show(this._event); |
| 223 } else { | 228 } else { |
| 224 InspectorFrontendHost.showContextMenu(this._event, menuObject); | 229 InspectorFrontendHost.showContextMenu(this._event, menuObject); |
| 225 } | 230 } |
| 226 this._event.consume(true); | 231 this._event.consume(true); |
| 227 } | 232 } |
| 228 }, | 233 }, |
| 229 | 234 |
| 235 /** |
| 236 * @param {number} id |
| 237 * @param {function(?)} handler |
| 238 */ |
| 230 _setHandler: function(id, handler) | 239 _setHandler: function(id, handler) |
| 231 { | 240 { |
| 232 if (handler) | 241 if (handler) |
| 233 this._handlers[id] = handler; | 242 this._handlers[id] = handler; |
| 234 }, | 243 }, |
| 235 | 244 |
| 236 _buildDescriptor: function() | 245 _buildDescriptor: function() |
| 237 { | 246 { |
| 238 var result = []; | 247 var result = []; |
| 239 for (var i = 0; i < this._items.length; ++i) | 248 for (var i = 0; i < this._items.length; ++i) |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 271 } | 280 } |
| 272 | 281 |
| 273 /** | 282 /** |
| 274 * @interface | 283 * @interface |
| 275 */ | 284 */ |
| 276 WebInspector.ContextMenu.Provider = function() { | 285 WebInspector.ContextMenu.Provider = function() { |
| 277 } | 286 } |
| 278 | 287 |
| 279 WebInspector.ContextMenu.Provider.prototype = { | 288 WebInspector.ContextMenu.Provider.prototype = { |
| 280 /** | 289 /** |
| 290 * @param {!Event} event |
| 281 * @param {!WebInspector.ContextMenu} contextMenu | 291 * @param {!WebInspector.ContextMenu} contextMenu |
| 282 * @param {!Object} target | 292 * @param {!Object} target |
| 283 */ | 293 */ |
| 284 appendApplicableItems: function(event, contextMenu, target) { } | 294 appendApplicableItems: function(event, contextMenu, target) { } |
| 285 } | 295 } |
| 286 | 296 |
| 287 WebInspector.contextMenuItemSelected = function(id) | 297 WebInspector.contextMenuItemSelected = function(id) |
| 288 { | 298 { |
| 289 if (WebInspector._contextMenu) | 299 if (WebInspector._contextMenu) |
| 290 WebInspector._contextMenu._itemSelected(id); | 300 WebInspector._contextMenu._itemSelected(id); |
| 291 } | 301 } |
| 292 | 302 |
| 293 WebInspector.contextMenuCleared = function() | 303 WebInspector.contextMenuCleared = function() |
| 294 { | 304 { |
| 295 // FIXME: Unfortunately, contextMenuCleared is invoked between show and item
selected | 305 // FIXME: Unfortunately, contextMenuCleared is invoked between show and item
selected |
| 296 // so we can't delete last menu object from WebInspector. Fix the contract. | 306 // so we can't delete last menu object from WebInspector. Fix the contract. |
| 297 } | 307 } |
| OLD | NEW |