Index: chrome/resources/Inspector/Panel.js |
=================================================================== |
--- chrome/resources/Inspector/Panel.js (revision 29943) |
+++ chrome/resources/Inspector/Panel.js (working copy) |
@@ -1,273 +0,0 @@ |
-/* |
- * 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. |
- */ |
- |
-WebInspector.Panel = function() |
-{ |
- WebInspector.View.call(this); |
- |
- this.element.addStyleClass("panel"); |
-} |
- |
-WebInspector.Panel.prototype = { |
- get toolbarItem() |
- { |
- if (this._toolbarItem) |
- return this._toolbarItem; |
- |
- // Sample toolbar item as markup: |
- // <button class="toolbar-item resources toggleable"> |
- // <div class="toolbar-icon"></div> |
- // <div class="toolbar-label">Resources</div> |
- // </button> |
- |
- this._toolbarItem = document.createElement("button"); |
- this._toolbarItem.className = "toolbar-item toggleable"; |
- this._toolbarItem.panel = this; |
- |
- if ("toolbarItemClass" in this) |
- this._toolbarItem.addStyleClass(this.toolbarItemClass); |
- |
- var iconElement = document.createElement("div"); |
- iconElement.className = "toolbar-icon"; |
- this._toolbarItem.appendChild(iconElement); |
- |
- if ("toolbarItemLabel" in this) { |
- var labelElement = document.createElement("div"); |
- labelElement.className = "toolbar-label"; |
- labelElement.textContent = this.toolbarItemLabel; |
- this._toolbarItem.appendChild(labelElement); |
- } |
- |
- return this._toolbarItem; |
- }, |
- |
- show: function() |
- { |
- WebInspector.View.prototype.show.call(this); |
- |
- var statusBarItems = this.statusBarItems; |
- if (statusBarItems) { |
- this._statusBarItemContainer = document.createElement("div"); |
- for (var i = 0; i < statusBarItems.length; ++i) |
- this._statusBarItemContainer.appendChild(statusBarItems[i]); |
- document.getElementById("main-status-bar").appendChild(this._statusBarItemContainer); |
- } |
- |
- if ("_toolbarItem" in this) |
- this._toolbarItem.addStyleClass("toggled-on"); |
- |
- WebInspector.currentFocusElement = document.getElementById("main-panels"); |
- }, |
- |
- hide: function() |
- { |
- WebInspector.View.prototype.hide.call(this); |
- |
- if (this._statusBarItemContainer && this._statusBarItemContainer.parentNode) |
- this._statusBarItemContainer.parentNode.removeChild(this._statusBarItemContainer); |
- delete this._statusBarItemContainer; |
- if ("_toolbarItem" in this) |
- this._toolbarItem.removeStyleClass("toggled-on"); |
- }, |
- |
- attach: function() |
- { |
- if (!this.element.parentNode) |
- document.getElementById("main-panels").appendChild(this.element); |
- }, |
- |
- searchCanceled: function(startingNewSearch) |
- { |
- if (this._searchResults) { |
- for (var i = 0; i < this._searchResults.length; ++i) { |
- var view = this._searchResults[i]; |
- if (view.searchCanceled) |
- view.searchCanceled(); |
- delete view.currentQuery; |
- } |
- } |
- |
- WebInspector.updateSearchMatchesCount(0, this); |
- |
- if (this._currentSearchChunkIntervalIdentifier) { |
- clearInterval(this._currentSearchChunkIntervalIdentifier); |
- delete this._currentSearchChunkIntervalIdentifier; |
- } |
- |
- this._totalSearchMatches = 0; |
- this._currentSearchResultIndex = 0; |
- this._searchResults = []; |
- }, |
- |
- performSearch: function(query) |
- { |
- // Call searchCanceled since it will reset everything we need before doing a new search. |
- this.searchCanceled(true); |
- |
- var searchableViews = this.searchableViews; |
- if (!searchableViews || !searchableViews.length) |
- return; |
- |
- var parentElement = this.viewsContainerElement; |
- var visibleView = this.visibleView; |
- var sortFuction = this.searchResultsSortFunction; |
- |
- var matchesCountUpdateTimeout = null; |
- |
- function updateMatchesCount() |
- { |
- WebInspector.updateSearchMatchesCount(this._totalSearchMatches, this); |
- matchesCountUpdateTimeout = null; |
- } |
- |
- function updateMatchesCountSoon() |
- { |
- if (matchesCountUpdateTimeout) |
- return; |
- // Update the matches count every half-second so it doesn't feel twitchy. |
- matchesCountUpdateTimeout = setTimeout(updateMatchesCount.bind(this), 500); |
- } |
- |
- function finishedCallback(view, searchMatches) |
- { |
- if (!searchMatches) |
- return; |
- |
- this._totalSearchMatches += searchMatches; |
- this._searchResults.push(view); |
- |
- if (sortFuction) |
- this._searchResults.sort(sortFuction); |
- |
- if (this.searchMatchFound) |
- this.searchMatchFound(view, searchMatches); |
- |
- updateMatchesCountSoon.call(this); |
- |
- if (view === visibleView) |
- view.jumpToFirstSearchResult(); |
- } |
- |
- var i = 0; |
- var panel = this; |
- var boundFinishedCallback = finishedCallback.bind(this); |
- var chunkIntervalIdentifier = null; |
- |
- // Split up the work into chunks so we don't block the |
- // UI thread while processing. |
- |
- function processChunk() |
- { |
- var view = searchableViews[i]; |
- |
- if (++i >= searchableViews.length) { |
- if (panel._currentSearchChunkIntervalIdentifier === chunkIntervalIdentifier) |
- delete panel._currentSearchChunkIntervalIdentifier; |
- clearInterval(chunkIntervalIdentifier); |
- } |
- |
- if (!view) |
- return; |
- |
- if (view.element.parentNode !== parentElement && view.element.parentNode && parentElement) |
- view.detach(); |
- |
- view.currentQuery = query; |
- view.performSearch(query, boundFinishedCallback); |
- } |
- |
- processChunk(); |
- |
- chunkIntervalIdentifier = setInterval(processChunk, 25); |
- this._currentSearchChunkIntervalIdentifier = chunkIntervalIdentifier; |
- }, |
- |
- jumpToNextSearchResult: function() |
- { |
- if (!this.showView || !this._searchResults || !this._searchResults.length) |
- return; |
- |
- var showFirstResult = false; |
- |
- this._currentSearchResultIndex = this._searchResults.indexOf(this.visibleView); |
- if (this._currentSearchResultIndex === -1) { |
- this._currentSearchResultIndex = 0; |
- showFirstResult = true; |
- } |
- |
- var currentView = this._searchResults[this._currentSearchResultIndex]; |
- |
- if (currentView.showingLastSearchResult()) { |
- if (++this._currentSearchResultIndex >= this._searchResults.length) |
- this._currentSearchResultIndex = 0; |
- currentView = this._searchResults[this._currentSearchResultIndex]; |
- showFirstResult = true; |
- } |
- |
- if (currentView !== this.visibleView) |
- this.showView(currentView); |
- |
- if (showFirstResult) |
- currentView.jumpToFirstSearchResult(); |
- else |
- currentView.jumpToNextSearchResult(); |
- }, |
- |
- jumpToPreviousSearchResult: function() |
- { |
- if (!this.showView || !this._searchResults || !this._searchResults.length) |
- return; |
- |
- var showLastResult = false; |
- |
- this._currentSearchResultIndex = this._searchResults.indexOf(this.visibleView); |
- if (this._currentSearchResultIndex === -1) { |
- this._currentSearchResultIndex = 0; |
- showLastResult = true; |
- } |
- |
- var currentView = this._searchResults[this._currentSearchResultIndex]; |
- |
- if (currentView.showingFirstSearchResult()) { |
- if (--this._currentSearchResultIndex < 0) |
- this._currentSearchResultIndex = (this._searchResults.length - 1); |
- currentView = this._searchResults[this._currentSearchResultIndex]; |
- showLastResult = true; |
- } |
- |
- if (currentView !== this.visibleView) |
- this.showView(currentView); |
- |
- if (showLastResult) |
- currentView.jumpToLastSearchResult(); |
- else |
- currentView.jumpToPreviousSearchResult(); |
- } |
-} |
- |
-WebInspector.Panel.prototype.__proto__ = WebInspector.View.prototype; |