15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2012 Google 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 are 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1. Redistributions of source code must retain the above copyright 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * in the documentation and/or other materials provided with the 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * distribution. 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. AND ITS CONTRIBUTORS 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GOOGLE INC. 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 31d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @extends {WebInspector.VBox} 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.NavigatorView = function() 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 35d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) WebInspector.VBox.call(this); 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.registerRequiredCSS("navigatorView.css"); 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this.element.classList.add("navigator-container"); 39197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch var scriptsOutlineElement = this.element.createChild("div", "outline-disclosure navigator"); 40197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch var scriptsTreeElement = scriptsOutlineElement.createChild("ol"); 4153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._scriptsTree = new WebInspector.NavigatorTreeOutline(scriptsTreeElement); 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.setDefaultFocusedElement(this._scriptsTree.element); 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 45a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** @type {!Map.<!WebInspector.UISourceCode, !WebInspector.NavigatorUISourceCodeTreeNode>} */ 46591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._uiSourceCodeNodes = new Map(); 47a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** @type {!Map.<!WebInspector.NavigatorTreeNode, !StringMap.<!WebInspector.NavigatorFolderTreeNode>>} */ 48591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._subfolderNodes = new Map(); 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._rootNode = new WebInspector.NavigatorRootTreeNode(this); 51926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._rootNode.populate(); 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 533c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch this.element.addEventListener("contextmenu", this.handleContextMenu.bind(this), false); 54926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.NavigatorView.Events = { 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ItemSelected: "ItemSelected", 58d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) ItemRenamed: "ItemRenamed", 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 615d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)/** 625d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) * @param {string} type 635d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) * @return {string} 645d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) */ 65926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.NavigatorView.iconClassForType = function(type) 66926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 67926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (type === WebInspector.NavigatorTreeOutline.Types.Domain) 68926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return "navigator-domain-tree-item"; 69926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (type === WebInspector.NavigatorTreeOutline.Types.FileSystem) 70926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return "navigator-folder-tree-item"; 71926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return "navigator-folder-tree-item"; 72926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 73926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.NavigatorView.prototype = { 75d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) setWorkspace: function(workspace) 76d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 77d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._workspace = workspace; 78d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeAdded, this._uiSourceCodeAdded, this); 79d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeRemoved, this._uiSourceCodeRemoved, this); 80f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) this._workspace.addEventListener(WebInspector.Workspace.Events.ProjectRemoved, this._projectRemoved.bind(this), this); 81d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 82d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 83d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) wasShown: function() 84d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 85d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (this._loaded) 86d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return; 87d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._loaded = true; 88d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._workspace.uiSourceCodes().forEach(this._addUISourceCode.bind(this)); 89d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 90d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 91d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 92d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 93d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @return {boolean} 94d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 95d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) accept: function(uiSourceCode) 96d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 97d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return !uiSourceCode.project().isServiceProject(); 98d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 99d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 101a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 103d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) _addUISourceCode: function(uiSourceCode) 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 105d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (!this.accept(uiSourceCode)) 106d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return; 107591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var projectNode = this._projectNode(uiSourceCode.project()); 108591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var folderNode = this._folderNode(projectNode, uiSourceCode.parentPath()); 109926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var uiSourceCodeNode = new WebInspector.NavigatorUISourceCodeTreeNode(this, uiSourceCode); 1109e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) this._uiSourceCodeNodes.set(uiSourceCode, uiSourceCodeNode); 111591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch folderNode.appendChild(uiSourceCodeNode); 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 114926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 115a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Event} event 116926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 117d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) _uiSourceCodeAdded: function(event) 1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 119d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data); 120d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._addUISourceCode(uiSourceCode); 121d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 122d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 123d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 124d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {!WebInspector.Event} event 125d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 126d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) _uiSourceCodeRemoved: function(event) 127d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 128d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data); 129d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._removeUISourceCode(uiSourceCode); 130d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 131d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 132d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 133d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {!WebInspector.Event} event 134d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 135f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) _projectRemoved: function(event) 136d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 137d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) var project = /** @type {!WebInspector.Project} */ (event.data); 1387242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci project.removeEventListener(WebInspector.Project.Events.DisplayNameUpdated, this._updateProjectNodeTitle, this); 139d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) var uiSourceCodes = project.uiSourceCodes(); 140d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) for (var i = 0; i < uiSourceCodes.length; ++i) 141d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._removeUISourceCode(uiSourceCodes[i]); 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 144926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 145a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Project} project 146a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.NavigatorTreeNode} 147926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 148591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch _projectNode: function(project) 1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 150926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!project.displayName()) 151926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this._rootNode; 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 153591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var projectNode = this._rootNode.child(project.id()); 154591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (!projectNode) { 1557242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci projectNode = this._createProjectNode(project); 156591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._rootNode.appendChild(projectNode); 157591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch } 158926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return projectNode; 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 161926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 1627242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @param {!WebInspector.Project} project 1637242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @return {!WebInspector.NavigatorTreeNode} 1647242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci */ 1657242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci _createProjectNode: function(project) 1667242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci { 1677242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci var type = project.type() === WebInspector.projectTypes.FileSystem ? WebInspector.NavigatorTreeOutline.Types.FileSystem : WebInspector.NavigatorTreeOutline.Types.Domain; 1687242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci var projectNode = new WebInspector.NavigatorFolderTreeNode(this, project, project.id(), type, "", project.displayName()); 1697242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci project.addEventListener(WebInspector.Project.Events.DisplayNameUpdated, this._updateProjectNodeTitle, this); 1707242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return projectNode; 1717242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci }, 1727242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 1737242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci /** 1747242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @param {!WebInspector.Event} event 1757242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci */ 1767242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci _updateProjectNodeTitle: function(event) 1777242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci { 1787242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci var project = /** @type {!WebInspector.Project} */(event.target); 1797242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci var projectNode = this._rootNode.child(project.id()); 1807242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci if (!projectNode) 1817242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return; 1827242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci projectNode.treeElement().titleText = project.displayName(); 1837242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci }, 1847242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 1857242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci /** 186a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.NavigatorTreeNode} projectNode 187591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @param {string} folderPath 188a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.NavigatorTreeNode} 189926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 190591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch _folderNode: function(projectNode, folderPath) 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 192591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (!folderPath) 193591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return projectNode; 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 195591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var subfolderNodes = this._subfolderNodes.get(projectNode); 196591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (!subfolderNodes) { 1977757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch subfolderNodes = /** @type {!StringMap.<!WebInspector.NavigatorFolderTreeNode>} */ (new StringMap()); 1989e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) this._subfolderNodes.set(projectNode, subfolderNodes); 199591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch } 2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 201591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var folderNode = subfolderNodes.get(folderPath); 202591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (folderNode) 203591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return folderNode; 2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 205926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var parentNode = projectNode; 206591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var index = folderPath.lastIndexOf("/"); 207591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (index !== -1) 208591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch parentNode = this._folderNode(projectNode, folderPath.substring(0, index)); 2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 210591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var name = folderPath.substring(index + 1); 2111fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch folderNode = new WebInspector.NavigatorFolderTreeNode(this, null, name, WebInspector.NavigatorTreeOutline.Types.Folder, folderPath, name); 2129e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) subfolderNodes.set(folderPath, folderNode); 213591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch parentNode.appendChild(folderNode); 214591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return folderNode; 2155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 218a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 219926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {boolean=} select 2205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 221926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) revealUISourceCode: function(uiSourceCode, select) 2225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 223591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var node = this._uiSourceCodeNodes.get(uiSourceCode); 224926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!node) 22509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return; 226926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (this._scriptsTree.selectedTreeElement) 227926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._scriptsTree.selectedTreeElement.deselect(); 228926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._lastSelectedUISourceCode = uiSourceCode; 229926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) node.reveal(select); 2305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 233a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 234926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {boolean} focusSource 2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 23606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) _sourceSelected: function(uiSourceCode, focusSource) 2375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 238926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._lastSelectedUISourceCode = uiSourceCode; 239926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var data = { uiSourceCode: uiSourceCode, focusSource: focusSource}; 240926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.dispatchEventToListeners(WebInspector.NavigatorView.Events.ItemSelected, data); 2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 243926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 244a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 245926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 2461e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) sourceDeleted: function(uiSourceCode) 2471e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) { 2481e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) }, 2491e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 2501e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) /** 251a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 2521e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) */ 253d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) _removeUISourceCode: function(uiSourceCode) 2545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 255591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var node = this._uiSourceCodeNodes.get(uiSourceCode); 256926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!node) 257926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 258591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 259591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var projectNode = this._projectNode(uiSourceCode.project()); 260591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var subfolderNodes = this._subfolderNodes.get(projectNode); 261591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var parentNode = node.parent; 262591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._uiSourceCodeNodes.remove(uiSourceCode); 263926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) parentNode.removeChild(node); 264926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) node = parentNode; 265591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 266926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) while (node) { 267926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) parentNode = node.parent; 268926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!parentNode || !node.isEmpty()) 269926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) break; 270591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (subfolderNodes) 271591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch subfolderNodes.remove(node._folderPath); 272926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) parentNode.removeChild(node); 273926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) node = parentNode; 274926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 2755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 278a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 27953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) */ 280d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) _updateIcon: function(uiSourceCode) 2811e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) { 2821e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) var node = this._uiSourceCodeNodes.get(uiSourceCode); 2831e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) node.updateIcon(); 2841e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) }, 2851e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 2865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) reset: function() 2875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 288591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch var nodes = this._uiSourceCodeNodes.values(); 289591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch for (var i = 0; i < nodes.length; ++i) 290591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch nodes[i].dispose(); 2915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._scriptsTree.removeChildren(); 2937757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch this._uiSourceCodeNodes.clear(); 2947757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch this._subfolderNodes.clear(); 295926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._rootNode.reset(); 2965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2983c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch /** 299197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {!Event} event 3003c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch */ 3013c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch handleContextMenu: function(event) 3023c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch { 3033c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch var contextMenu = new WebInspector.ContextMenu(event); 3043c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch this._appendAddFolderItem(contextMenu); 3053c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch contextMenu.show(); 3063c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch }, 3073c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch 3083c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch /** 309a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.ContextMenu} contextMenu 3103c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch */ 3113c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch _appendAddFolderItem: function(contextMenu) 3123c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch { 3133c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch function addFolder() 3143c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch { 3153c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch WebInspector.isolatedFileSystemManager.addFileSystem(); 3163c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch } 3173c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch 3183c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch var addFolderLabel = WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Add folder to workspace" : "Add Folder to Workspace"); 3193c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch contextMenu.appendItem(addFolderLabel, addFolder); 3203c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch }, 3213c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch 3223c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch /** 323a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Project} project 324f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) * @param {string} path 325f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) */ 326f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) _handleContextMenuRefresh: function(project, path) 327f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) { 328f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) project.refresh(path); 329f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) }, 330f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) 331f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) /** 332a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Project} project 333f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) * @param {string} path 334a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.UISourceCode=} uiSourceCode 335f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) */ 336f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) _handleContextMenuCreate: function(project, path, uiSourceCode) 337f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) { 338d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this.create(project, path, uiSourceCode); 339f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) }, 340f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) 341f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) /** 3425d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 3435d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) */ 3445d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) _handleContextMenuRename: function(uiSourceCode) 3455d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) { 3465d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) this.rename(uiSourceCode, false); 3475d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) }, 3485d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) 3495d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) /** 350a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Project} project 351f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) * @param {string} path 352f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) */ 353f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) _handleContextMenuExclude: function(project, path) 354f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) { 355f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) var shouldExclude = window.confirm(WebInspector.UIString("Are you sure you want to exclude this folder?")); 356f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) if (shouldExclude) { 357f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) WebInspector.startBatchUpdate(); 358f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) project.excludeFolder(path); 359f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) WebInspector.endBatchUpdate(); 360f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) } 361f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) }, 362f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) 363f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) /** 364a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 365f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) */ 366f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) _handleContextMenuDelete: function(uiSourceCode) 367f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) { 368f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) var shouldDelete = window.confirm(WebInspector.UIString("Are you sure you want to delete this file?")); 369f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) if (shouldDelete) 370f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) uiSourceCode.project().deleteFile(uiSourceCode.path()); 371f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) }, 372f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) 373f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) /** 374a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Event} event 375a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 3763c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch */ 3773c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch handleFileContextMenu: function(event, uiSourceCode) 3785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var contextMenu = new WebInspector.ContextMenu(event); 3805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) contextMenu.appendApplicableItems(uiSourceCode); 3813c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch contextMenu.appendSeparator(); 382f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) 383f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) var project = uiSourceCode.project(); 3845d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) if (project.type() === WebInspector.projectTypes.FileSystem) { 3855d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) var path = uiSourceCode.parentPath(); 3865d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) contextMenu.appendItem(WebInspector.UIString("Rename\u2026"), this._handleContextMenuRename.bind(this, uiSourceCode)); 3875d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Make a copy\u2026" : "Make a Copy\u2026"), this._handleContextMenuCreate.bind(this, project, path, uiSourceCode)); 3885d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) contextMenu.appendItem(WebInspector.UIString("Delete"), this._handleContextMenuDelete.bind(this, uiSourceCode)); 3895d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) contextMenu.appendSeparator(); 3905d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) } 3915d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) 3923c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch this._appendAddFolderItem(contextMenu); 3935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) contextMenu.show(); 3945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3963c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch /** 397a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Event} event 398a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.NavigatorFolderTreeNode} node 3993c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch */ 4001fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch handleFolderContextMenu: function(event, node) 4011fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch { 4021fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch var contextMenu = new WebInspector.ContextMenu(event); 4031fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch var path = "/"; 4043c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch var projectNode = node; 4053c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch while (projectNode.parent !== this._rootNode) { 4063c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch path = "/" + projectNode.id + path; 4073c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch projectNode = projectNode.parent; 4081fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch } 4091fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch 4103c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch var project = projectNode._project; 4111fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch 41223e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch if (project.type() === WebInspector.projectTypes.FileSystem) { 413f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) contextMenu.appendItem(WebInspector.UIString("Refresh"), this._handleContextMenuRefresh.bind(this, project, path)); 414f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "New file" : "New File"), this._handleContextMenuCreate.bind(this, project, path)); 415f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Exclude folder" : "Exclude Folder"), this._handleContextMenuExclude.bind(this, project, path)); 4161fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch } 4173c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch contextMenu.appendSeparator(); 4183c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch this._appendAddFolderItem(contextMenu); 4193c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch 420a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) function removeFolder() 421a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) { 422a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) var shouldRemove = window.confirm(WebInspector.UIString("Are you sure you want to remove this folder?")); 423a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) if (shouldRemove) 424a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) project.remove(); 425a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) } 426a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) 427a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) if (project.type() === WebInspector.projectTypes.FileSystem && node === projectNode) { 4283c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch var removeFolderLabel = WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Remove folder from workspace" : "Remove Folder from Workspace"); 4293c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch contextMenu.appendItem(removeFolderLabel, removeFolder); 4303c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch } 43123e46e0f045bc1935a09565578b448d36cfc5b8cBen Murdoch 4321fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch contextMenu.show(); 4331fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch }, 4341fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch 4353c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch /** 436d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 437d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {boolean} deleteIfCanceled 4383c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch */ 439d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) rename: function(uiSourceCode, deleteIfCanceled) 440d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 441d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) var node = this._uiSourceCodeNodes.get(uiSourceCode); 442d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) console.assert(node); 44343e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) node.rename(callback.bind(this)); 44453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 445d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 446d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @this {WebInspector.NavigatorView} 447d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {boolean} committed 448d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 449d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) function callback(committed) 450d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 451d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (!committed) { 452d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (deleteIfCanceled) 453d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) uiSourceCode.remove(); 454d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return; 455d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } 456d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 45707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this.dispatchEventToListeners(WebInspector.NavigatorView.Events.ItemRenamed, uiSourceCode); 458d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._updateIcon(uiSourceCode); 459d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._sourceSelected(uiSourceCode, true) 460d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } 461d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 46253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 463d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 464d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {!WebInspector.Project} project 465d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {string} path 466d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {!WebInspector.UISourceCode=} uiSourceCodeToCopy 467d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 468d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) create: function(project, path, uiSourceCodeToCopy) 469d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 470d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) var filePath; 471d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) var uiSourceCode; 472d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 473d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 474d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @this {WebInspector.NavigatorView} 475d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {?string} content 476d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 477d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) function contentLoaded(content) 478d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 479d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) createFile.call(this, content || ""); 480d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } 481d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 482d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (uiSourceCodeToCopy) 483d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) uiSourceCodeToCopy.requestContent(contentLoaded.bind(this)); 484d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) else 485d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) createFile.call(this); 486d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 487d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 488d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @this {WebInspector.NavigatorView} 489d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {string=} content 490d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 491d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) function createFile(content) 492d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 493d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) project.createFile(path, null, content || "", fileCreated.bind(this)); 494d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } 495d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 496d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 497d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @this {WebInspector.NavigatorView} 498d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {?string} path 499d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 500d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) function fileCreated(path) 501d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 502d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (!path) 503d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return; 504d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) filePath = path; 505d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) uiSourceCode = project.uiSourceCode(filePath); 506d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (!uiSourceCode) { 507d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) console.assert(uiSourceCode) 508d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return; 509d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } 510d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._sourceSelected(uiSourceCode, false); 51107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this.revealUISourceCode(uiSourceCode, true); 512d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this.rename(uiSourceCode, true); 513d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } 514d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 515d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 516d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) __proto__: WebInspector.VBox.prototype 517d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 518d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 519d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)/** 520d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @constructor 521d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @extends {WebInspector.NavigatorView} 522d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 523d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)WebInspector.SourcesNavigatorView = function() 524d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 525d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) WebInspector.NavigatorView.call(this); 5269e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) WebInspector.targetManager.addEventListener(WebInspector.TargetManager.Events.InspectedURLChanged, this._inspectedURLChanged, this); 527d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 528d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 529d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)WebInspector.SourcesNavigatorView.prototype = { 530d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 531d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @override 532d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 533d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @return {boolean} 534d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 535d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) accept: function(uiSourceCode) 536d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 537d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (!WebInspector.NavigatorView.prototype.accept(uiSourceCode)) 538d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return false; 53910f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch return uiSourceCode.project().type() !== WebInspector.projectTypes.ContentScripts && uiSourceCode.project().type() !== WebInspector.projectTypes.Snippets; 54010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch 541d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 542d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 543d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 544d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {!WebInspector.Event} event 545d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 546d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) _inspectedURLChanged: function(event) 547d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 548d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) var nodes = this._uiSourceCodeNodes.values(); 549d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) for (var i = 0; i < nodes.length; ++i) { 550d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) var uiSourceCode = nodes[i].uiSourceCode(); 5519e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) var inspectedPageURL = WebInspector.targetManager.inspectedPageURL(); 5529e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) if (inspectedPageURL && uiSourceCode.url === inspectedPageURL) 553d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this.revealUISourceCode(uiSourceCode, true); 554d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } 555d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 556d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 557d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 558d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 559d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 560d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) _addUISourceCode: function(uiSourceCode) 561d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 562d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) WebInspector.NavigatorView.prototype._addUISourceCode.call(this, uiSourceCode); 5639e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) var inspectedPageURL = WebInspector.targetManager.inspectedPageURL(); 5649e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) if (inspectedPageURL && uiSourceCode.url === inspectedPageURL) 565d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this.revealUISourceCode(uiSourceCode, true); 566d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 567d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 568d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) __proto__: WebInspector.NavigatorView.prototype 569d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 570d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 571d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)/** 572d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @constructor 573d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @extends {WebInspector.NavigatorView} 574d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 575d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)WebInspector.ContentScriptsNavigatorView = function() 576d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 577d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) WebInspector.NavigatorView.call(this); 578d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 579d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 580d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)WebInspector.ContentScriptsNavigatorView.prototype = { 581d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 582d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @override 583d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 584d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @return {boolean} 585d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 586d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) accept: function(uiSourceCode) 587d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 588d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (!WebInspector.NavigatorView.prototype.accept(uiSourceCode)) 589d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return false; 59010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch return uiSourceCode.project().type() === WebInspector.projectTypes.ContentScripts; 591d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 592d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 593d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) __proto__: WebInspector.NavigatorView.prototype 5945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 5975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 5985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {TreeOutline} 599a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Element} element 6005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 60153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)WebInspector.NavigatorTreeOutline = function(element) 6025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) TreeOutline.call(this, element); 6045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.element = element; 6055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.comparator = WebInspector.NavigatorTreeOutline._treeElementsCompare; 6075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 609926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.NavigatorTreeOutline.Types = { 610926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Root: "Root", 611926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Domain: "Domain", 612926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Folder: "Folder", 613926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) UISourceCode: "UISourceCode", 614926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) FileSystem: "FileSystem" 615926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 616926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 61709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)/** 61809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {!TreeElement} treeElement1 61909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {!TreeElement} treeElement2 62009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {number} 62109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 6225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.NavigatorTreeOutline._treeElementsCompare = function compare(treeElement1, treeElement2) 6235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Insert in the alphabetical order, first domains, then folders, then scripts. 6255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function typeWeight(treeElement) 6265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 627926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var type = treeElement.type(); 628926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (type === WebInspector.NavigatorTreeOutline.Types.Domain) { 6299e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) if (treeElement.titleText === WebInspector.targetManager.inspectedPageDomain()) 630926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 1; 631926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 2; 6325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 633926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (type === WebInspector.NavigatorTreeOutline.Types.FileSystem) 634926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 3; 635926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (type === WebInspector.NavigatorTreeOutline.Types.Folder) 636926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 4; 637926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return 5; 6385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var typeWeight1 = typeWeight(treeElement1); 6415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var typeWeight2 = typeWeight(treeElement2); 6425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var result; 6445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (typeWeight1 > typeWeight2) 6455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result = 1; 6465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else if (typeWeight1 < typeWeight2) 6475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result = -1; 6485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else { 6495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var title1 = treeElement1.titleText; 6505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var title2 = treeElement2.titleText; 651926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) result = title1.compareTo(title2); 6525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return result; 6545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.NavigatorTreeOutline.prototype = { 6575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 658a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Array.<!WebInspector.UISourceCode>} 6595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 6605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) scriptTreeElements: function() 6615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 6625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var result = []; 6635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this.children.length) { 6645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var treeElement = this.children[0]; treeElement; treeElement = treeElement.traverseNextTreeElement(false, this, true)) { 6655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (treeElement instanceof WebInspector.NavigatorSourceTreeElement) 6665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result.push(treeElement.uiSourceCode); 6675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return result; 6705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: TreeOutline.prototype 6735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 6765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 6775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {TreeElement} 678926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} type 6795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} title 680a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<string>} iconClasses 6815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} hasChildren 6825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean=} noIcon 6835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 684926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.BaseNavigatorTreeElement = function(type, title, iconClasses, hasChildren, noIcon) 6855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 686926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._type = type; 6875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) TreeElement.call(this, "", null, hasChildren); 6885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._titleText = title; 6895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._iconClasses = iconClasses; 6905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._noIcon = noIcon; 6915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.BaseNavigatorTreeElement.prototype = { 6945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) onattach: function() 6955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 6965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.listItemElement.removeChildren(); 6975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._iconClasses) { 6985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < this._iconClasses.length; ++i) 699a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.listItemElement.classList.add(this._iconClasses[i]); 7005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 702197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this.listItemElement.createChild("div", "selection"); 7035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 704197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch if (!this._noIcon) 705197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this.imageElement = this.listItemElement.createChild("img", "icon"); 706f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 707197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this.titleElement = this.listItemElement.createChild("div", "base-navigator-tree-element-title"); 7087242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci this.titleElement.textContent = this._titleText; 7095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 711197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch /** 712197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {!Array.<string>} iconClasses 713197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch */ 7141e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) updateIconClasses: function(iconClasses) 7151e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) { 7161e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) for (var i = 0; i < this._iconClasses.length; ++i) 717a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.listItemElement.classList.remove(this._iconClasses[i]); 7181e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) this._iconClasses = iconClasses; 7191e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) for (var i = 0; i < this._iconClasses.length; ++i) 720a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.listItemElement.classList.add(this._iconClasses[i]); 7211e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) }, 7221e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 7235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) onreveal: function() 7245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 7255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this.listItemElement) 7265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.listItemElement.scrollIntoViewIfNeeded(true); 7275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 7305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {string} 7315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 7325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get titleText() 7335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 7345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._titleText; 7355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set titleText(titleText) 7385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 739926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (this._titleText === titleText) 740926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 7415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._titleText = titleText || ""; 7427242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci if (this.titleElement) { 7435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.titleElement.textContent = this._titleText; 7447242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci this.titleElement.title = this._titleText; 7457242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci } 7465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 747f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 7485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 749926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {string} 750926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 751926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) type: function() 752926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 753926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this._type; 754926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 755926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 7565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: TreeElement.prototype 7575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 7605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 7615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {WebInspector.BaseNavigatorTreeElement} 762a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.NavigatorView} navigatorView 763926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} type 764926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} title 7655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 7661fad5ca6c42d689812b66fc493992aa6d747a6fbBen MurdochWebInspector.NavigatorFolderTreeElement = function(navigatorView, type, title) 7675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 768926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var iconClass = WebInspector.NavigatorView.iconClassForType(type); 769926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebInspector.BaseNavigatorTreeElement.call(this, type, title, [iconClass], true); 7701fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch this._navigatorView = navigatorView; 7715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.NavigatorFolderTreeElement.prototype = { 774926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) onpopulate: function() 7755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 776926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._node.populate(); 7775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) onattach: function() 7805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 7815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.BaseNavigatorTreeElement.prototype.onattach.call(this); 782926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.collapse(); 7831fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch this.listItemElement.addEventListener("contextmenu", this._handleContextMenuEvent.bind(this), false); 7845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 78653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) /** 787a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.NavigatorFolderTreeNode} node 78853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) */ 78953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) setNode: function(node) 79053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 79153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._node = node; 79253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var paths = []; 79353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) while (node && !node.isRoot()) { 79453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) paths.push(node._title); 79553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) node = node.parent; 79653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) } 79753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) paths.reverse(); 79853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.tooltip = paths.join("/"); 79953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) }, 80053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 8011fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch /** 802197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {!Event} event 8031fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch */ 8041fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch _handleContextMenuEvent: function(event) 8051fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch { 8061fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch if (!this._node) 8071fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch return; 8081fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch this.select(); 809197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._navigatorView.handleFolderContextMenu(event, this._node); 8101fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch }, 8111fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch 8125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: WebInspector.BaseNavigatorTreeElement.prototype 8135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 8165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 8175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {WebInspector.BaseNavigatorTreeElement} 818a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.NavigatorView} navigatorView 819a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 8205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} title 8215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 8225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.NavigatorSourceTreeElement = function(navigatorView, uiSourceCode, title) 8235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 8245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._navigatorView = navigatorView; 8255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._uiSourceCode = uiSourceCode; 8261e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) WebInspector.BaseNavigatorTreeElement.call(this, WebInspector.NavigatorTreeOutline.Types.UISourceCode, title, this._calculateIconClasses(), false); 827926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.tooltip = uiSourceCode.originURL(); 8285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.NavigatorSourceTreeElement.prototype = { 8315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 832a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.UISourceCode} 8335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 8345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get uiSourceCode() 8355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 8365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._uiSourceCode; 8375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8391e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) /** 840a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Array.<string>} 8411e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) */ 8421e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) _calculateIconClasses: function() 8431e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) { 8441e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) return ["navigator-" + this._uiSourceCode.contentType().name() + "-tree-item"]; 8451e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) }, 8461e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 8471e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) updateIcon: function() 8481e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) { 8491e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) this.updateIconClasses(this._calculateIconClasses()); 8501e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) }, 8511e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 8525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) onattach: function() 8535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 8545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.BaseNavigatorTreeElement.prototype.onattach.call(this); 8555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.listItemElement.draggable = true; 8565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.listItemElement.addEventListener("click", this._onclick.bind(this), false); 8575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.listItemElement.addEventListener("contextmenu", this._handleContextMenuEvent.bind(this), false); 8585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.listItemElement.addEventListener("mousedown", this._onmousedown.bind(this), false); 8595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.listItemElement.addEventListener("dragstart", this._ondragstart.bind(this), false); 8605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _onmousedown: function(event) 8635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 8645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (event.which === 1) // Warm-up data for drag'n'drop 8655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._uiSourceCode.requestContent(callback.bind(this)); 8665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 8675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?string} content 86809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.NavigatorSourceTreeElement} 8695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 8701e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) function callback(content) 8715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 8725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._warmedUpContent = content; 8735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) _shouldRenameOnMouseDown: function() 87753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 87893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) if (!this._uiSourceCode.canRename()) 87993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return false; 88053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var isSelected = this === this.treeOutline.selectedTreeElement; 88153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var isFocused = this.treeOutline.childrenListElement.isSelfOrAncestor(document.activeElement); 88253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return isSelected && isFocused && !WebInspector.isBeingEdited(this.treeOutline.element); 88353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) }, 88453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 88553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) selectOnMouseDown: function(event) 88653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 88793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) if (event.which !== 1 || !this._shouldRenameOnMouseDown()) { 88853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) TreeElement.prototype.selectOnMouseDown.call(this, event); 88953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return; 89053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) } 89153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) setTimeout(rename.bind(this), 300); 89253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 89309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 89409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.NavigatorSourceTreeElement} 89509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 89653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) function rename() 89753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 89853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (this._shouldRenameOnMouseDown()) 899d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this._navigatorView.rename(this.uiSourceCode, false); 90053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) } 90153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) }, 90253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 9035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _ondragstart: function(event) 9045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 9055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.dataTransfer.setData("text/plain", this._warmedUpContent); 9065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.dataTransfer.effectAllowed = "copy"; 9075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 9085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 9095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 91009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 91109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {boolean} 91209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 9135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) onspace: function() 9145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 91506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) this._navigatorView._sourceSelected(this.uiSourceCode, true); 9165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 9175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 9185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 920a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Event} event 9215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 9225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _onclick: function(event) 9235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 92406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) this._navigatorView._sourceSelected(this.uiSourceCode, false); 9255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 9265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 928a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @override 92909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {boolean} 9305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 9315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ondblclick: function(event) 9325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 9335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var middleClick = event.button === 1; 93406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) this._navigatorView._sourceSelected(this.uiSourceCode, !middleClick); 935a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) return false; 9365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 9375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 938a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** 939a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @override 94009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {boolean} 941a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) */ 9425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) onenter: function() 9435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 94406f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) this._navigatorView._sourceSelected(this.uiSourceCode, true); 9455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 9465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 9475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 948a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** 949a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @override 95009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {boolean} 951a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) */ 9521e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) ondelete: function() 9531e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) { 9541e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) this._navigatorView.sourceDeleted(this.uiSourceCode); 9551e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) return true; 9561e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) }, 9571e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 9585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 959a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Event} event 9605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 9615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _handleContextMenuEvent: function(event) 9625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 96353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.select(); 9643c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch this._navigatorView.handleFileContextMenu(event, this._uiSourceCode); 9655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 9665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: WebInspector.BaseNavigatorTreeElement.prototype 9685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 969926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 970926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)/** 971926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @constructor 972926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} id 973926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 974926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.NavigatorTreeNode = function(id) 975926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 976926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.id = id; 9777757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch /** @type {!StringMap.<!WebInspector.NavigatorTreeNode>} */ 978e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) this._children = new StringMap(); 979926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 980926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 981926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.NavigatorTreeNode.prototype = { 982926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 983a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!TreeElement} 984926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 98509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) treeElement: function() { throw "Not implemented"; }, 986926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 987926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) dispose: function() { }, 988926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 989926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 990926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {boolean} 991926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 992926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) isRoot: function() 993926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 994926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return false; 995926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 996926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 997926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 998926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {boolean} 999926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 1000926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) hasChildren: function() 1001926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1002926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return true; 1003926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1004926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1005926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) populate: function() 1006926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1007926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (this.isPopulated()) 1008926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 1009926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (this.parent) 1010926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.parent.populate(); 1011926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._populated = true; 1012926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.wasPopulated(); 1013926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1014926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1015926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) wasPopulated: function() 1016926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1017e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) var children = this.children(); 1018e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) for (var i = 0; i < children.length; ++i) 1019e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) this.treeElement().appendChild(children[i].treeElement()); 1020926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1021926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 10227757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch /** 10237757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch * @param {!WebInspector.NavigatorTreeNode} node 10247757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch */ 1025926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) didAddChild: function(node) 1026926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1027926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (this.isPopulated()) 1028926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.treeElement().appendChild(node.treeElement()); 1029926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1030926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 10317757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch /** 10327757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch * @param {!WebInspector.NavigatorTreeNode} node 10337757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch */ 1034926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) willRemoveChild: function(node) 1035926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1036926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (this.isPopulated()) 1037926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.treeElement().removeChild(node.treeElement()); 1038926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1039926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 10407757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch /** 10417757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch * @return {boolean} 10427757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch */ 1043926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) isPopulated: function() 1044926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1045926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this._populated; 1046926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1047926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 10487757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch /** 10497757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch * @return {boolean} 10507757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch */ 1051926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) isEmpty: function() 1052926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 10539e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) return !this._children.size; 1054926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1055926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 10567757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch /** 10577757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch * @param {string} id 105809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {?WebInspector.NavigatorTreeNode} 10597757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch */ 1060926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) child: function(id) 1061926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 106209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return this._children.get(id) || null; 1063926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1064926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 10657757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch /** 10667757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch * @return {!Array.<!WebInspector.NavigatorTreeNode>} 10677757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch */ 1068926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) children: function() 1069926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1070e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) return this._children.values(); 1071926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1072926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 10737757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch /** 10747757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch * @param {!WebInspector.NavigatorTreeNode} node 10757757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch */ 1076926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) appendChild: function(node) 1077926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 10789e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) this._children.set(node.id, node); 1079926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) node.parent = this; 1080926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.didAddChild(node); 1081926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1082926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 10837757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch /** 10847757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch * @param {!WebInspector.NavigatorTreeNode} node 10857757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch */ 1086926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) removeChild: function(node) 1087926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1088926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.willRemoveChild(node); 1089e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) this._children.remove(node.id); 1090926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) delete node.parent; 1091926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) node.dispose(); 1092926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1093926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1094926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) reset: function() 1095926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1096e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) this._children.clear(); 1097926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 1098926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1099926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1100926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)/** 1101926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @constructor 1102926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @extends {WebInspector.NavigatorTreeNode} 1103a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.NavigatorView} navigatorView 1104926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 1105926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.NavigatorRootTreeNode = function(navigatorView) 1106926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 1107926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebInspector.NavigatorTreeNode.call(this, ""); 1108926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._navigatorView = navigatorView; 1109926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1110926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1111926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.NavigatorRootTreeNode.prototype = { 1112926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 1113926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {boolean} 1114926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 1115926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) isRoot: function() 1116926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1117926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return true; 1118926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1119926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1120926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 1121a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!TreeOutline} 1122926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 1123926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) treeElement: function() 1124926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1125926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this._navigatorView._scriptsTree; 1126926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1127926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1128926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) __proto__: WebInspector.NavigatorTreeNode.prototype 1129926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1130926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1131926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)/** 1132926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @constructor 1133926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @extends {WebInspector.NavigatorTreeNode} 1134a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.NavigatorView} navigatorView 1135a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 1136926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 1137926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.NavigatorUISourceCodeTreeNode = function(navigatorView, uiSourceCode) 1138926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 1139926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebInspector.NavigatorTreeNode.call(this, uiSourceCode.name()); 1140926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._navigatorView = navigatorView; 1141926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._uiSourceCode = uiSourceCode; 1142591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._treeElement = null; 1143926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1144926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1145926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.NavigatorUISourceCodeTreeNode.prototype = { 1146926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 1147a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.UISourceCode} 1148926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 1149926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) uiSourceCode: function() 1150926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1151926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this._uiSourceCode; 1152926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1153926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 11541e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) updateIcon: function() 11551e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) { 11561e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) if (this._treeElement) 11571e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) this._treeElement.updateIcon(); 11581e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) }, 11591e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 1160926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 1161a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!TreeElement} 1162926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 1163926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) treeElement: function() 1164926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1165926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (this._treeElement) 1166926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this._treeElement; 1167926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1168926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._treeElement = new WebInspector.NavigatorSourceTreeElement(this._navigatorView, this._uiSourceCode, ""); 1169926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.updateTitle(); 1170926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1171926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.TitleChanged, this._titleChanged, this); 1172926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyChanged, this._workingCopyChanged, this); 1173926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.WorkingCopyCommitted, this._workingCopyCommitted, this); 1174926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1175926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this._treeElement; 1176926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1177926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1178926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 1179926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {boolean=} ignoreIsDirty 1180926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 1181926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) updateTitle: function(ignoreIsDirty) 1182926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1183926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!this._treeElement) 1184926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 1185926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1186e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch var titleText = this._uiSourceCode.displayName(); 11878abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) if (!ignoreIsDirty && (this._uiSourceCode.isDirty() || this._uiSourceCode.hasUnsavedCommittedChanges())) 1188926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) titleText = "*" + titleText; 1189926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._treeElement.titleText = titleText; 1190926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1191926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1192926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 1193926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {boolean} 1194926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 1195926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) hasChildren: function() 1196926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1197926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return false; 1198926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1199926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1200926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) dispose: function() 1201926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1202926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!this._treeElement) 1203926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 1204926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.TitleChanged, this._titleChanged, this); 1205926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.WorkingCopyChanged, this._workingCopyChanged, this); 1206926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.WorkingCopyCommitted, this._workingCopyCommitted, this); 1207926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1208926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1209926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _titleChanged: function(event) 1210926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1211926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.updateTitle(); 1212926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1213926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1214926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _workingCopyChanged: function(event) 1215926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1216926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.updateTitle(); 1217926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1218926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1219926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _workingCopyCommitted: function(event) 1220926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1221926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.updateTitle(); 1222926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1223926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1224926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 1225926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {boolean=} select 1226926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 1227926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) reveal: function(select) 1228926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1229926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.parent.populate(); 1230926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.parent.treeElement().expand(); 1231926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._treeElement.reveal(); 1232926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (select) 123309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._treeElement.select(true); 1234926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1235926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1236926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 1237926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {function(boolean)=} callback 1238926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 1239926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) rename: function(callback) 1240926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1241926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!this._treeElement) 1242926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 1243926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1244926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) // Tree outline should be marked as edited as well as the tree element to prevent search from starting. 1245926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var treeOutlineElement = this._treeElement.treeOutline.element; 1246926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebInspector.markBeingEdited(treeOutlineElement, true); 1247926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 124809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 124909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {!Element} element 125009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {string} newTitle 125109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {string} oldTitle 125209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.NavigatorUISourceCodeTreeNode} 125309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 1254926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) function commitHandler(element, newTitle, oldTitle) 1255926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 125693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) if (newTitle !== oldTitle) { 125793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this._treeElement.titleText = newTitle; 125893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this._uiSourceCode.rename(newTitle, renameCallback.bind(this)); 125993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return; 126093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) } 126193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) afterEditing.call(this, true); 126293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) } 126393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 126409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 126509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {boolean} success 126609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.NavigatorUISourceCodeTreeNode} 126709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 126893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) function renameCallback(success) 126993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { 127093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) if (!success) { 127193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) WebInspector.markBeingEdited(treeOutlineElement, false); 127293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this.updateTitle(); 127393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this.rename(callback); 127493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) return; 127593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) } 1276926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) afterEditing.call(this, true); 1277926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 1278926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 127909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 128009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.NavigatorUISourceCodeTreeNode} 128109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 1282926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) function cancelHandler() 1283926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1284926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) afterEditing.call(this, false); 1285926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 1286926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1287926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 1288926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {boolean} committed 128909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.NavigatorUISourceCodeTreeNode} 1290926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 1291926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) function afterEditing(committed) 1292926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1293926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebInspector.markBeingEdited(treeOutlineElement, false); 1294926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.updateTitle(); 129593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) this._treeElement.treeOutline.childrenListElement.focus(); 1296926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (callback) 1297926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) callback(committed); 1298926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 1299926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 130009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) var editingConfig = new WebInspector.InplaceEditor.Config(commitHandler.bind(this), cancelHandler.bind(this)); 1301926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.updateTitle(true); 130209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) WebInspector.InplaceEditor.startEditing(this._treeElement.titleElement, editingConfig); 1303926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) window.getSelection().setBaseAndExtent(this._treeElement.titleElement, 0, this._treeElement.titleElement, 1); 1304926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1305926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1306926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) __proto__: WebInspector.NavigatorTreeNode.prototype 1307926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1308926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1309926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)/** 1310926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @constructor 1311926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @extends {WebInspector.NavigatorTreeNode} 1312a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.NavigatorView} navigatorView 1313a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {?WebInspector.Project} project 1314926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} id 1315926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} type 1316591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * @param {string} folderPath 1317926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {string} title 1318926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 13191fad5ca6c42d689812b66fc493992aa6d747a6fbBen MurdochWebInspector.NavigatorFolderTreeNode = function(navigatorView, project, id, type, folderPath, title) 1320926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 1321926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebInspector.NavigatorTreeNode.call(this, id); 1322926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._navigatorView = navigatorView; 13231fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch this._project = project; 1324926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._type = type; 1325591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._folderPath = folderPath; 1326926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._title = title; 1327926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1328926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1329926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.NavigatorFolderTreeNode.prototype = { 1330926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 1331a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!TreeElement} 1332926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 1333926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) treeElement: function() 1334926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1335926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (this._treeElement) 1336926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this._treeElement; 1337926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._treeElement = this._createTreeElement(this._title, this); 1338926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this._treeElement; 1339926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1340926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1341926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 1342a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!TreeElement} 1343926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 1344926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _createTreeElement: function(title, node) 1345926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 13461fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch var treeElement = new WebInspector.NavigatorFolderTreeElement(this._navigatorView, this._type, title); 134753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) treeElement.setNode(node); 1348926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return treeElement; 1349926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1350926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1351926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) wasPopulated: function() 1352926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1353926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!this._treeElement || this._treeElement._node !== this) 1354926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 1355926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._addChildrenRecursive(); 1356926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1357926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1358926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _addChildrenRecursive: function() 1359926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1360e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) var children = this.children(); 1361e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) for (var i = 0; i < children.length; ++i) { 1362e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles) var child = children[i]; 1363926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.didAddChild(child); 1364926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (child instanceof WebInspector.NavigatorFolderTreeNode) 1365926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) child._addChildrenRecursive(); 1366926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 1367926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1368926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1369926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _shouldMerge: function(node) 1370926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1371926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this._type !== WebInspector.NavigatorTreeOutline.Types.Domain && node instanceof WebInspector.NavigatorFolderTreeNode; 1372926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1373926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1374926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) didAddChild: function(node) 1375926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1376926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) function titleForNode(node) 1377926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1378926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return node._title; 1379926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 1380926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1381926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!this._treeElement) 1382926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 1383926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1384926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var children = this.children(); 1385926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1386926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (children.length === 1 && this._shouldMerge(node)) { 1387926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) node._isMerged = true; 1388926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._treeElement.titleText = this._treeElement.titleText + "/" + node._title; 1389926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) node._treeElement = this._treeElement; 139053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._treeElement.setNode(node); 1391926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 1392926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 1393926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1394926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var oldNode; 1395926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (children.length === 2) 1396926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) oldNode = children[0] !== node ? children[0] : children[1]; 1397926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (oldNode && oldNode._isMerged) { 1398926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) delete oldNode._isMerged; 1399926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var mergedToNodes = []; 1400926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) mergedToNodes.push(this); 1401926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var treeNode = this; 1402926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) while (treeNode._isMerged) { 1403926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) treeNode = treeNode.parent; 1404926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) mergedToNodes.push(treeNode); 1405926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 1406926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) mergedToNodes.reverse(); 1407926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var titleText = mergedToNodes.map(titleForNode).join("/"); 1408926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1409926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var nodes = []; 1410926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) treeNode = oldNode; 1411926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) do { 1412926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) nodes.push(treeNode); 1413926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) children = treeNode.children(); 1414926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) treeNode = children.length === 1 ? children[0] : null; 1415926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } while (treeNode && treeNode._isMerged); 1416926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1417926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!this.isPopulated()) { 1418926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._treeElement.titleText = titleText; 141953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._treeElement.setNode(this); 1420926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) for (var i = 0; i < nodes.length; ++i) { 1421926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) delete nodes[i]._treeElement; 1422926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) delete nodes[i]._isMerged; 1423926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 1424926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 1425926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 1426926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var oldTreeElement = this._treeElement; 1427926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var treeElement = this._createTreeElement(titleText, this); 1428926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) for (var i = 0; i < mergedToNodes.length; ++i) 1429926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) mergedToNodes[i]._treeElement = treeElement; 1430926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) oldTreeElement.parent.appendChild(treeElement); 1431926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 143253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) oldTreeElement.setNode(nodes[nodes.length - 1]); 1433926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) oldTreeElement.titleText = nodes.map(titleForNode).join("/"); 1434926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) oldTreeElement.parent.removeChild(oldTreeElement); 1435926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._treeElement.appendChild(oldTreeElement); 1436926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (oldTreeElement.expanded) 1437926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) treeElement.expand(); 1438926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 1439926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (this.isPopulated()) 1440926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._treeElement.appendChild(node.treeElement()); 1441926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1442926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1443926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) willRemoveChild: function(node) 1444926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 1445926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (node._isMerged || !this.isPopulated()) 1446926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 1447926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._treeElement.removeChild(node._treeElement); 1448926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 1449926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1450926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) __proto__: WebInspector.NavigatorTreeNode.prototype 1451926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1452