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 */ 32WebInspector.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 39WebInspector.InspectElementModeController.createShortcut = function() 40{ 41 return WebInspector.KeyboardShortcut.makeDescriptor("c", WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta | WebInspector.KeyboardShortcut.Modifiers.Shift); 42} 43 44WebInspector.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 /** 61 * @param {?Protocol.Error} error 62 * @this {WebInspector.InspectElementModeController} 63 */ 64 function callback(error) 65 { 66 if (!error) 67 this.toggleSearchButton.toggled = enabled; 68 } 69 WebInspector.domAgent.setInspectModeEnabled(enabled, WebInspector.settings.showShadowDOM.get(), callback.bind(this)); 70 }, 71 72 /** 73 * @param {!KeyboardEvent} event 74 * @return {boolean} 75 */ 76 handleShortcut: function(event) 77 { 78 if (WebInspector.KeyboardShortcut.makeKeyFromEvent(event) !== this._shortcut.key) 79 return false; 80 this.toggleSearch(); 81 event.consume(true); 82 return true; 83 } 84} 85 86/** @type {!WebInspector.InspectElementModeController} */ 87WebInspector.inspectElementModeController; 88