• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 2007 Apple 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
6 * are met:
7 *
8 * 1.  Redistributions of source code must retain the above copyright
9 *     notice, this list of conditions and the following disclaimer.
10 * 2.  Redistributions in binary form must reproduce the above copyright
11 *     notice, this list of conditions and the following disclaimer in the
12 *     documentation and/or other materials provided with the distribution.
13 * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
14 *     its contributors may be used to endorse or promote products derived
15 *     from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
21 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29WebInspector.SidebarPane = function(title)
30{
31    this.element = document.createElement("div");
32    this.element.className = "pane";
33
34    this.titleElement = document.createElement("div");
35    this.titleElement.className = "title";
36    this.titleElement.addEventListener("click", this.toggleExpanded.bind(this), false);
37
38    this.bodyElement = document.createElement("div");
39    this.bodyElement.className = "body";
40
41    this.element.appendChild(this.titleElement);
42    this.element.appendChild(this.bodyElement);
43
44    this.title = title;
45    this.growbarVisible = false;
46    this.expanded = false;
47}
48
49WebInspector.SidebarPane.prototype = {
50    get title()
51    {
52        return this._title;
53    },
54
55    set title(x)
56    {
57        if (this._title === x)
58            return;
59        this._title = x;
60        this.titleElement.textContent = x;
61    },
62
63    get growbarVisible()
64    {
65        return this._growbarVisible;
66    },
67
68    set growbarVisible(x)
69    {
70        if (this._growbarVisible === x)
71            return;
72
73        this._growbarVisible = x;
74
75        if (x && !this._growbarElement) {
76            this._growbarElement = document.createElement("div");
77            this._growbarElement.className = "growbar";
78            this.element.appendChild(this._growbarElement);
79        } else if (!x && this._growbarElement) {
80            if (this._growbarElement.parentNode)
81                this._growbarElement.parentNode(this._growbarElement);
82            delete this._growbarElement;
83        }
84    },
85
86    get expanded()
87    {
88        return this._expanded;
89    },
90
91    set expanded(x)
92    {
93        if (x)
94            this.expand();
95        else
96            this.collapse();
97    },
98
99    expand: function()
100    {
101        if (this._expanded)
102            return;
103        this._expanded = true;
104        this.element.addStyleClass("expanded");
105        if (this.onexpand)
106            this.onexpand(this);
107    },
108
109    collapse: function()
110    {
111        if (!this._expanded)
112            return;
113        this._expanded = false;
114        this.element.removeStyleClass("expanded");
115        if (this.oncollapse)
116            this.oncollapse(this);
117    },
118
119    toggleExpanded: function()
120    {
121        this.expanded = !this.expanded;
122    }
123}
124
125WebInspector.SidebarPane.prototype.__proto__ = WebInspector.Object.prototype;
126