1e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)/* 2e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * Copyright (C) 2013 Google Inc. All rights reserved. 3e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * 4e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * Redistribution and use in source and binary forms, with or without 5e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * modification, are permitted provided that the following conditions are 6e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * met: 7e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * 8e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * * Redistributions of source code must retain the above copyright 9e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * notice, this list of conditions and the following disclaimer. 10e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * * Redistributions in binary form must reproduce the above 11e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 12e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * in the documentation and/or other materials provided with the 13e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * distribution. 14e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * * Neither the name of Google Inc. nor the names of its 15e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * contributors may be used to endorse or promote products derived from 16e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * this software without specific prior written permission. 17e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * 18e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) */ 30e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) 31e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)/** 32e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * @constructor 33e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * @extends {WebInspector.Object} 34a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!TreeOutline} treeOutline 35e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) */ 36d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)WebInspector.LayerTreeOutline = function(treeOutline) 37e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles){ 38e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) WebInspector.Object.call(this); 39e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) this._treeOutline = treeOutline; 40e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) this._treeOutline.childrenListElement.addEventListener("mousemove", this._onMouseMove.bind(this), false); 41e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) this._treeOutline.childrenListElement.addEventListener("mouseout", this._onMouseMove.bind(this), false); 42c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._treeOutline.childrenListElement.addEventListener("contextmenu", this._onContextMenu.bind(this), true); 43e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) this._lastHoveredNode = null; 44e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)} 45e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) 46e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)/** 47e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * @enum {string} 48e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) */ 49d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)WebInspector.LayerTreeOutline.Events = { 50e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) LayerHovered: "LayerHovered", 51e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) LayerSelected: "LayerSelected" 52e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)} 53e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) 54d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)WebInspector.LayerTreeOutline.prototype = { 55e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) /** 5610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch * @param {?WebInspector.Layer} layer 57e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) */ 58e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) selectLayer: function(layer) 59e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) { 60e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) this.hoverLayer(null); 61e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) var node = layer && this._treeOutline.getCachedTreeElement(layer); 62e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) if (node) 63e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) node.revealAndSelect(true); 64c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) else if (this._treeOutline.selectedTreeElement) 65c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) this._treeOutline.selectedTreeElement.deselect(); 66e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) }, 67e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) 68e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) /** 69a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {?WebInspector.Layer} layer 70e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) */ 71e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) hoverLayer: function(layer) 72e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) { 73e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) var node = layer && this._treeOutline.getCachedTreeElement(layer); 74e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) if (node === this._lastHoveredNode) 75e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) return; 76e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) if (this._lastHoveredNode) 77e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) this._lastHoveredNode.setHovered(false); 78e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) if (node) 79e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) node.setHovered(true); 80e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) this._lastHoveredNode = node; 81e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) }, 82e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) 83d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) /** 84d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) * @param {?WebInspector.LayerTreeBase} layerTree 85d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) */ 86d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) update: function(layerTree) 87e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) { 88d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) var seenLayers = new Map(); 89e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) 90e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) /** 91a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Layer} layer 92d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) * @this {WebInspector.LayerTreeOutline} 93e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) */ 94e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) function updateLayer(layer) 95e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) { 96d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) if (seenLayers.get(layer)) 97d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) console.assert(false, "Duplicate layer: " + layer.id()); 989e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) seenLayers.set(layer, true); 99e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) var node = this._treeOutline.getCachedTreeElement(layer); 100d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) var parent = layer === layerTree.contentRoot() ? this._treeOutline : this._treeOutline.getCachedTreeElement(layer.parent()); 101e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) if (!parent) 102e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) console.assert(false, "Parent is not in the tree"); 103e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) if (!node) { 104e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) node = new WebInspector.LayerTreeElement(this, layer); 105e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) parent.appendChild(node); 106e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) } else { 107d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (node.parent !== parent) { 108d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) node.parent.removeChild(node); 109e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) parent.appendChild(node); 110e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) } 111e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) node._update(); 112e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) } 113e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) } 114d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) if (layerTree && layerTree.contentRoot()) 115d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) layerTree.forEachLayer(updateLayer.bind(this), layerTree.contentRoot()); 1169bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) // Cleanup layers that don't exist anymore from tree. 117d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) for (var node = /** @type {!TreeElement|!TreeOutline|null} */ (this._treeOutline.children[0]); node && !node.root;) { 118d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) if (seenLayers.get(node.representedObject)) { 1199bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) node = node.traverseNextTreeElement(false); 1209bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) } else { 1219bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) var nextNode = node.nextSibling || node.parent; 1229bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) node.parent.removeChild(node); 1239bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) if (node === this._lastHoveredNode) 1249bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) this._lastHoveredNode = null; 1259bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) node = nextNode; 126e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) } 127e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) } 128e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) }, 129e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) 130e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) /** 131197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {!Event} event 132e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) */ 133e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) _onMouseMove: function(event) 134e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) { 135e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) var node = this._treeOutline.treeElementFromPoint(event.pageX, event.pageY); 136e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) if (node === this._lastHoveredNode) 137e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) return; 138d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) this.dispatchEventToListeners(WebInspector.LayerTreeOutline.Events.LayerHovered, node && node.representedObject ? {layer: node.representedObject} : null); 139e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) }, 140e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) 141e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) /** 142a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.LayerTreeElement} node 143e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) */ 144e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) _selectedNodeChanged: function(node) 145e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) { 146a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) var layer = /** @type {!WebInspector.Layer} */ (node.representedObject); 147d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) this.dispatchEventToListeners(WebInspector.LayerTreeOutline.Events.LayerSelected, {layer: layer}); 148e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) }, 149e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) 150c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) /** 151197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {!Event} event 152c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) */ 153c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) _onContextMenu: function(event) 154c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) { 155c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) var node = this._treeOutline.treeElementFromPoint(event.pageX, event.pageY); 156c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) if (!node || !node.representedObject) 157c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) return; 158a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) var layer = /** @type {!WebInspector.Layer} */ (node.representedObject); 159c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) if (!layer) 160c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) return; 161a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch var domNode = layer.nodeForSelfOrAncestor(); 162c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) if (!domNode) 163c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) return; 164c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) var contextMenu = new WebInspector.ContextMenu(event); 165c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) contextMenu.appendApplicableItems(domNode); 166c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) contextMenu.show(); 167c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) }, 168c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles) 169e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) __proto__: WebInspector.Object.prototype 170e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)} 171e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) 172e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)/** 173e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * @constructor 174d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) * @param {!WebInspector.LayerTreeOutline} tree 175a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Layer} layer 176e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * @extends {TreeElement} 177e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) */ 178e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)WebInspector.LayerTreeElement = function(tree, layer) 179e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles){ 180e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) TreeElement.call(this, "", layer); 181d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) this._treeOutline = tree; 182e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) this._update(); 183e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)} 184e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) 185e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)WebInspector.LayerTreeElement.prototype = { 186e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) onattach: function() 187e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) { 188e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) var selection = document.createElement("div"); 189e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) selection.className = "selection"; 190e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) this.listItemElement.insertBefore(selection, this.listItemElement.firstChild); 191e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) }, 192e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) 193e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) _update: function() 194e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) { 195a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) var layer = /** @type {!WebInspector.Layer} */ (this.representedObject); 196a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch var node = layer.nodeForSelfOrAncestor(); 197e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) var title = document.createDocumentFragment(); 198e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) title.createChild("div", "selection"); 1997242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci title.createTextChild(node ? WebInspector.DOMPresentationUtils.simpleSelector(node) : "#" + layer.id()); 200e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) var details = title.createChild("span", "dimmed"); 201e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) details.textContent = WebInspector.UIString(" (%d × %d)", layer.width(), layer.height()); 202e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) this.title = title; 203e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) }, 204e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) 205a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** 206a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @override 20709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {boolean} 208a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) */ 209e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) onselect: function() 210e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) { 211d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) this._treeOutline._selectedNodeChanged(this); 212a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) return false; 213e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) }, 214e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) 215e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) /** 216e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * @param {boolean} hovered 217e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) */ 218e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) setHovered: function(hovered) 219e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) { 220d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this.listItemElement.classList.toggle("hovered", hovered); 221e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) }, 222e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) 223e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) __proto__: TreeElement.prototype 224e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)} 225