@theia/core
Version:
Theia is a cloud & desktop IDE framework implemented in TypeScript.
163 lines • 6.45 kB
TypeScript
import { Event, Emitter, WaitUntilEvent } from '../../common/event';
import { Disposable, DisposableCollection } from '../../common/disposable';
import { CancellationToken } from '../../common/cancellation';
import { Mutable } from '../../common';
export declare const Tree: unique symbol;
/**
* The tree - an abstract data type.
*/
export interface Tree extends Disposable {
/**
* A root node of this tree.
* Undefined if there is no root node.
* Setting a root node refreshes the tree.
*/
root: TreeNode | undefined;
/**
* Emit when the tree is changed.
*/
readonly onChanged: Event<void>;
/**
* Return a node for the given identifier or undefined if such does not exist.
*/
getNode(id: string | undefined): TreeNode | undefined;
/**
* Return a valid node in this tree matching to the given; otherwise undefined.
*/
validateNode(node: TreeNode | undefined): TreeNode | undefined;
/**
* Refresh children of the root node.
*
* Return a valid refreshed composite root or `undefined` if such does not exist.
*/
refresh(): Promise<Readonly<CompositeTreeNode> | undefined>;
/**
* Refresh children of a node for the give node id if it is valid.
*
* Return a valid refreshed composite node or `undefined` if such does not exist.
*/
refresh(parent: Readonly<CompositeTreeNode>): Promise<Readonly<CompositeTreeNode> | undefined>;
/**
* Emit when the children of the given node are refreshed.
*/
readonly onNodeRefreshed: Event<Readonly<CompositeTreeNode> & WaitUntilEvent>;
/**
* Emits when the busy state of the given node is changed.
*/
readonly onDidChangeBusy: Event<TreeNode>;
/**
* Marks the give node as busy after a specified number of milliseconds.
* A token source of the given token should be canceled to unmark.
*/
markAsBusy(node: Readonly<TreeNode>, ms: number, token: CancellationToken): Promise<void>;
}
/**
* The tree node.
*/
export interface TreeNode {
/**
* An unique id of this node.
*/
readonly id: string;
/**
* A human-readable name of this tree node.
*
* @deprecated use `LabelProvider.getName` instead or move this property to your tree node type
*/
readonly name?: string;
/**
* A css string for this tree node icon.
*
* @deprecated use `LabelProvider.getIcon` instead or move this property to your tree node type
*/
readonly icon?: string;
/**
* A human-readable description of this tree node.
*
* @deprecated use `LabelProvider.getLongName` instead or move this property to your tree node type
*/
readonly description?: string;
/**
* Test whether this node should be rendered.
* If undefined then node will be rendered.
*/
readonly visible?: boolean;
/**
* A parent node of this tree node.
* Undefined if this node is root.
*/
readonly parent: Readonly<CompositeTreeNode> | undefined;
/**
* A previous sibling of this tree node.
*/
readonly previousSibling?: TreeNode;
/**
* A next sibling of this tree node.
*/
readonly nextSibling?: TreeNode;
/**
* Whether this node is busy. Greater than 0 then busy; otherwise not.
*/
readonly busy?: number;
}
export declare namespace TreeNode {
function is(node: unknown): node is TreeNode;
function equals(left: TreeNode | undefined, right: TreeNode | undefined): boolean;
function isVisible(node: TreeNode | undefined): boolean;
}
/**
* The composite tree node.
*/
export interface CompositeTreeNode extends TreeNode {
/**
* Child nodes of this tree node.
*/
children: ReadonlyArray<TreeNode>;
}
export declare namespace CompositeTreeNode {
function is(node: unknown): node is CompositeTreeNode;
function getFirstChild(parent: CompositeTreeNode): TreeNode | undefined;
function getLastChild(parent: CompositeTreeNode): TreeNode | undefined;
function isAncestor(parent: CompositeTreeNode, child: TreeNode | undefined): boolean;
function indexOf(parent: CompositeTreeNode, node: TreeNode | undefined): number;
function addChildren(parent: CompositeTreeNode, children: TreeNode[]): CompositeTreeNode;
function addChild(parent: CompositeTreeNode, child: TreeNode): CompositeTreeNode;
function removeChild(parent: CompositeTreeNode, child: TreeNode): void;
function setParent(child: TreeNode, index: number, parent: CompositeTreeNode): void;
}
/**
* A default implementation of the tree.
*/
export declare class TreeImpl implements Tree {
protected _root: TreeNode | undefined;
protected readonly onChangedEmitter: Emitter<void>;
protected readonly onNodeRefreshedEmitter: Emitter<CompositeTreeNode & WaitUntilEvent>;
protected readonly toDispose: DisposableCollection;
protected readonly onDidChangeBusyEmitter: Emitter<TreeNode>;
readonly onDidChangeBusy: Event<TreeNode>;
protected nodes: {
[id: string]: Mutable<TreeNode> | undefined;
};
constructor();
dispose(): void;
get root(): TreeNode | undefined;
protected toDisposeOnSetRoot: DisposableCollection;
set root(root: TreeNode | undefined);
get onChanged(): Event<void>;
protected fireChanged(): void;
get onNodeRefreshed(): Event<CompositeTreeNode & WaitUntilEvent>;
protected fireNodeRefreshed(parent: CompositeTreeNode): Promise<void>;
getNode(id: string | undefined): TreeNode | undefined;
validateNode(node: TreeNode | undefined): TreeNode | undefined;
refresh(raw?: CompositeTreeNode, cancellationToken?: CancellationToken): Promise<CompositeTreeNode | undefined>;
protected resolveChildren(parent: CompositeTreeNode): Promise<TreeNode[]>;
protected setChildren(parent: CompositeTreeNode, children: TreeNode[]): Promise<CompositeTreeNode | undefined>;
protected removeNode(node: TreeNode | undefined): void;
protected getRootNode(node: TreeNode): TreeNode;
protected addNode(node: TreeNode | undefined): void;
markAsBusy(raw: TreeNode, ms: number, token: CancellationToken): Promise<void>;
protected doMarkAsBusy(node: Mutable<TreeNode>, ms: number, token: CancellationToken): Promise<void>;
protected doSetBusy(node: Mutable<TreeNode>): void;
protected doResetBusy(node: Mutable<TreeNode>): void;
}
//# sourceMappingURL=tree.d.ts.map