UNPKG

7.16 kBTypeScriptView Raw
1import { Event, Emitter, WaitUntilEvent } from '../../common/event';
2import { Disposable, DisposableCollection } from '../../common/disposable';
3import { CancellationToken } from '../../common/cancellation';
4import { Mutable } from '../../common';
5import { AccessibilityInformation } from '../../common/accessibility';
6export declare const Tree: unique symbol;
7/**
8 * The tree - an abstract data type.
9 */
10export interface Tree extends Disposable {
11 /**
12 * A root node of this tree.
13 * Undefined if there is no root node.
14 * Setting a root node refreshes the tree.
15 */
16 root: TreeNode | undefined;
17 /**
18 * Emit when the tree is changed.
19 */
20 readonly onChanged: Event<void>;
21 /**
22 * Return a node for the given identifier or undefined if such does not exist.
23 */
24 getNode(id: string | undefined): TreeNode | undefined;
25 /**
26 * Return a valid node in this tree matching to the given; otherwise undefined.
27 */
28 validateNode(node: TreeNode | undefined): TreeNode | undefined;
29 /**
30 * Refresh children of the root node.
31 *
32 * Return a valid refreshed composite root or `undefined` if such does not exist.
33 */
34 refresh(): Promise<Readonly<CompositeTreeNode> | undefined>;
35 /**
36 * Refresh children of a node for the give node id if it is valid.
37 *
38 * Return a valid refreshed composite node or `undefined` if such does not exist.
39 */
40 refresh(parent: Readonly<CompositeTreeNode>): Promise<Readonly<CompositeTreeNode> | undefined>;
41 /**
42 * Emit when the children of the given node are refreshed.
43 */
44 readonly onNodeRefreshed: Event<Readonly<CompositeTreeNode> & WaitUntilEvent>;
45 /**
46 * Emits when the busy state of the given node is changed.
47 */
48 readonly onDidChangeBusy: Event<TreeNode>;
49 /**
50 * Marks the give node as busy after a specified number of milliseconds.
51 * A token source of the given token should be canceled to unmark.
52 */
53 markAsBusy(node: Readonly<TreeNode>, ms: number, token: CancellationToken): Promise<void>;
54 /**
55 * An update to the tree node occurred, but the tree structure remains unchanged
56 */
57 readonly onDidUpdate: Event<TreeNode[]>;
58 markAsChecked(node: TreeNode, checked: boolean): void;
59}
60export interface TreeViewItemCheckboxInfo {
61 checked: boolean;
62 tooltip?: string;
63 accessibilityInformation?: AccessibilityInformation;
64}
65/**
66 * The tree node.
67 */
68export interface TreeNode {
69 /**
70 * An unique id of this node.
71 */
72 readonly id: string;
73 /**
74 * A human-readable name of this tree node.
75 *
76 * @deprecated use `LabelProvider.getName` instead or move this property to your tree node type
77 */
78 readonly name?: string;
79 /**
80 * A css string for this tree node icon.
81 *
82 * @deprecated use `LabelProvider.getIcon` instead or move this property to your tree node type
83 */
84 readonly icon?: string;
85 /**
86 * A human-readable description of this tree node.
87 *
88 * @deprecated use `LabelProvider.getLongName` instead or move this property to your tree node type
89 */
90 readonly description?: string;
91 /**
92 * Test whether this node should be rendered.
93 * If undefined then node will be rendered.
94 */
95 readonly visible?: boolean;
96 /**
97 * A parent node of this tree node.
98 * Undefined if this node is root.
99 */
100 readonly parent: Readonly<CompositeTreeNode> | undefined;
101 /**
102 * A previous sibling of this tree node.
103 */
104 readonly previousSibling?: TreeNode;
105 /**
106 * A next sibling of this tree node.
107 */
108 readonly nextSibling?: TreeNode;
109 /**
110 * Whether this node is busy. Greater than 0 then busy; otherwise not.
111 */
112 readonly busy?: number;
113 /**
114 * Whether this node is checked.
115 */
116 readonly checkboxInfo?: TreeViewItemCheckboxInfo;
117}
118export declare namespace TreeNode {
119 function is(node: unknown): node is TreeNode;
120 function equals(left: TreeNode | undefined, right: TreeNode | undefined): boolean;
121 function isVisible(node: TreeNode | undefined): boolean;
122}
123/**
124 * The composite tree node.
125 */
126export interface CompositeTreeNode extends TreeNode {
127 /**
128 * Child nodes of this tree node.
129 */
130 children: ReadonlyArray<TreeNode>;
131}
132export declare namespace CompositeTreeNode {
133 function is(node: unknown): node is CompositeTreeNode;
134 function getFirstChild(parent: CompositeTreeNode): TreeNode | undefined;
135 function getLastChild(parent: CompositeTreeNode): TreeNode | undefined;
136 function isAncestor(parent: CompositeTreeNode, child: TreeNode | undefined): boolean;
137 function indexOf(parent: CompositeTreeNode, node: TreeNode | undefined): number;
138 function addChildren(parent: CompositeTreeNode, children: TreeNode[]): CompositeTreeNode;
139 function addChild(parent: CompositeTreeNode, child: TreeNode): CompositeTreeNode;
140 function removeChild(parent: CompositeTreeNode, child: TreeNode): void;
141 function setParent(child: TreeNode, index: number, parent: CompositeTreeNode): void;
142}
143/**
144 * A default implementation of the tree.
145 */
146export declare class TreeImpl implements Tree {
147 protected _root: TreeNode | undefined;
148 protected readonly onChangedEmitter: Emitter<void>;
149 protected readonly onNodeRefreshedEmitter: Emitter<CompositeTreeNode & WaitUntilEvent>;
150 protected readonly toDispose: DisposableCollection;
151 protected readonly onDidChangeBusyEmitter: Emitter<TreeNode>;
152 readonly onDidChangeBusy: Event<TreeNode>;
153 protected readonly onDidUpdateEmitter: Emitter<TreeNode[]>;
154 readonly onDidUpdate: Event<TreeNode[]>;
155 protected nodes: {
156 [id: string]: Mutable<TreeNode> | undefined;
157 };
158 constructor();
159 dispose(): void;
160 get root(): TreeNode | undefined;
161 protected toDisposeOnSetRoot: DisposableCollection;
162 set root(root: TreeNode | undefined);
163 get onChanged(): Event<void>;
164 protected fireChanged(): void;
165 get onNodeRefreshed(): Event<CompositeTreeNode & WaitUntilEvent>;
166 protected fireNodeRefreshed(parent: CompositeTreeNode): Promise<void>;
167 getNode(id: string | undefined): TreeNode | undefined;
168 validateNode(node: TreeNode | undefined): TreeNode | undefined;
169 refresh(raw?: CompositeTreeNode, cancellationToken?: CancellationToken): Promise<CompositeTreeNode | undefined>;
170 protected resolveChildren(parent: CompositeTreeNode): Promise<TreeNode[]>;
171 protected setChildren(parent: CompositeTreeNode, children: TreeNode[]): Promise<CompositeTreeNode | undefined>;
172 protected removeNode(node: TreeNode | undefined): void;
173 protected getRootNode(node: TreeNode): TreeNode;
174 protected addNode(node: TreeNode | undefined): void;
175 markAsBusy(raw: TreeNode, ms: number, token: CancellationToken): Promise<void>;
176 markAsChecked(node: Mutable<TreeNode>, checked: boolean): void;
177 protected doMarkAsBusy(node: Mutable<TreeNode>, ms: number, token: CancellationToken): Promise<void>;
178 protected doSetBusy(node: Mutable<TreeNode>): void;
179 protected doResetBusy(node: Mutable<TreeNode>): void;
180}
181//# sourceMappingURL=tree.d.ts.map
\No newline at end of file