Home | History | Annotate | Download | only in front_end
      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