From ad7de10b2bbe555daa4e9ca2811aa34961661796 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Sat, 23 Jun 2018 17:54:26 +0200 Subject: [PATCH] tree: first sketch --- src/vs/base/browser/ui/tree/tree.ts | 50 +++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/vs/base/browser/ui/tree/tree.ts diff --git a/src/vs/base/browser/ui/tree/tree.ts b/src/vs/base/browser/ui/tree/tree.ts new file mode 100644 index 00000000000..15333f33b60 --- /dev/null +++ b/src/vs/base/browser/ui/tree/tree.ts @@ -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 extends IListOptions { } + +const DefaultOptions: ITreeOptions = { + keyboardSupport: true, + mouseSupport: true, + multipleSelectionSupport: true +}; + +// export type IDelegate = IListDelegate>; +// export type IRenderer = IListRenderer, TTemplateData>; + +export class Tree implements IDisposable { + + private list: List>; + private model: TreeModel; + + constructor( + container: HTMLElement, + delegate: IDelegate, + renderers: IRenderer[], + options: ITreeOptions = DefaultOptions + ) { + // TODO map provided args into these + const listDelegate: IDelegate> = undefined; + const listRenderers: IRenderer, any>[] = []; + const listOptions: ITreeOptions> = undefined; + + this.list = new List(container, listDelegate, listRenderers, listOptions); + this.model = new TreeModel(this.list); + } + + splice(location: number[], deleteCount: number, toInsert: IIterator> = empty()): IIterator> { + return this.model.splice(location, deleteCount, toInsert); + } + + dispose(): void { + this.list.dispose(); + } +} \ No newline at end of file