1/* 2 * Copyright (C) 2008 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 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26WebInspector.View = function(element) 27{ 28 this.element = element || document.createElement("div"); 29 this._visible = false; 30} 31 32WebInspector.View.prototype = { 33 get visible() 34 { 35 return this._visible; 36 }, 37 38 set visible(x) 39 { 40 if (this._visible === x) 41 return; 42 43 if (x) 44 this.show(); 45 else 46 this.hide(); 47 }, 48 49 show: function(parentElement) 50 { 51 this._visible = true; 52 if (parentElement && parentElement !== this.element.parentNode) { 53 this.detach(); 54 parentElement.appendChild(this.element); 55 } 56 if (!this.element.parentNode && this.attach) 57 this.attach(); 58 this.element.addStyleClass("visible"); 59 }, 60 61 hide: function() 62 { 63 this.element.removeStyleClass("visible"); 64 this._visible = false; 65 }, 66 67 detach: function() 68 { 69 if (this.element.parentNode) 70 this.element.parentNode.removeChild(this.element); 71 } 72} 73 74WebInspector.View.prototype.__proto__ = WebInspector.Object.prototype; 75