home *** CD-ROM | disk | FTP | other *** search
/ Computer Active Guide 2009 July / CAG7.ISO / Internetas / SafariSetup.exe / AppleApplicationSupport.msi / WebKit.resources_inspector_ContextMenu.js < prev    next >
Encoding:
Text File  |  2010-06-03  |  2.9 KB  |  84 lines

  1. /*
  2.  * Copyright (C) 2009 Google Inc. All rights reserved.
  3.  *
  4.  * Redistribution and use in source and binary forms, with or without
  5.  * modification, are permitted provided that the following conditions are
  6.  * met:
  7.  *
  8.  *     * Redistributions of source code must retain the above copyright
  9.  * notice, this list of conditions and the following disclaimer.
  10.  *     * Redistributions in binary form must reproduce the above
  11.  * copyright notice, this list of conditions and the following disclaimer
  12.  * in the documentation and/or other materials provided with the
  13.  * distribution.
  14.  *     * Neither the name of Google Inc. nor the names of its
  15.  * contributors may be used to endorse or promote products derived from
  16.  * this software without specific prior written permission.
  17.  *
  18.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  19.  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  20.  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  21.  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  22.  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  23.  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  24.  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  25.  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  26.  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  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.
  29.  */
  30.  
  31. WebInspector.ContextMenu = function() {
  32.     this._items = [];
  33.     this._handlers = {};
  34. }
  35.  
  36. WebInspector.ContextMenu.prototype = {
  37.     show: function(event)
  38.     {
  39.         // Remove trailing separator.
  40.         while (this._items.length > 0 && !("id" in this._items[this._items.length - 1]))
  41.             this._items.splice(this._items.length - 1, 1);
  42.  
  43.         if (this._items.length) {
  44.             WebInspector._contextMenu = this;
  45.             InspectorFrontendHost.showContextMenu(event, this._items);
  46.         }
  47.     },
  48.  
  49.     appendItem: function(label, handler)
  50.     {
  51.         var id = this._items.length;
  52.         this._items.push({id: id, label: label});
  53.         this._handlers[id] = handler;
  54.     },
  55.  
  56.     appendSeparator: function()
  57.     {
  58.         // No separator dupes allowed.
  59.         if (this._items.length === 0)
  60.             return;
  61.         if (!("id" in this._items[this._items.length - 1]))
  62.             return;
  63.         this._items.push({});
  64.     },
  65.  
  66.     _itemSelected: function(id)
  67.     {
  68.         if (this._handlers[id])
  69.             this._handlers[id].call(this);
  70.     }
  71. }
  72.  
  73. WebInspector.contextMenuItemSelected = function(id)
  74. {
  75.     if (WebInspector._contextMenu)
  76.         WebInspector._contextMenu._itemSelected(id);
  77. }
  78.  
  79. WebInspector.contextMenuCleared = function()
  80. {
  81.     // FIXME: Unfortunately, contextMenuCleared is invoked between show and item selected
  82.     // so we can't delete last menu object from WebInspector. Fix the contract.
  83. }
  84.