OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Google Inc. All Rights Reserved. | 2 * Copyright (C) 2011 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 | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 return this._createSubMenu(item); | 115 return this._createSubMenu(item); |
116 | 116 |
117 var menuItemElement = createElementWithClass("div", "soft-context-menu-i
tem"); | 117 var menuItemElement = createElementWithClass("div", "soft-context-menu-i
tem"); |
118 var checkMarkElement = menuItemElement.createChild("div", "checkmark"); | 118 var checkMarkElement = menuItemElement.createChild("div", "checkmark"); |
119 if (!item.checked) | 119 if (!item.checked) |
120 checkMarkElement.style.opacity = "0"; | 120 checkMarkElement.style.opacity = "0"; |
121 | 121 |
122 if (item.element) { | 122 if (item.element) { |
123 var wrapper = menuItemElement.createChild("div", "soft-context-menu-
custom-item"); | 123 var wrapper = menuItemElement.createChild("div", "soft-context-menu-
custom-item"); |
124 wrapper.appendChild(item.element); | 124 wrapper.appendChild(item.element); |
| 125 menuItemElement._isCustom = true; |
125 return menuItemElement; | 126 return menuItemElement; |
126 } | 127 } |
127 | 128 |
128 menuItemElement.createTextChild(item.label); | 129 menuItemElement.createTextChild(item.label); |
129 menuItemElement.createChild("span", "soft-context-menu-shortcut").textCo
ntent = item.shortcut; | 130 menuItemElement.createChild("span", "soft-context-menu-shortcut").textCo
ntent = item.shortcut; |
130 | 131 |
131 menuItemElement.addEventListener("mousedown", this._menuItemMouseDown.bi
nd(this), false); | 132 menuItemElement.addEventListener("mousedown", this._menuItemMouseDown.bi
nd(this), false); |
132 menuItemElement.addEventListener("mouseup", this._menuItemMouseUp.bind(t
his), false); | 133 menuItemElement.addEventListener("mouseup", this._menuItemMouseUp.bind(t
his), false); |
133 | 134 |
134 // Manually manage hover highlight since :hover does not work in case of
click-and-hold menu invocation. | 135 // Manually manage hover highlight since :hover does not work in case of
click-and-hold menu invocation. |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
266 this._highlightedMenuItemElement.classList.add("soft-context-menu-it
em-mouse-over"); | 267 this._highlightedMenuItemElement.classList.add("soft-context-menu-it
em-mouse-over"); |
267 this._contextMenuElement.focus(); | 268 this._contextMenuElement.focus(); |
268 if (this._highlightedMenuItemElement._subItems && !this._highlighted
MenuItemElement._subMenuTimer) | 269 if (this._highlightedMenuItemElement._subItems && !this._highlighted
MenuItemElement._subMenuTimer) |
269 this._highlightedMenuItemElement._subMenuTimer = setTimeout(this
._showSubMenu.bind(this, this._highlightedMenuItemElement), 150); | 270 this._highlightedMenuItemElement._subMenuTimer = setTimeout(this
._showSubMenu.bind(this, this._highlightedMenuItemElement), 150); |
270 } | 271 } |
271 }, | 272 }, |
272 | 273 |
273 _highlightPrevious: function() | 274 _highlightPrevious: function() |
274 { | 275 { |
275 var menuItemElement = this._highlightedMenuItemElement ? this._highlight
edMenuItemElement.previousSibling : this._contextMenuElement.lastChild; | 276 var menuItemElement = this._highlightedMenuItemElement ? this._highlight
edMenuItemElement.previousSibling : this._contextMenuElement.lastChild; |
276 while (menuItemElement && menuItemElement._isSeparator) | 277 while (menuItemElement && (menuItemElement._isSeparator || menuItemEleme
nt._isCustom)) |
277 menuItemElement = menuItemElement.previousSibling; | 278 menuItemElement = menuItemElement.previousSibling; |
278 if (menuItemElement) | 279 if (menuItemElement) |
279 this._highlightMenuItem(menuItemElement); | 280 this._highlightMenuItem(menuItemElement); |
280 }, | 281 }, |
281 | 282 |
282 _highlightNext: function() | 283 _highlightNext: function() |
283 { | 284 { |
284 var menuItemElement = this._highlightedMenuItemElement ? this._highlight
edMenuItemElement.nextSibling : this._contextMenuElement.firstChild; | 285 var menuItemElement = this._highlightedMenuItemElement ? this._highlight
edMenuItemElement.nextSibling : this._contextMenuElement.firstChild; |
285 while (menuItemElement && menuItemElement._isSeparator) | 286 while (menuItemElement && (menuItemElement._isSeparator || menuItemEleme
nt._isCustom)) |
286 menuItemElement = menuItemElement.nextSibling; | 287 menuItemElement = menuItemElement.nextSibling; |
287 if (menuItemElement) | 288 if (menuItemElement) |
288 this._highlightMenuItem(menuItemElement); | 289 this._highlightMenuItem(menuItemElement); |
289 }, | 290 }, |
290 | 291 |
291 _menuKeyDown: function(event) | 292 _menuKeyDown: function(event) |
292 { | 293 { |
293 switch (event.keyIdentifier) { | 294 switch (event.keyIdentifier) { |
294 case "Up": | 295 case "Up": |
295 this._highlightPrevious(); break; | 296 this._highlightPrevious(); break; |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
372 | 373 |
373 _discardSubMenus: function() | 374 _discardSubMenus: function() |
374 { | 375 { |
375 if (this._subMenu) | 376 if (this._subMenu) |
376 this._subMenu._discardSubMenus(); | 377 this._subMenu._discardSubMenus(); |
377 this._contextMenuElement.remove(); | 378 this._contextMenuElement.remove(); |
378 if (this._parentMenu) | 379 if (this._parentMenu) |
379 delete this._parentMenu._subMenu; | 380 delete this._parentMenu._subMenu; |
380 } | 381 } |
381 } | 382 } |
OLD | NEW |