mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-26 19:44:25 +01:00
#30535 expand and collapse events
This commit is contained in:
@@ -8,7 +8,7 @@ import { localize } from 'vs/nls';
|
||||
import * as vscode from 'vscode';
|
||||
import { basename } from 'vs/base/common/paths';
|
||||
import URI from 'vs/base/common/uri';
|
||||
import { debounceEvent } from 'vs/base/common/event';
|
||||
import { debounceEvent, Emitter, Event } from 'vs/base/common/event';
|
||||
import { TPromise } from 'vs/base/common/winjs.base';
|
||||
import { Disposable } from 'vs/base/common/lifecycle';
|
||||
import { ExtHostTreeViewsShape, MainThreadTreeViewsShape } from './extHost.protocol';
|
||||
@@ -67,6 +67,14 @@ export class ExtHostTreeViews implements ExtHostTreeViewsShape {
|
||||
return treeView.getChildren(treeItemHandle);
|
||||
}
|
||||
|
||||
$setExpanded(treeViewId: string, treeItemHandle: string, expanded: boolean): void {
|
||||
const treeView = this.treeViews.get(treeViewId);
|
||||
if (treeView) {
|
||||
treeView.setExpanded(treeItemHandle, expanded);
|
||||
}
|
||||
TPromise.wrapError<ITreeItem[]>(new Error(localize('treeView.notRegistered', 'No tree view with id \'{0}\' registered.', treeViewId)));
|
||||
}
|
||||
|
||||
private createExtHostTreeViewer<T>(id: string, dataProvider: vscode.TreeDataProvider<T>): ExtHostTreeView<T> {
|
||||
const treeView = new ExtHostTreeView<T>(id, dataProvider, this._proxy, this.commands.converter);
|
||||
this.treeViews.set(id, treeView);
|
||||
@@ -94,6 +102,12 @@ class ExtHostTreeView<T> extends Disposable {
|
||||
private elements: Map<TreeItemHandle, T> = new Map<TreeItemHandle, T>();
|
||||
private nodes: Map<T, TreeNode> = new Map<T, TreeNode>();
|
||||
|
||||
private _onDidExpandElement: Emitter<T> = this._register(new Emitter<T>());
|
||||
readonly onDidExpandElement: Event<T> = this._onDidExpandElement.event;
|
||||
|
||||
private _onDidCollapseElement: Emitter<T> = this._register(new Emitter<T>());
|
||||
readonly onDidCollapseElement: Event<T> = this._onDidCollapseElement.event;
|
||||
|
||||
constructor(private viewId: string, private dataProvider: vscode.TreeDataProvider<T>, private proxy: MainThreadTreeViewsShape, private commands: CommandsConverter) {
|
||||
super();
|
||||
this.proxy.$registerTreeViewDataProvider(viewId);
|
||||
@@ -127,6 +141,17 @@ class ExtHostTreeView<T> extends Disposable {
|
||||
.then(treeNode => this.proxy.$reveal(this.viewId, treeNode.item, parentChain.map(p => p.item), options)));
|
||||
}
|
||||
|
||||
setExpanded(treeItemHandle: TreeItemHandle, expanded: boolean): void {
|
||||
const element = this.getExtensionElement(treeItemHandle);
|
||||
if (element) {
|
||||
if (expanded) {
|
||||
this._onDidExpandElement.fire(element);
|
||||
} else {
|
||||
this._onDidCollapseElement.fire(element);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private resolveUnknownParentChain(element: T): TPromise<TreeNode[]> {
|
||||
return this.resolveParent(element)
|
||||
.then((parent) => {
|
||||
|
||||
Reference in New Issue
Block a user