1 /* 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. 3 * Copyright (C) 2013 Google Inc. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 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 * 14 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 */ 26 27 /** 28 * @constructor 29 * @param {string} title 30 * @param {string} subtitle 31 */ 32 WebInspector.Placard = function(title, subtitle) 33 { 34 this.element = document.createElementWithClass("div", "placard"); 35 this.element.placard = this; 36 37 this.subtitleElement = this.element.createChild("div", "subtitle"); 38 this.titleElement = this.element.createChild("div", "title"); 39 40 this._hidden = false; 41 this.title = title; 42 this.subtitle = subtitle; 43 this.selected = false; 44 } 45 46 WebInspector.Placard.prototype = { 47 /** @return {string} */ 48 get title() 49 { 50 return this._title; 51 }, 52 53 set title(x) 54 { 55 if (this._title === x) 56 return; 57 this._title = x; 58 this.titleElement.textContent = x; 59 }, 60 61 /** @return {string} */ 62 get subtitle() 63 { 64 return this._subtitle; 65 }, 66 67 set subtitle(x) 68 { 69 if (this._subtitle === x) 70 return; 71 this._subtitle = x; 72 this.subtitleElement.textContent = x; 73 }, 74 75 /** @return {boolean} */ 76 get selected() 77 { 78 return this._selected; 79 }, 80 81 set selected(x) 82 { 83 if (x) 84 this.select(); 85 else 86 this.deselect(); 87 }, 88 89 select: function() 90 { 91 if (this._selected) 92 return; 93 this._selected = true; 94 this.element.classList.add("selected"); 95 }, 96 97 deselect: function() 98 { 99 if (!this._selected) 100 return; 101 this._selected = false; 102 this.element.classList.remove("selected"); 103 }, 104 105 toggleSelected: function() 106 { 107 this.selected = !this.selected; 108 }, 109 110 /** 111 * @return {boolean} 112 */ 113 isHidden: function() 114 { 115 return this._hidden; 116 }, 117 118 /** 119 * @param {boolean} x 120 */ 121 setHidden: function(x) 122 { 123 if (this._hidden === x) 124 return; 125 this._hidden = x; 126 this.element.classList.toggle("hidden", x); 127 }, 128 129 discard: function() 130 { 131 } 132 } 133