From fe94af834a074589890eb6e12e5cd11af79ced58 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 13 Sep 2019 16:53:56 +0200 Subject: [PATCH] remove URI from resource tree --- src/vs/base/common/resourceTree.ts | 11 ++++------- src/vs/base/test/common/resourceTree.test.ts | 7 +++---- src/vs/workbench/contrib/scm/browser/scmViewlet.ts | 9 ++++++--- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/vs/base/common/resourceTree.ts b/src/vs/base/common/resourceTree.ts index 93346bf26a8..79ea1f16c2c 100644 --- a/src/vs/base/common/resourceTree.ts +++ b/src/vs/base/common/resourceTree.ts @@ -3,7 +3,6 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { URI } from 'vs/base/common/uri'; import { memoize } from 'vs/base/common/decorators'; import * as paths from 'vs/base/common/path'; import { Iterator } from 'vs/base/common/iterator'; @@ -74,10 +73,8 @@ export class ResourceTree> { readonly root = new BranchNode(''); - constructor() { } - - add(uri: URI, element: T): void { - const parts = uri.fsPath.split(/[\\\/]/).filter(p => !!p); + add(key: string, element: T): void { + const parts = key.split(/[\\\/]/).filter(p => !!p); let node = this.root; let path = this.root.path; @@ -114,8 +111,8 @@ export class ResourceTree> { } } - delete(uri: URI): T | undefined { - const parts = uri.fsPath.split(/[\\\/]/).filter(p => !!p); + delete(key: string): T | undefined { + const parts = key.split(/[\\\/]/).filter(p => !!p); return this._delete(this.root, parts, 0); } diff --git a/src/vs/base/test/common/resourceTree.test.ts b/src/vs/base/test/common/resourceTree.test.ts index ad1797ca875..97af22d260b 100644 --- a/src/vs/base/test/common/resourceTree.test.ts +++ b/src/vs/base/test/common/resourceTree.test.ts @@ -5,7 +5,6 @@ import * as assert from 'assert'; import { ResourceTree, IBranchNode, ILeafNode, isBranchNode } from 'vs/base/common/resourceTree'; -import { URI } from 'vs/base/common/uri'; suite('ResourceTree', function () { test('ctor', function () { @@ -17,7 +16,7 @@ suite('ResourceTree', function () { test('simple', function () { const tree = new ResourceTree(); - tree.add(URI.file('/foo/bar.txt'), 'bar contents'); + tree.add('/foo/bar.txt', 'bar contents'); assert(isBranchNode(tree.root)); assert.equal(tree.root.size, 1); @@ -31,7 +30,7 @@ suite('ResourceTree', function () { assert(!isBranchNode(bar)); assert.equal(bar.element, 'bar contents'); - tree.add(URI.file('/hello.txt'), 'hello contents'); + tree.add('/hello.txt', 'hello contents'); assert.equal(tree.root.size, 2); let hello = tree.root.get('hello.txt') as ILeafNode; @@ -39,7 +38,7 @@ suite('ResourceTree', function () { assert(!isBranchNode(hello)); assert.equal(hello.element, 'hello contents'); - tree.delete(URI.file('/foo/bar.txt')); + tree.delete('/foo/bar.txt'); assert.equal(tree.root.size, 1); hello = tree.root.get('hello.txt') as ILeafNode; assert(hello); diff --git a/src/vs/workbench/contrib/scm/browser/scmViewlet.ts b/src/vs/workbench/contrib/scm/browser/scmViewlet.ts index 66f466fadef..67df43fdb2f 100644 --- a/src/vs/workbench/contrib/scm/browser/scmViewlet.ts +++ b/src/vs/workbench/contrib/scm/browser/scmViewlet.ts @@ -7,7 +7,7 @@ import 'vs/css!./media/scmViewlet'; import { localize } from 'vs/nls'; import { Event, Emitter } from 'vs/base/common/event'; import { domEvent } from 'vs/base/browser/event'; -import { basename } from 'vs/base/common/resources'; +import { basename, relativePath } from 'vs/base/common/resources'; import { IDisposable, dispose, Disposable, DisposableStore, combinedDisposable, toDisposable } from 'vs/base/common/lifecycle'; import { ViewletPanel, IViewletPanelOptions } from 'vs/workbench/browser/parts/views/panelViewlet'; import { append, $, addClass, toggleClass, trackFocus, removeClass, addClasses } from 'vs/base/browser/dom'; @@ -56,6 +56,7 @@ import { ObjectTree, ICompressibleTreeRenderer } from 'vs/base/browser/ui/tree/o import { Iterator } from 'vs/base/common/iterator'; import * as paths from 'vs/base/common/path'; import { ICompressedTreeNode, ICompressedTreeElement } from 'vs/base/browser/ui/tree/compressedObjectTreeModel'; +import { URI } from 'vs/base/common/uri'; export interface ISpliceEvent { index: number; @@ -732,14 +733,16 @@ class ResourceGroupSplicer { } private onDidSpliceGroup(item: IGroupItem, { start, deleteCount, toInsert }: ISplice): void { + const root = item.group.provider.rootUri || URI.file('/'); + for (const resource of toInsert) { - item.tree.add(resource.sourceUri, resource); + item.tree.add(relativePath(root, resource.sourceUri) || resource.sourceUri.fsPath, resource); } const deleted = item.resources.splice(start, deleteCount, ...toInsert); for (const resource of deleted) { - item.tree.delete(resource.sourceUri); + item.tree.delete(relativePath(root, resource.sourceUri) || resource.sourceUri.fsPath); } this.fullRefresh(); -- GitLab