15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2007, 2008 Apple Inc.  All rights reserved.
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met:
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1.  Redistributions of source code must retain the above copyright
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     notice, this list of conditions and the following disclaimer.
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2.  Redistributions in binary form must reproduce the above copyright
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     notice, this list of conditions and the following disclaimer in the
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     documentation and/or other materials provided with the distribution.
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     its contributors may be used to endorse or promote products derived
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *     from this software without specific prior written permission.
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/**
305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {WebInspector.View}
31591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @implements {WebInspector.Searchable}
325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor
335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.Panel = function(name)
355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    WebInspector.View.call(this);
375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    WebInspector.panels[name] = this;
385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    this.element.addStyleClass("panel");
405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    this.element.addStyleClass(name);
415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    this._panelName = name;
425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
43926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    this._shortcuts = /** !Object.<number, function(Event=):boolean> */ ({});
445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    WebInspector.settings[this._sidebarWidthSettingName()] = WebInspector.settings.createSetting(this._sidebarWidthSettingName(), undefined);
465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Should by in sync with style declarations.
495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.Panel.counterRightMargin = 25;
505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
51591b958dee2cf159d33a0b931e6231072eaf38d5Ben MurdochWebInspector.Panel._minimalSearchQuerySize = 3;
52591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch
535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.Panel.prototype = {
545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    get name()
555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return this._panelName;
575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    show: function()
605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        WebInspector.View.prototype.show.call(this, WebInspector.inspectorView.panelsElement());
625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    wasShown: function()
655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
66926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        var panelStatusBar = document.getElementById("panel-status-bar")
67926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        var drawerViewAnchor = document.getElementById("drawer-view-anchor");
685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var statusBarItems = this.statusBarItems;
695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if (statusBarItems) {
705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)            this._statusBarItemContainer = document.createElement("div");
715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)            for (var i = 0; i < statusBarItems.length; ++i)
725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)                this._statusBarItemContainer.appendChild(statusBarItems[i]);
73926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)            panelStatusBar.insertBefore(this._statusBarItemContainer, drawerViewAnchor);
74926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        }
75926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        var statusBarText = this.statusBarText();
76926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        if (statusBarText) {
77926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)            this._statusBarTextElement = statusBarText;
78926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)            panelStatusBar.appendChild(statusBarText);
795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        }
805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        this.focus();
825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    willHide: function()
855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
86591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch        if (this._statusBarItemContainer)
87591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch            this._statusBarItemContainer.remove();
885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        delete this._statusBarItemContainer;
89926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
90591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch        if (this._statusBarTextElement)
91591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch            this._statusBarTextElement.remove();
92926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        delete this._statusBarTextElement;
935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    reset: function()
965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        this.searchCanceled();
985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    defaultFocusedElement: function()
1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return this.sidebarTreeElement || this.element;
1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    searchCanceled: function()
1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        WebInspector.searchController.updateSearchMatchesCount(0, this);
1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    /**
1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     * @param {string} query
112591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch     * @param {boolean} shouldJump
1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     */
114591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    performSearch: function(query, shouldJump)
1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        // Call searchCanceled since it will reset everything we need before doing a new search.
1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        this.searchCanceled();
1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
120591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    /**
121591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch     * @return {number}
122591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch     */
123591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    minimalSearchQuerySize: function()
124591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    {
125591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch        return WebInspector.Panel._minimalSearchQuerySize;
126591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    },
127591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch
1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    jumpToNextSearchResult: function()
1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    jumpToPreviousSearchResult: function()
1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    /**
1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     * @return {boolean}
1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     */
1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    canSearchAndReplace: function()
1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return false;
1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    /**
1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     * @param {string} text
1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     */
1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    replaceSelectionWith: function(text)
1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    /**
1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     * @param {string} query
1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     * @param {string} text
1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     */
1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    replaceAllWith: function(query, text)
1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    /**
1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     * @return {boolean}
1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     */
1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    canFilter: function()
1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return false;
1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    /**
1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     * @param {string} query
1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     */
1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    performFilter: function(query)
1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    /**
175591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch     * @return {boolean}
176591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch     */
177591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    canSetFooterElement: function()
178591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    {
179591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch        return false;
180591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    },
181591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch
182591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    /**
183591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch     * @param {?Element} element
184591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch     */
185591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    setFooterElement: function(element)
186591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    {
187591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    },
188591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch
189591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    /**
1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     * @param {Element=} parentElement
1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     * @param {string=} position
1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     * @param {number=} defaultWidth
193926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)     * @param {number=} defaultHeight
1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     */
195926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    createSidebarView: function(parentElement, position, defaultWidth, defaultHeight)
1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
1975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if (this.splitView)
1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)            return;
1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if (!parentElement)
2015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)            parentElement = this.element;
2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
203926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        this.splitView = new WebInspector.SidebarView(position, this._sidebarWidthSettingName(), defaultWidth, defaultHeight);
2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        this.splitView.show(parentElement);
2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        this.splitView.addEventListener(WebInspector.SidebarView.EventTypes.Resized, this.sidebarResized.bind(this));
2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        this.sidebarElement = this.splitView.sidebarElement;
2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    /**
2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     * @param {Element=} parentElement
2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     * @param {string=} position
2135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     * @param {number=} defaultWidth
2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     */
2155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    createSidebarViewWithTree: function(parentElement, position, defaultWidth)
2165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
2175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if (this.splitView)
2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)            return;
2195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        this.createSidebarView(parentElement, position);
2215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        this.sidebarTreeElement = document.createElement("ol");
2235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        this.sidebarTreeElement.className = "sidebar-tree";
2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        this.splitView.sidebarElement.appendChild(this.sidebarTreeElement);
2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        this.splitView.sidebarElement.addStyleClass("sidebar");
2265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        this.sidebarTree = new TreeOutline(this.sidebarTreeElement);
2285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        this.sidebarTree.panel = this;
2295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
2305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    _sidebarWidthSettingName: function()
2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
2335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return this._panelName + "SidebarWidth";
2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    // Should be implemented by ancestors.
2375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    get statusBarItems()
2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
2405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
242926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    /**
243926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)     * @param {WebInspector.Event} event
244926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)     */
245926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    sidebarResized: function(event)
2465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
2475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
2485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    statusBarResized: function()
2505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
2515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
2525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    /**
2545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     * @param {Element} anchor
2555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     * @return {boolean}
2565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     */
2575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    canShowAnchorLocation: function(anchor)
2585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
2595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return false;
2605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
2615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    /**
2635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     * @param {Element} anchor
2645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     */
2655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    showAnchorLocation: function(anchor)
2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
2675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
2685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    elementsToRestoreScrollPositionsFor: function()
2705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
2715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return [];
2725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
2735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
274926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    /**
275926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)     * @param {KeyboardEvent} event
276926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)     */
2775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    handleShortcut: function(event)
2785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
2795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var shortcutKey = WebInspector.KeyboardShortcut.makeKeyFromEvent(event);
2805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        var handler = this._shortcuts[shortcutKey];
281926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        if (handler && handler(event))
2825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)            event.handled = true;
2835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
285926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    /**
286926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)     * @param {!Array.<!WebInspector.KeyboardShortcut.Descriptor>} keys
287926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)     * @param {function(Event=):boolean} handler
288926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)     */
289926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    registerShortcuts: function(keys, handler)
2905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
291926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        for (var i = 0; i < keys.length; ++i)
292926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)            this._shortcuts[keys[i].key] = handler;
2935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
2945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    __proto__: WebInspector.View.prototype
2965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
2975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/**
2995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor
3005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} name
3015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} title
3025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string=} className
3035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string=} scriptName
3045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {WebInspector.Panel=} panel
3055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
3065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.PanelDescriptor = function(name, title, className, scriptName, panel)
3075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
3085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    this._name = name;
3095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    this._title = title;
3105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    this._className = className;
3115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    this._scriptName = scriptName;
3125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    this._panel = panel;
3135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
3145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.PanelDescriptor.prototype = {
3165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    /**
3175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     * @return {string}
3185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     */
3195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    name: function()
3205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
3215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return this._name;
3225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
3235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    /**
3255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     * @return {string}
3265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     */
3275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    title: function()
3285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
3295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return this._title;
3305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    },
3315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
3325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    /**
3335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     * @return {WebInspector.Panel}
3345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)     */
3355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    panel: function()
3365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
3375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if (this._panel)
3385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)            return this._panel;
3395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        if (this._scriptName)
340926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)            loadScript(this._scriptName);
3415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        this._panel = new WebInspector[this._className];
3425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)        return this._panel;
343926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    },
344926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
345926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    registerShortcuts: function() {}
3465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
347