Skip to content

Commit 4f306c9

Browse files
committed
Setter and getter for data provider in tree viewer
1 parent 8fdf170 commit 4f306c9

3 files changed

Lines changed: 8 additions & 19 deletions

File tree

src/vs/workbench/api/electron-browser/mainThreadTreeViews.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export class MainThreadTreeViews extends Disposable implements MainThreadTreeVie
3131
$registerTreeViewDataProvider(treeViewId: string): void {
3232
const dataProvider = this._register(new TreeViewDataProvider(treeViewId, this._proxy, this.messageService));
3333
this._dataProviders.set(treeViewId, dataProvider);
34-
this.viewsService.registerTreeViewDataProvider(treeViewId, dataProvider);
34+
this.viewsService.getTreeViewer(treeViewId).dataProvider = dataProvider;
3535
}
3636

3737
$refresh(treeViewId: string, itemsToRefresh: { [treeItemHandle: string]: ITreeItem }): void {

src/vs/workbench/browser/parts/views/customView.ts

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import 'vs/css!./media/views';
77
import Event, { Emitter } from 'vs/base/common/event';
88
import * as errors from 'vs/base/common/errors';
9-
import { IDisposable, Disposable } from 'vs/base/common/lifecycle';
9+
import { IDisposable, Disposable, dispose } from 'vs/base/common/lifecycle';
1010
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
1111
import { TPromise } from 'vs/base/common/winjs.base';
1212
import * as DOM from 'vs/base/browser/dom';
@@ -52,14 +52,6 @@ export class CustomViewsService extends Disposable implements ICustomViewsServic
5252
return this.viewers.get(id);
5353
}
5454

55-
registerTreeViewDataProvider(id: string, dataProvider: ITreeViewDataProvider): void {
56-
const treeViewer = <CustomTreeViewer>this.getTreeViewer(id);
57-
if (treeViewer) {
58-
treeViewer.setDataProvider(dataProvider);
59-
dataProvider.onDispose(() => treeViewer.setDataProvider(null));
60-
}
61-
}
62-
6355
private createViewers(viewDescriptors: IViewDescriptor[]): void {
6456
for (const viewDescriptor of viewDescriptors) {
6557
if ((<ICustomViewDescriptor>viewDescriptor).treeView) {
@@ -104,7 +96,7 @@ class CustomTreeViewer extends Disposable implements ITreeViewer {
10496
private refreshing = 0;
10597

10698
private _dataProvider: ITreeViewDataProvider;
107-
private dataProviderElementChangeListener: IDisposable;
99+
private dataProviderDisposables: IDisposable[] = [];
108100

109101
constructor(
110102
private id: string,
@@ -123,10 +115,8 @@ class CustomTreeViewer extends Disposable implements ITreeViewer {
123115
return this._dataProvider;
124116
}
125117

126-
setDataProvider(dataProvider: ITreeViewDataProvider) {
127-
if (this.dataProviderElementChangeListener) {
128-
this.dataProviderElementChangeListener.dispose();
129-
}
118+
set dataProvider(dataProvider: ITreeViewDataProvider) {
119+
dispose(this.dataProviderDisposables);
130120
if (dataProvider) {
131121
const customTreeView: CustomTreeViewer = this;
132122
this._dataProvider = new class implements ITreeViewDataProvider {
@@ -146,7 +136,8 @@ class CustomTreeViewer extends Disposable implements ITreeViewer {
146136
});
147137
}
148138
};
149-
this.dataProviderElementChangeListener = this._register(dataProvider.onDidChange(elements => this.refresh(elements)));
139+
this._register(dataProvider.onDidChange(elements => this.refresh(elements), this, this.dataProviderDisposables));
140+
this._register(dataProvider.onDispose(() => this.dataProvider = null, this, this.dataProviderDisposables));
150141
} else {
151142
this._dataProvider = null;
152143
}

src/vs/workbench/common/views.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ export interface IViewsViewlet extends IViewlet {
158158

159159
export interface ITreeViewer extends IDisposable {
160160

161-
readonly dataProvider: ITreeViewDataProvider;
161+
dataProvider: ITreeViewDataProvider;
162162

163163
refresh(treeItems?: ITreeItem[]): TPromise<void>;
164164

@@ -185,8 +185,6 @@ export interface ICustomViewsService {
185185
_serviceBrand: any;
186186

187187
getTreeViewer(id: string): ITreeViewer;
188-
189-
registerTreeViewDataProvider(id: string, ITreeViewDataProvider): void;
190188
}
191189

192190
export type TreeViewItemHandleArg = {

0 commit comments

Comments
 (0)