import { BinaryBuffer, Event, IAccessibilityInformation, IDisposable } from '@opensumi/ide-core-common'; import { ThemeType } from '@opensumi/ide-theme'; import { MarkdownString, ThemeIcon, TreeItemCollapsibleState } from './ext-types'; import { Command, UriComponents } from './models'; import type { CancellationToken } from '@opensumi/ide-core-common'; import type vscode from 'vscode'; export interface ITreeViewRevealOptions { select?: boolean; focus?: boolean; expand?: boolean | number; } export interface IMainThreadTreeView { $unregisterTreeDataProvider(treeViewId: string): Promise; $registerTreeDataProvider(treeViewId: string, options: TreeViewBaseOptions): Promise; $refresh(treeViewId: string, itemsToRefresh?: T | null): Promise; $refresh(treeViewId: string, itemsToRefresh?: TreeViewItem): Promise; $reveal(treeViewId: string, treeItemId?: string, options?: ITreeViewRevealOptions): Promise; $setTitle(treeViewId: string, message: string): Promise; $setDescription(treeViewId: string, message: string): Promise; $setBadge(treeViewId: string, badge?: ViewBadge): void; $setMessage(treeViewId: string, message: string): Promise; $resolveDropFileData(treeViewId: string, requestId: number, dataItemId: string): Promise; } export interface IExtHostTreeView { createTreeView(treeViewId: string, options: { treeDataProvider: vscode.TreeDataProvider; }): TreeView; registerTreeDataProvider(treeViewId: string, treeDataProvider: vscode.TreeDataProvider): IDisposable; $getChildren(treeViewId: string, treeItemId?: string): Promise; $setExpanded(treeViewId: string, treeItemId: string, expanded: boolean): Promise; $setSelection(treeViewId: string, treeItemHandles: string[]): void; $setVisible(treeViewId: string, visible: boolean): void; $checkStateChanged(treeViewId: string, items: { treeItemId: string; checked: boolean; }[]): Promise; $resolveTreeItem(treeViewId: string, treeItemId: string, token: CancellationToken): Promise; $handleDrop(destinationViewId: string, requestId: number, treeDataTransfer: DataTransferDTO, targetHandle: string | undefined, token: CancellationToken, operationUuid?: string, sourceViewId?: string, sourceTreeItemHandles?: string[]): Promise; $handleDrag(sourceViewId: string, sourceTreeItemHandles: string[], operationUuid: string, token: CancellationToken): Promise; } export type IconUrl = string | { [index in ThemeType]: string; }; export interface ITreeItemLabel { /** * 展示文本 */ label: string; /** * 高亮展示部分文本内容 */ highlights?: [number, number][]; /** * 是否展示为删除线文本 */ strikethrough?: boolean; } export interface TreeViewItemCheckboxInfo { checked: boolean; tooltip?: string; accessibilityInformation?: IAccessibilityInformation; } export declare enum TreeItemCheckboxState { Unchecked = 0, Checked = 1 } export declare class TreeViewItem { id: string; label: string | ITreeItemLabel; icon?: string; description?: string; iconUrl?: IconUrl; themeIcon?: ThemeIcon; resourceUri?: UriComponents; tooltip?: MarkdownString | string; collapsibleState?: TreeItemCollapsibleState; contextValue?: string; checkboxInfo?: TreeViewItemCheckboxInfo; command?: Command; accessibilityInformation?: IAccessibilityInformation; } export interface TreeView extends vscode.TreeView { /** * 当节点展开时触发的事件 */ readonly onDidExpandElement: Event>; /** * 当节点折叠状态变化时触发的事件 */ readonly onDidCollapseElement: Event>; /** * 当节点可见性变化时触发的事件 */ readonly onDidChangeVisibility: Event; /** * 表示元素已被选中或未选中的事件。 */ readonly onDidChangeCheckboxState: Event>; /** * 当节点选中时触发的事件 */ readonly onDidChangeSelection: Event>; /** * 当TreeView视图可见时为 true,否则为false */ readonly visible: boolean; /** * 当前选中的节点 */ readonly selection: T[]; /** * 节点上的 * Setting the message to null, undefined, or empty string will remove the message from the view. */ message?: string; /** * TreeView 视图标题 */ title?: string; /** * 可选的节点描述信息 */ description?: string; /** * TreeView 要显示的徽标 * 要删除徽标,请设置为undefined */ badge?: ViewBadge | undefined; /** * 展示节点,默认情况下展示的节点为选中状态 * * 当希望显示的节点不带选中状态时,可以设置options内的select属性为false * * **NOTE:** 需要在实现TreeDataProvider.getParent接口情况下该接口才可用. */ reveal(element: T, options?: { select?: boolean; focus?: boolean; expand?: boolean | number; }): PromiseLike; dispose(): void; } /** * 展示视图数值的徽标 */ export interface ViewBadge { /** * 在徽标工具提示中显示的标签 */ readonly tooltip: string; /** * 徽标中显示的值 */ readonly value: number; } export interface TreeViewBaseOptions { /** * 手动管理复选框状态 */ manageCheckboxStateManually?: boolean; /** * 是否展示折叠所有功能(panel上功能) */ showCollapseAll?: boolean; /** * Tree是否支持复选操作 * 当值为true且命令在Tree上被执行时,第一个参数是选中执行的节点,第二个参数为所有选中的Tree节点数组 */ canSelectMany?: boolean; /** * 支持的 Drop Mime Type 类型 * ref: */ dropMimeTypes?: readonly string[]; /** * 支持的 Drag Mime Type 类型 */ dragMimeTypes?: readonly string[]; /** * 是否存在 Drag 处理函数 */ hasHandleDrag: boolean; /** * 是否存在 Drop 处理函数 */ hasHandleDrop: boolean; } export interface TreeViewSelection { treeViewId: string; treeItemId: string; } export declare namespace TreeViewSelection { function is(arg: any): arg is TreeViewSelection; } export interface IDataTransferFileDTO { readonly name: string; readonly uri?: UriComponents; } export interface DataTransferItemDTO { readonly id: string; readonly asString: string; readonly fileData: IDataTransferFileDTO | undefined; } export interface DataTransferDTO { readonly items: Array<[/* type */ string, DataTransferItemDTO]>; } export declare const ITreeViewsService: unique symbol; export interface ITreeViewsService { readonly _serviceBrand: undefined; removeDragOperationTransfer(uuid: string | undefined): Promise | undefined; addDragOperationTransfer(uuid: string, transferPromise: Promise): void; getRenderedTreeElement(node: U): V | undefined; addRenderedTreeItemElement(node: U, element: V): void; removeRenderedTreeItemElement(node: U): void; } export declare class TreeviewsService implements ITreeViewsService { _serviceBrand: undefined; private _dragOperations; private _renderedElements; removeDragOperationTransfer(uuid: string | undefined): Promise | undefined; addDragOperationTransfer(uuid: string, transferPromise: Promise): void; getRenderedTreeElement(node: U): V | undefined; addRenderedTreeItemElement(node: U, element: V): void; removeRenderedTreeItemElement(node: U): void; } //# sourceMappingURL=treeview.d.ts.map