1 /* 2 * Copyright (C) 2011 Google Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are 6 * met: 7 * 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 11 * 2. Redistributions in binary form must reproduce the above 12 * copyright notice, this list of conditions and the following disclaimer 13 * in the documentation and/or other materials provided with the 14 * distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. AND ITS CONTRIBUTORS 17 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 18 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 19 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GOOGLE INC. 20 * OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 21 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 /** 30 * @constructor 31 * @extends {WebInspector.SplitView} 32 * @param {string=} sidebarPosition 33 * @param {string=} sidebarWidthSettingName 34 * @param {number=} defaultSidebarWidth 35 * @param {number=} defaultSidebarHeight 36 */ 37 WebInspector.SidebarView = function(sidebarPosition, sidebarWidthSettingName, defaultSidebarWidth, defaultSidebarHeight) 38 { 39 WebInspector.SplitView.call(this, true, sidebarWidthSettingName, defaultSidebarWidth, defaultSidebarHeight); 40 41 this.setSidebarElementConstraints(Preferences.minSidebarWidth, Preferences.minSidebarHeight); 42 this.setMainElementConstraints(0.5, 0.5); 43 44 this.setSecondIsSidebar(sidebarPosition === WebInspector.SidebarView.SidebarPosition.End); 45 } 46 47 WebInspector.SidebarView.EventTypes = { 48 Resized: "Resized" 49 } 50 51 /** 52 * @enum {string} 53 */ 54 WebInspector.SidebarView.SidebarPosition = { 55 Start: "Start", 56 End: "End" 57 } 58 59 WebInspector.SidebarView.prototype = { 60 /** 61 * @param {number} width 62 */ 63 setSidebarWidth: function(width) 64 { 65 this.setSidebarSize(width); 66 }, 67 68 /** 69 * @return {number} 70 */ 71 sidebarWidth: function() 72 { 73 return this.sidebarSize(); 74 }, 75 76 onResize: function() 77 { 78 WebInspector.SplitView.prototype.onResize.call(this); 79 this.dispatchEventToListeners(WebInspector.SidebarView.EventTypes.Resized, this.sidebarWidth()); 80 }, 81 82 hideMainElement: function() 83 { 84 if (this.isSidebarSecond()) 85 this.showOnlySecond(); 86 else 87 this.showOnlyFirst(); 88 }, 89 90 showMainElement: function() 91 { 92 this.showBoth(); 93 }, 94 95 hideSidebarElement: function() 96 { 97 if (this.isSidebarSecond()) 98 this.showOnlyFirst(); 99 else 100 this.showOnlySecond(); 101 }, 102 103 showSidebarElement: function() 104 { 105 this.showBoth(); 106 }, 107 108 /** 109 * @return {!Array.<!Element>} 110 */ 111 elementsToRestoreScrollPositionsFor: function() 112 { 113 return [ this.mainElement, this.sidebarElement ]; 114 }, 115 116 __proto__: WebInspector.SplitView.prototype 117 } 118