Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(550)

Unified Diff: third_party/WebKit/Source/devtools/front_end/sources/NavigatorView.js

Issue 2570503003: [DevTools] Prepare navigator to multiple nodes per UISourceCode. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | third_party/WebKit/Source/devtools/front_end/sources/SourcesNavigator.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/devtools/front_end/sources/NavigatorView.js
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/NavigatorView.js b/third_party/WebKit/Source/devtools/front_end/sources/NavigatorView.js
index 318003413833a5faa57f3fedf5a6e6ab05be3eca..a830d58dd6dd5d541bc16b91b9cd12445a641a70 100644
--- a/third_party/WebKit/Source/devtools/front_end/sources/NavigatorView.js
+++ b/third_party/WebKit/Source/devtools/front_end/sources/NavigatorView.js
@@ -40,7 +40,7 @@ Sources.NavigatorView = class extends UI.VBox {
this.element.appendChild(this._scriptsTree.element);
this.setDefaultFocusedElement(this._scriptsTree.element);
- /** @type {!Map.<!Workspace.UISourceCode, !Sources.NavigatorUISourceCodeTreeNode>} */
+ /** @type {!Map.<!Workspace.UISourceCode, !Array<!Sources.NavigatorUISourceCodeTreeNode>>} */
this._uiSourceCodeNodes = new Map();
/** @type {!Map.<string, !Sources.NavigatorFolderTreeNode>} */
this._subfolderNodes = new Map();
@@ -188,11 +188,11 @@ Sources.NavigatorView = class extends UI.VBox {
var binding = /** @type {!Persistence.PersistenceBinding} */ (event.data);
// Update UISourceCode titles.
- var networkNode = this._uiSourceCodeNodes.get(binding.network);
- if (networkNode)
+ var networkNodes = this._uiSourceCodeNodes.get(binding.network) || [];
+ for (var networkNode of networkNodes)
networkNode.updateTitle();
- var fileSystemNode = this._uiSourceCodeNodes.get(binding.fileSystem);
- if (fileSystemNode)
+ var fileSystemNodes = this._uiSourceCodeNodes.get(binding.fileSystem) || [];
+ for (var fileSystemNode of fileSystemNodes)
fileSystemNode.updateTitle();
// Update folder titles.
@@ -232,6 +232,14 @@ Sources.NavigatorView = class extends UI.VBox {
}
/**
+ * @return {!Workspace.Workspace}
+ * @protected
+ */
+ workspace() {
+ return this._workspace;
+ }
+
+ /**
* @param {!Workspace.UISourceCode} uiSourceCode
* @return {boolean}
*/
@@ -278,7 +286,7 @@ Sources.NavigatorView = class extends UI.VBox {
var folderNode =
this._folderNode(uiSourceCode, project, target, frame, uiSourceCode.origin(), path, isFromSourceMap);
var uiSourceCodeNode = new Sources.NavigatorUISourceCodeTreeNode(this, uiSourceCode);
- this._uiSourceCodeNodes.set(uiSourceCode, uiSourceCodeNode);
+ this._uiSourceCodeNodes.set(uiSourceCode, [uiSourceCodeNode]);
folderNode.appendChild(uiSourceCodeNode);
this.uiSourceCodeAdded(uiSourceCode);
}
@@ -290,13 +298,6 @@ Sources.NavigatorView = class extends UI.VBox {
}
/**
- * @return {!Array<!Sources.NavigatorUISourceCodeTreeNode>}
- */
- uiSourceCodeNodes() {
- return this._uiSourceCodeNodes.valuesArray();
- }
-
- /**
* @param {!Common.Event} event
*/
_uiSourceCodeAdded(event) {
@@ -496,15 +497,18 @@ Sources.NavigatorView = class extends UI.VBox {
/**
* @param {!Workspace.UISourceCode} uiSourceCode
* @param {boolean=} select
+ * @return {?Sources.NavigatorUISourceCodeTreeNode}
*/
revealUISourceCode(uiSourceCode, select) {
- var node = this._uiSourceCodeNodes.get(uiSourceCode);
- if (!node)
- return;
+ var nodes = this._uiSourceCodeNodes.get(uiSourceCode);
+ if (!nodes)
+ return null;
if (this._scriptsTree.selectedTreeElement)
this._scriptsTree.selectedTreeElement.deselect();
this._lastSelectedUISourceCode = uiSourceCode;
- node.reveal(select);
+ // TODO(dgozman): figure out revealing multiple.
+ nodes[0].reveal(select);
+ return nodes[0];
}
/**
@@ -526,39 +530,42 @@ Sources.NavigatorView = class extends UI.VBox {
* @param {!Workspace.UISourceCode} uiSourceCode
*/
_removeUISourceCode(uiSourceCode) {
- var node = this._uiSourceCodeNodes.get(uiSourceCode);
- if (!node)
- return;
+ var nodes = this._uiSourceCodeNodes.get(uiSourceCode) || [];
+ for (var i = 0; i < nodes.length; i++) {
+ var node = nodes[i];
- var project = uiSourceCode.project();
- var target = Bindings.NetworkProject.targetForUISourceCode(uiSourceCode);
- var frame = this._uiSourceCodeFrame(uiSourceCode);
+ var project = uiSourceCode.project();
+ var target = Bindings.NetworkProject.targetForUISourceCode(uiSourceCode);
+ var frame = this._uiSourceCodeFrame(uiSourceCode);
- var parentNode = node.parent;
- this._uiSourceCodeNodes.delete(uiSourceCode);
- parentNode.removeChild(node);
- node = parentNode;
-
- while (node) {
- parentNode = node.parent;
- if (!parentNode || !node.isEmpty())
- break;
- if (!(node instanceof Sources.NavigatorGroupTreeNode || node instanceof Sources.NavigatorFolderTreeNode))
- break;
- if (node._type === Sources.NavigatorView.Types.Frame)
- break;
-
- var folderId = this._folderNodeId(project, target, frame, uiSourceCode.origin(), node._folderPath);
- this._subfolderNodes.delete(folderId);
+ var parentNode = node.parent;
parentNode.removeChild(node);
node = parentNode;
+
+ while (node) {
+ parentNode = node.parent;
+ if (!parentNode || !node.isEmpty())
+ break;
+ if (!(node instanceof Sources.NavigatorGroupTreeNode || node instanceof Sources.NavigatorFolderTreeNode))
+ break;
+ if (node._type === Sources.NavigatorView.Types.Frame)
+ break;
+
+ var folderId = this._folderNodeId(project, target, frame, uiSourceCode.origin(), node._folderPath);
+ this._subfolderNodes.delete(folderId);
+ parentNode.removeChild(node);
+ node = parentNode;
+ }
}
+ this._uiSourceCodeNodes.delete(uiSourceCode);
}
reset() {
- var nodes = this._uiSourceCodeNodes.valuesArray();
- for (var i = 0; i < nodes.length; ++i)
- nodes[i].dispose();
+ for (var entry of this._uiSourceCodeNodes) {
+ var nodes = /** @type {!Array<!Sources.NavigatorUISourceCodeTreeNode>} */ (entry[1]);
+ for (var i = 0; i < nodes.length; i++)
+ nodes[i].dispose();
+ }
this._scriptsTree.removeChildren();
this._uiSourceCodeNodes.clear();
@@ -583,10 +590,10 @@ Sources.NavigatorView = class extends UI.VBox {
}
/**
- * @param {!Workspace.UISourceCode} uiSourceCode
+ * @param {!Sources.NavigatorUISourceCodeTreeNode} node
*/
- _handleContextMenuRename(uiSourceCode) {
- this.rename(uiSourceCode, false);
+ _handleContextMenuRename(node) {
+ this.rename(node, false);
}
/**
@@ -613,9 +620,10 @@ Sources.NavigatorView = class extends UI.VBox {
/**
* @param {!Event} event
- * @param {!Workspace.UISourceCode} uiSourceCode
+ * @param {!Sources.NavigatorUISourceCodeTreeNode} node
*/
- handleFileContextMenu(event, uiSourceCode) {
+ handleFileContextMenu(event, node) {
+ var uiSourceCode = node.uiSourceCode();
var contextMenu = new UI.ContextMenu(event);
contextMenu.appendApplicableItems(uiSourceCode);
contextMenu.appendSeparator();
@@ -623,7 +631,7 @@ Sources.NavigatorView = class extends UI.VBox {
var project = uiSourceCode.project();
if (project.type() === Workspace.projectTypes.FileSystem) {
var parentURL = uiSourceCode.parentURL();
- contextMenu.appendItem(Common.UIString('Rename\u2026'), this._handleContextMenuRename.bind(this, uiSourceCode));
+ contextMenu.appendItem(Common.UIString('Rename\u2026'), this._handleContextMenuRename.bind(this, node));
contextMenu.appendItem(
Common.UIString('Make a copy\u2026'),
this._handleContextMenuCreate.bind(this, project, parentURL, uiSourceCode));
@@ -668,12 +676,12 @@ Sources.NavigatorView = class extends UI.VBox {
}
/**
- * @param {!Workspace.UISourceCode} uiSourceCode
+ * @param {!Sources.NavigatorUISourceCodeTreeNode} node
* @param {boolean} deleteIfCanceled
+ * @protected
*/
- rename(uiSourceCode, deleteIfCanceled) {
- var node = this._uiSourceCodeNodes.get(uiSourceCode);
- console.assert(node);
+ rename(node, deleteIfCanceled) {
+ var uiSourceCode = node.uiSourceCode();
node.rename(callback.bind(this));
/**
@@ -729,8 +737,9 @@ Sources.NavigatorView = class extends UI.VBox {
if (!uiSourceCode)
return;
this._sourceSelected(uiSourceCode, false);
- this.revealUISourceCode(uiSourceCode, true);
- this.rename(uiSourceCode, true);
+ var node = this.revealUISourceCode(uiSourceCode, true);
+ if (node)
+ this.rename(node, true);
}
}
@@ -922,10 +931,12 @@ Sources.NavigatorSourceTreeElement = class extends TreeElement {
* @param {!Sources.NavigatorView} navigatorView
* @param {!Workspace.UISourceCode} uiSourceCode
* @param {string} title
+ * @param {!Sources.NavigatorUISourceCodeTreeNode} node
*/
- constructor(navigatorView, uiSourceCode, title) {
+ constructor(navigatorView, uiSourceCode, title, node) {
super('', false);
this._nodeType = Sources.NavigatorView.Types.File;
+ this._node = node;
this.title = title;
this.listItemElement.classList.add(
'navigator-' + uiSourceCode.contentType().name() + '-tree-item', 'navigator-file-tree-item');
@@ -988,7 +999,7 @@ Sources.NavigatorSourceTreeElement = class extends TreeElement {
*/
function rename() {
if (this._shouldRenameOnMouseDown())
- this._navigatorView.rename(this.uiSourceCode, false);
+ this._navigatorView.rename(this._node, false);
}
}
@@ -1047,7 +1058,7 @@ Sources.NavigatorSourceTreeElement = class extends TreeElement {
*/
_handleContextMenuEvent(event) {
this.select();
- this._navigatorView.handleFileContextMenu(event, this._uiSourceCode);
+ this._navigatorView.handleFileContextMenu(event, this._node);
}
};
@@ -1244,7 +1255,7 @@ Sources.NavigatorUISourceCodeTreeNode = class extends Sources.NavigatorTreeNode
if (this._treeElement)
return this._treeElement;
- this._treeElement = new Sources.NavigatorSourceTreeElement(this._navigatorView, this._uiSourceCode, '');
+ this._treeElement = new Sources.NavigatorSourceTreeElement(this._navigatorView, this._uiSourceCode, '', this);
this.updateTitle();
var updateTitleBound = this.updateTitle.bind(this, undefined);
« no previous file with comments | « no previous file | third_party/WebKit/Source/devtools/front_end/sources/SourcesNavigator.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698