15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2009 Joseph Pecoraro 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met: 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1. Redistributions of source code must retain the above copyright 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer in the 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * documentation and/or other materials provided with the distribution. 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * its contributors may be used to endorse or promote products derived 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * from this software without specific prior written permission. 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 32d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @extends {WebInspector.VBox} 3309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {!WebInspector.SplitView} splitView 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)WebInspector.Drawer = function(splitView) 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 37d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) WebInspector.VBox.call(this); 3809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this.element.id = "drawer-contents"; 3953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 4009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._splitView = splitView; 4109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) splitView.hideDefaultResizer(); 4209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this.show(splitView.sidebarElement()); 43d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 44bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) this._toggleDrawerButton = new WebInspector.StatusBarButton(WebInspector.UIString("Show drawer."), "console-status-bar-item"); 45bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) this._toggleDrawerButton.addEventListener("click", this.toggle, this); 4653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 47bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) this._tabbedPane = new WebInspector.TabbedPane(); 48d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._tabbedPane.element.id = "drawer-tabbed-pane"; 49bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) this._tabbedPane.closeableTabs = false; 50bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) this._tabbedPane.addEventListener(WebInspector.TabbedPane.EventTypes.TabSelected, this._tabSelected, this); 51d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) new WebInspector.ExtensibleTabbedPaneController(this._tabbedPane, "drawer-view"); 52d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 5309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) splitView.installResizer(this._tabbedPane.headerElement()); 54a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this._lastSelectedViewSetting = WebInspector.settings.createSetting("WebInspector.Drawer.lastSelectedView", "console"); 55c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._tabbedPane.show(this.element); 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.Drawer.prototype = { 5909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 60197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @return {!WebInspector.StatusBarButton} 6109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 62197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch toggleButton: function() 63e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) { 64197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return this._toggleDrawerButton; 65e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) }, 66e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) 67bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) /** 68bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * @param {string} id 69bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) */ 70f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) closeView: function(id) 71bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) { 72f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) this._tabbedPane.closeTab(id); 73f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) }, 74f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) 75f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) /** 76f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) * @param {string} id 7709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {boolean=} immediate 78f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) */ 7909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) showView: function(id, immediate) 80f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) { 8109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (!this._tabbedPane.hasTab(id)) { 8209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) // Hidden tab. 8309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._innerShow(immediate); 8409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return; 8509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) } 8609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._innerShow(immediate); 87f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) this._tabbedPane.selectTab(id, true); 8809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) // In case this id is already selected, anyways persist it as the last saved value. 8909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._lastSelectedViewSetting.set(id); 90bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) }, 915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 92bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) /** 93bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * @param {string} id 94bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * @param {string} title 95a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.View} view 96bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) */ 97bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) showCloseableView: function(id, title, view) 98bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) { 99f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) if (!this._tabbedPane.hasTab(id)) { 100bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) this._tabbedPane.appendTab(id, title, view, undefined, false, true); 101f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) } else { 102f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) this._tabbedPane.changeTabView(id, view); 103f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) this._tabbedPane.changeTabTitle(id, title); 104f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) } 105bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) this._innerShow(); 106bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) this._tabbedPane.selectTab(id, true); 107bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) }, 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) showDrawer: function() 110bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) { 11109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this.showView(this._lastSelectedViewSetting.get()); 112bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) }, 113bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 114d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) wasShown: function() 115d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 116d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this.showView(this._lastSelectedViewSetting.get()); 117d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._toggleDrawerButton.toggled = true; 118d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._toggleDrawerButton.title = WebInspector.UIString("Hide drawer."); 119d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 120d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 121d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) willHide: function() 122a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) { 123d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._toggleDrawerButton.toggled = false; 124d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._toggleDrawerButton.title = WebInspector.UIString("Show drawer."); 125a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) }, 126a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) 127bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) /** 12809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {boolean=} immediate 129bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) */ 13009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) _innerShow: function(immediate) 131bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) { 132d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (this.isShowing()) 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 13409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 13509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._splitView.showBoth(!immediate); 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 13709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (this._visibleView()) 13809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._visibleView().focus(); 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) closeDrawer: function() 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 143d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (!this.isShowing()) 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.restoreFocusFromElement(this.element); 14709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._splitView.hideSidebar(true); 148591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch }, 149591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 150591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch /** 15110f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch * @return {?WebInspector.View} view 152bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) */ 153bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) _visibleView: function() 154bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) { 155bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) return this._tabbedPane.visibleView; 156bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) }, 157bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 15809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 15909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {!WebInspector.Event} event 16009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 16109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) _tabSelected: function(event) 162bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) { 163bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) var tabId = this._tabbedPane.selectedTabId; 16410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch if (tabId && event.data["isUserGesture"] && !this._tabbedPane.isTabCloseable(tabId)) 165a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this._lastSelectedViewSetting.set(tabId); 166bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) }, 167bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 168bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) toggle: function() 169bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) { 170bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) if (this._toggleDrawerButton.toggled) 17109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this.closeDrawer(); 172bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) else 17309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this.showDrawer(); 174bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) }, 175bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 176bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) /** 177bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * @return {boolean} 178bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) */ 179bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) visible: function() 180bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) { 181bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) return this._toggleDrawerButton.toggled; 18251b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) }, 18351b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) 18451b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) /** 18510f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch * @return {?string} 18651b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) */ 18751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) selectedViewId: function() 18851b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) { 18951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) return this._tabbedPane.selectedTabId; 19009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) }, 19109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 192d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) initialPanelShown: function() 193d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 194d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._initialPanelWasShown = true; 19509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) }, 19609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 197d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) __proto__: WebInspector.VBox.prototype 19809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 19909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 20009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)/** 20109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @interface 20209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 20309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)WebInspector.Drawer.ViewFactory = function() 20409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles){ 20509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 20609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 20709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)WebInspector.Drawer.ViewFactory.prototype = { 20809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 20909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {!WebInspector.View} 21009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 21109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) createView: function() {} 21209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 21309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 21409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)/** 21509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @constructor 21609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @implements {WebInspector.Drawer.ViewFactory} 21709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {function(new:T)} constructor 21809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @template T 21909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 22009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)WebInspector.Drawer.SingletonViewFactory = function(constructor) 22109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles){ 22209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._constructor = constructor; 22309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 22409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 22509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)WebInspector.Drawer.SingletonViewFactory.prototype = { 22609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 22709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {!WebInspector.View} 22809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 22909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) createView: function() 23009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { 23109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (!this._instance) 23209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._instance = /** @type {!WebInspector.View} */(new this._constructor()); 23309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return this._instance; 2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 236