1 /* 2 * Copyright (C) 2013 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 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 11 * 2. Redistributions in binary form must reproduce the above 12 * copyright notice, this list of conditions and the following disclaimer 13 * in the documentation and/or other materials provided with the 14 * distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. AND ITS CONTRIBUTORS 17 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 18 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 19 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GOOGLE INC. 20 * OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 21 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 /** 30 * @constructor 31 */ 32 WebInspector.InspectElementModeController = function() 33 { 34 this.toggleSearchButton = new WebInspector.StatusBarButton(WebInspector.UIString("Select an element in the page to inspect it."), "node-search-status-bar-item"); 35 this.toggleSearchButton.addEventListener("click", this.toggleSearch, this); 36 this._shortcut = WebInspector.InspectElementModeController.createShortcut(); 37 } 38 39 WebInspector.InspectElementModeController.createShortcut = function() 40 { 41 return WebInspector.KeyboardShortcut.makeDescriptor("c", WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta | WebInspector.KeyboardShortcut.Modifiers.Shift); 42 } 43 44 WebInspector.InspectElementModeController.prototype = { 45 enabled: function() 46 { 47 return this.toggleSearchButton.toggled; 48 }, 49 50 disable: function() 51 { 52 if (this.enabled()) 53 this.toggleSearch(); 54 }, 55 56 toggleSearch: function() 57 { 58 var enabled = !this.enabled(); 59 /** 60 * @param {?Protocol.Error} error 61 */ 62 function callback(error) 63 { 64 if (!error) 65 this.toggleSearchButton.toggled = enabled; 66 } 67 WebInspector.domAgent.setInspectModeEnabled(enabled, WebInspector.settings.showShadowDOM.get(), callback.bind(this)); 68 }, 69 70 /** 71 * @param {KeyboardEvent} event 72 * @return {boolean} 73 */ 74 handleShortcut: function(event) 75 { 76 if (WebInspector.KeyboardShortcut.makeKeyFromEvent(event) !== this._shortcut.key) 77 return false; 78 this.toggleSearch(); 79 event.consume(true); 80 return true; 81 } 82 } 83