123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330 |
- /*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- /**
- * @extends {WebInspector.View}
- * @constructor
- */
- WebInspector.Panel = function(name)
- {
- WebInspector.View.call(this);
- WebInspector.panels[name] = this;
- this.element.addStyleClass("panel");
- this.element.addStyleClass(name);
- this._panelName = name;
- this._shortcuts = /** !Object.<number, function(Event=):boolean> */ ({});
- WebInspector.settings[this._sidebarWidthSettingName()] = WebInspector.settings.createSetting(this._sidebarWidthSettingName(), undefined);
- }
- // Should by in sync with style declarations.
- WebInspector.Panel.counterRightMargin = 25;
- WebInspector.Panel.prototype = {
- get name()
- {
- return this._panelName;
- },
- show: function()
- {
- WebInspector.View.prototype.show.call(this, WebInspector.inspectorView.panelsElement());
- },
- wasShown: function()
- {
- var panelStatusBar = document.getElementById("panel-status-bar")
- var drawerViewAnchor = document.getElementById("drawer-view-anchor");
- var statusBarItems = this.statusBarItems();
- if (statusBarItems) {
- this._statusBarItemContainer = document.createElement("div");
- for (var i = 0; i < statusBarItems.length; ++i)
- this._statusBarItemContainer.appendChild(statusBarItems[i]);
- panelStatusBar.insertBefore(this._statusBarItemContainer, drawerViewAnchor);
- }
- var statusBarText = this.statusBarText();
- if (statusBarText) {
- this._statusBarTextElement = statusBarText;
- panelStatusBar.appendChild(statusBarText);
- }
- this.focus();
- },
- willHide: function()
- {
- if (this._statusBarItemContainer && this._statusBarItemContainer.parentNode)
- this._statusBarItemContainer.parentNode.removeChild(this._statusBarItemContainer);
- delete this._statusBarItemContainer;
- if (this._statusBarTextElement && this._statusBarTextElement.parentNode)
- this._statusBarTextElement.parentNode.removeChild(this._statusBarTextElement);
- delete this._statusBarTextElement;
- },
- reset: function()
- {
- this.searchCanceled();
- },
- defaultFocusedElement: function()
- {
- return this.sidebarTreeElement || this.element;
- },
- searchCanceled: function()
- {
- WebInspector.searchController.updateSearchMatchesCount(0, this);
- },
- /**
- * @param {string} query
- */
- performSearch: function(query)
- {
- // Call searchCanceled since it will reset everything we need before doing a new search.
- this.searchCanceled();
- },
- jumpToNextSearchResult: function()
- {
- },
- jumpToPreviousSearchResult: function()
- {
- },
- /**
- * @return {boolean}
- */
- canSearchAndReplace: function()
- {
- return false;
- },
- /**
- * @param {string} text
- */
- replaceSelectionWith: function(text)
- {
- },
- /**
- * @param {string} query
- * @param {string} text
- */
- replaceAllWith: function(query, text)
- {
- },
- /**
- * @return {boolean}
- */
- canFilter: function()
- {
- return false;
- },
- /**
- * @param {string} query
- */
- performFilter: function(query)
- {
- },
- /**
- * @param {Element=} parentElement
- * @param {string=} position
- * @param {number=} defaultWidth
- * @param {number=} defaultHeight
- */
- createSidebarView: function(parentElement, position, defaultWidth, defaultHeight)
- {
- if (this.splitView)
- return;
- if (!parentElement)
- parentElement = this.element;
- this.splitView = new WebInspector.SidebarView(position, this._sidebarWidthSettingName(), defaultWidth, defaultHeight);
- this.splitView.show(parentElement);
- this.splitView.addEventListener(WebInspector.SidebarView.EventTypes.Resized, this.sidebarResized.bind(this));
- this.sidebarElement = this.splitView.sidebarElement;
- },
- /**
- * @param {Element=} parentElement
- * @param {string=} position
- * @param {number=} defaultWidth
- */
- createSidebarViewWithTree: function(parentElement, position, defaultWidth)
- {
- if (this.splitView)
- return;
- this.createSidebarView(parentElement, position);
- this.sidebarTreeElement = document.createElement("ol");
- this.sidebarTreeElement.className = "sidebar-tree";
- this.splitView.sidebarElement.appendChild(this.sidebarTreeElement);
- this.splitView.sidebarElement.addStyleClass("sidebar");
- this.sidebarTree = new TreeOutline(this.sidebarTreeElement);
- this.sidebarTree.panel = this;
- },
- _sidebarWidthSettingName: function()
- {
- return this._panelName + "SidebarWidth";
- },
- /**
- * @param {WebInspector.Event} event
- */
- sidebarResized: function(event)
- {
- },
- statusBarResized: function()
- {
- },
- /**
- * @param {Element} anchor
- * @return {boolean}
- */
- canShowAnchorLocation: function(anchor)
- {
- return false;
- },
- /**
- * @param {Element} anchor
- */
- showAnchorLocation: function(anchor)
- {
- },
- elementsToRestoreScrollPositionsFor: function()
- {
- return [];
- },
- /**
- * @param {KeyboardEvent} event
- */
- handleShortcut: function(event)
- {
- var shortcutKey = WebInspector.KeyboardShortcut.makeKeyFromEvent(event);
- var handler = this._shortcuts[shortcutKey];
- if (handler && handler(event))
- event.handled = true;
- },
- /**
- * @param {!Array.<!WebInspector.KeyboardShortcut.Descriptor>} keys
- * @param {function(Event=):boolean} handler
- */
- registerShortcuts: function(keys, handler)
- {
- for (var i = 0; i < keys.length; ++i)
- this._shortcuts[keys[i].key] = handler;
- },
- __proto__: WebInspector.View.prototype
- }
- /**
- * @constructor
- * @param {string} name
- * @param {string} title
- * @param {string=} className
- * @param {string=} scriptName
- * @param {WebInspector.Panel=} panel
- */
- WebInspector.PanelDescriptor = function(name, title, className, scriptName, panel)
- {
- this._name = name;
- this._title = title;
- this._className = className;
- this._scriptName = scriptName;
- this._panel = panel;
- }
- WebInspector.PanelDescriptor.prototype = {
- /**
- * @return {string}
- */
- name: function()
- {
- return this._name;
- },
- /**
- * @return {string}
- */
- title: function()
- {
- return this._title;
- },
- /**
- * @return {string}
- */
- iconURL: function()
- {
- return this._iconURL;
- },
- /**
- * @param {string} iconURL
- */
- setIconURL: function(iconURL)
- {
- this._iconURL = iconURL;
- },
- /**
- * @return {WebInspector.Panel}
- */
- panel: function()
- {
- if (this._panel)
- return this._panel;
- if (this._scriptName)
- loadScript(this._scriptName);
- this._panel = new WebInspector[this._className];
- return this._panel;
- },
- registerShortcuts: function() {}
- }
|