• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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