mirror of
https://github.com/microsoft/vscode.git
synced 2026-07-12 00:24:59 -05:00
tree: first sketch
This commit is contained in:
50
src/vs/base/browser/ui/tree/tree.ts
Normal file
50
src/vs/base/browser/ui/tree/tree.ts
Normal file
@@ -0,0 +1,50 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { IDisposable } from 'vs/base/common/lifecycle';
|
||||
import { IListOptions, List } from 'vs/base/browser/ui/list/listWidget';
|
||||
import { TreeModel, ITreeListElement, ITreeElement } from 'vs/base/browser/ui/tree/treeModel';
|
||||
import { IIterator, empty } from 'vs/base/common/iterator';
|
||||
import { IDelegate, IRenderer } from 'vs/base/browser/ui/list/list';
|
||||
|
||||
export interface ITreeOptions<T> extends IListOptions<T> { }
|
||||
|
||||
const DefaultOptions: ITreeOptions<any> = {
|
||||
keyboardSupport: true,
|
||||
mouseSupport: true,
|
||||
multipleSelectionSupport: true
|
||||
};
|
||||
|
||||
// export type IDelegate<T> = IListDelegate<ITreeListElement<T>>;
|
||||
// export type IRenderer<T, TTemplateData> = IListRenderer<ITreeListElement<T>, TTemplateData>;
|
||||
|
||||
export class Tree<T> implements IDisposable {
|
||||
|
||||
private list: List<ITreeListElement<T>>;
|
||||
private model: TreeModel<T>;
|
||||
|
||||
constructor(
|
||||
container: HTMLElement,
|
||||
delegate: IDelegate<T>,
|
||||
renderers: IRenderer<T, any>[],
|
||||
options: ITreeOptions<T> = DefaultOptions
|
||||
) {
|
||||
// TODO map provided args into these
|
||||
const listDelegate: IDelegate<ITreeListElement<T>> = undefined;
|
||||
const listRenderers: IRenderer<ITreeListElement<T>, any>[] = [];
|
||||
const listOptions: ITreeOptions<ITreeListElement<T>> = undefined;
|
||||
|
||||
this.list = new List(container, listDelegate, listRenderers, listOptions);
|
||||
this.model = new TreeModel<T>(this.list);
|
||||
}
|
||||
|
||||
splice(location: number[], deleteCount: number, toInsert: IIterator<ITreeElement<T>> = empty()): IIterator<ITreeElement<T>> {
|
||||
return this.model.splice(location, deleteCount, toInsert);
|
||||
}
|
||||
|
||||
dispose(): void {
|
||||
this.list.dispose();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user