| /* | 
 |  * Copyright (C) 2009 Joseph Pecoraro | 
 |  * | 
 |  * 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. | 
 |  */ | 
 |  | 
 | /** | 
 |  * @unrestricted | 
 |  */ | 
 | Console.ConsolePanel = class extends UI.Panel { | 
 |   constructor() { | 
 |     super('console'); | 
 |     this._view = Console.ConsoleView.instance(); | 
 |   } | 
 |  | 
 |   /** | 
 |    * @return {!Console.ConsolePanel} | 
 |    */ | 
 |   static instance() { | 
 |     return /** @type {!Console.ConsolePanel} */ (self.runtime.sharedInstance(Console.ConsolePanel)); | 
 |   } | 
 |  | 
 |   /** | 
 |    * @override | 
 |    */ | 
 |   wasShown() { | 
 |     super.wasShown(); | 
 |     const wrapper = Console.ConsolePanel.WrapperView._instance; | 
 |     if (wrapper && wrapper.isShowing()) | 
 |       UI.inspectorView.setDrawerMinimized(true); | 
 |     this._view.show(this.element); | 
 |   } | 
 |  | 
 |   /** | 
 |    * @override | 
 |    */ | 
 |   willHide() { | 
 |     super.willHide(); | 
 |     // The minimized drawer has 0 height, and showing Console inside may set | 
 |     // Console's scrollTop to 0. Unminimize before calling show to avoid this. | 
 |     UI.inspectorView.setDrawerMinimized(false); | 
 |     if (Console.ConsolePanel.WrapperView._instance) | 
 |       Console.ConsolePanel.WrapperView._instance._showViewInWrapper(); | 
 |   } | 
 |  | 
 |   /** | 
 |    * @override | 
 |    * @return {?UI.SearchableView} | 
 |    */ | 
 |   searchableView() { | 
 |     return Console.ConsoleView.instance().searchableView(); | 
 |   } | 
 | }; | 
 |  | 
 | /** | 
 |  * @unrestricted | 
 |  */ | 
 | Console.ConsolePanel.WrapperView = class extends UI.VBox { | 
 |   constructor() { | 
 |     super(); | 
 |     this.element.classList.add('console-view-wrapper'); | 
 |  | 
 |     Console.ConsolePanel.WrapperView._instance = this; | 
 |  | 
 |     this._view = Console.ConsoleView.instance(); | 
 |   } | 
 |  | 
 |   /** | 
 |    * @override | 
 |    */ | 
 |   wasShown() { | 
 |     if (!Console.ConsolePanel.instance().isShowing()) | 
 |       this._showViewInWrapper(); | 
 |     else | 
 |       UI.inspectorView.setDrawerMinimized(true); | 
 |   } | 
 |  | 
 |   /** | 
 |    * @override | 
 |    */ | 
 |   willHide() { | 
 |     UI.inspectorView.setDrawerMinimized(false); | 
 |   } | 
 |  | 
 |   _showViewInWrapper() { | 
 |     this._view.show(this.element); | 
 |   } | 
 | }; | 
 |  | 
 | /** | 
 |  * @implements {Common.Revealer} | 
 |  * @unrestricted | 
 |  */ | 
 | Console.ConsolePanel.ConsoleRevealer = class { | 
 |   /** | 
 |    * @override | 
 |    * @param {!Object} object | 
 |    * @return {!Promise} | 
 |    */ | 
 |   reveal(object) { | 
 |     const consoleView = Console.ConsoleView.instance(); | 
 |     if (consoleView.isShowing()) { | 
 |       consoleView.focus(); | 
 |       return Promise.resolve(); | 
 |     } | 
 |     UI.viewManager.showView('console-view'); | 
 |     return Promise.resolve(); | 
 |   } | 
 | }; |