Upstream version 5.34.98.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / devtools / front_end / SidebarView.js
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 }