15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2008 Apple Inc. All Rights Reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1. Redistributions of source code must retain the above copyright 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer in the 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * documentation and/or other materials provided with the distribution. 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {TreeElement} 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.SidebarSectionTreeElement = function(title, representedObject, hasChildren) 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) TreeElement.call(this, title.escapeHTML(), representedObject || {}, hasChildren); 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.expand(); 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.SidebarSectionTreeElement.prototype = { 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selectable: false, 385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) collapse: function() 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Should not collapse as it is not selectable. 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get smallChildren() 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._smallChildren; 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set smallChildren(x) 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._smallChildren === x) 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._smallChildren = x; 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 56d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._childrenListNode.classList.toggle("small", this._smallChildren); 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) onattach: function() 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 61a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this._listItemNode.classList.add("sidebar-tree-section"); 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) onreveal: function() 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this.listItemElement) 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.listItemElement.scrollIntoViewIfNeeded(false); 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: TreeElement.prototype 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {TreeElement} 76a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {string} className 77a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {string} title 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string=} subtitle 79a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {?Object=} representedObject 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean=} hasChildren 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.SidebarTreeElement = function(className, title, subtitle, representedObject, hasChildren) 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) TreeElement.call(this, "", representedObject, hasChildren); 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (hasChildren) { 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.disclosureButton = document.createElement("button"); 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.disclosureButton.className = "disclosure-button"; 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 91d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this.iconElement = document.createElementWithClass("div", "icon"); 9209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this.statusElement = document.createElementWithClass("div", "status"); 9309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this.titlesElement = document.createElementWithClass("div", "titles"); 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this.titleContainer = this.titlesElement.createChild("span", "title-container"); 9609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this.titleElement = this.titleContainer.createChild("span", "title"); 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this.subtitleElement = this.titlesElement.createChild("span", "subtitle"); 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.className = className; 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.mainTitle = title; 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.subtitle = subtitle; 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.SidebarTreeElement.prototype = { 1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get small() 1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._small; 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set small(x) 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._small = x; 114d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (this._listItemNode) 115d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._listItemNode.classList.toggle("small", this._small); 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get mainTitle() 1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._mainTitle; 1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set mainTitle(x) 1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._mainTitle = x; 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.refreshTitles(); 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get subtitle() 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._subtitle; 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set subtitle(x) 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._subtitle = x; 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.refreshTitles(); 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set wait(x) 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 142d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._listItemNode.classList.toggle("wait", x); 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) refreshTitles: function() 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var mainTitle = this.mainTitle; 1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this.titleElement.textContent !== mainTitle) 1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.titleElement.textContent = mainTitle; 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var subtitle = this.subtitle; 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (subtitle) { 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this.subtitleElement.textContent !== subtitle) 1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.subtitleElement.textContent = subtitle; 155a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.titlesElement.classList.remove("no-subtitle"); 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.subtitleElement.textContent = ""; 158a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.titlesElement.classList.add("no-subtitle"); 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 16309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {boolean} 16409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isEventWithinDisclosureTriangle: function(event) 1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return event.target === this.disclosureButton; 1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) onattach: function() 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 172a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this._listItemNode.classList.add("sidebar-tree-item"); 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this.className) 175a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this._listItemNode.classList.add(this.className); 1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this.small) 178a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this._listItemNode.classList.add("small"); 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this.hasChildren && this.disclosureButton) 1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._listItemNode.appendChild(this.disclosureButton); 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._listItemNode.appendChild(this.iconElement); 1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._listItemNode.appendChild(this.statusElement); 1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._listItemNode.appendChild(this.titlesElement); 1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) onreveal: function() 1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._listItemNode) 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._listItemNode.scrollIntoViewIfNeeded(false); 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: TreeElement.prototype 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 196