@sussudio/platform
Version:
Internal APIs for VS Code's service injection the base services.
389 lines (387 loc) • 14.9 kB
text/typescript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IListRenderer, IListVirtualDelegate } from '@sussudio/base/browser/ui/list/list.mjs';
import { IPagedListOptions, IPagedRenderer, PagedList } from '@sussudio/base/browser/ui/list/listPaging.mjs';
import {
IListAccessibilityProvider,
IListOptions,
IListOptionsUpdate,
List,
} from '@sussudio/base/browser/ui/list/listWidget.mjs';
import { ITableColumn, ITableRenderer, ITableVirtualDelegate } from '@sussudio/base/browser/ui/table/table.mjs';
import { ITableOptions, ITableOptionsUpdate, Table } from '@sussudio/base/browser/ui/table/tableWidget.mjs';
import { IAbstractTreeOptionsUpdate } from '@sussudio/base/browser/ui/tree/abstractTree.mjs';
import {
AsyncDataTree,
CompressibleAsyncDataTree,
IAsyncDataTreeOptions,
IAsyncDataTreeOptionsUpdate,
ICompressibleAsyncDataTreeOptions,
ICompressibleAsyncDataTreeOptionsUpdate,
ITreeCompressionDelegate,
} from '@sussudio/base/browser/ui/tree/asyncDataTree.mjs';
import { DataTree, IDataTreeOptions } from '@sussudio/base/browser/ui/tree/dataTree.mjs';
import {
CompressibleObjectTree,
ICompressibleObjectTreeOptions,
ICompressibleObjectTreeOptionsUpdate,
ICompressibleTreeRenderer,
IObjectTreeOptions,
ObjectTree,
} from '@sussudio/base/browser/ui/tree/objectTree.mjs';
import { IAsyncDataSource, IDataSource, ITreeRenderer } from '@sussudio/base/browser/ui/tree/tree.mjs';
import { Event } from '@sussudio/base/common/event.mjs';
import { IDisposable } from '@sussudio/base/common/lifecycle.mjs';
import { IConfigurationService } from '../../configuration/common/configuration.mjs';
import { IContextKey, IContextKeyService, RawContextKey } from '../../contextkey/common/contextkey.mjs';
import { IEditorOptions } from '../../editor/common/editor.mjs';
import { IInstantiationService } from '../../instantiation/common/instantiation.mjs';
import { IColorMapping } from '../../theme/common/styler.mjs';
import { IThemeService } from '../../theme/common/themeService.mjs';
export type ListWidget =
| List<any>
| PagedList<any>
| ObjectTree<any, any>
| DataTree<any, any, any>
| AsyncDataTree<any, any, any>
| Table<any>;
export type WorkbenchListWidget =
| WorkbenchList<any>
| WorkbenchPagedList<any>
| WorkbenchObjectTree<any, any>
| WorkbenchCompressibleObjectTree<any, any>
| WorkbenchDataTree<any, any, any>
| WorkbenchAsyncDataTree<any, any, any>
| WorkbenchCompressibleAsyncDataTree<any, any, any>
| WorkbenchTable<any>;
export declare const IListService: import('../../instantiation/common/instantiation.mjs').ServiceIdentifier<IListService>;
export interface IListService {
readonly _serviceBrand: undefined;
/**
* Returns the currently focused list widget if any.
*/
readonly lastFocusedList: WorkbenchListWidget | undefined;
}
export declare class ListService implements IListService {
private readonly _themeService;
readonly _serviceBrand: undefined;
private disposables;
private lists;
private _lastFocusedWidget;
private _hasCreatedStyleController;
get lastFocusedList(): WorkbenchListWidget | undefined;
constructor(_themeService: IThemeService);
private setLastFocusedList;
register(widget: WorkbenchListWidget, extraContextKeys?: IContextKey<boolean>[]): IDisposable;
dispose(): void;
}
export declare const RawWorkbenchListFocusContextKey: RawContextKey<boolean>;
export declare const WorkbenchListSupportsMultiSelectContextKey: RawContextKey<boolean>;
export declare const WorkbenchListFocusContextKey:
| import('../../contextkey/common/contextkey.mjs').ContextKeyExpression
| undefined;
export declare const WorkbenchListHasSelectionOrFocus: RawContextKey<boolean>;
export declare const WorkbenchListDoubleSelection: RawContextKey<boolean>;
export declare const WorkbenchListMultiSelection: RawContextKey<boolean>;
export declare const WorkbenchListSelectionNavigation: RawContextKey<boolean>;
export declare const WorkbenchListSupportsFind: RawContextKey<boolean>;
export declare const WorkbenchTreeElementCanCollapse: RawContextKey<boolean>;
export declare const WorkbenchTreeElementHasParent: RawContextKey<boolean>;
export declare const WorkbenchTreeElementCanExpand: RawContextKey<boolean>;
export declare const WorkbenchTreeElementHasChild: RawContextKey<boolean>;
export declare const WorkbenchTreeFindOpen: RawContextKey<boolean>;
export interface IWorkbenchListOptionsUpdate extends IListOptionsUpdate {
readonly overrideStyles?: IColorMapping;
}
export interface IWorkbenchListOptions<T>
extends IWorkbenchListOptionsUpdate,
IResourceNavigatorOptions,
IListOptions<T> {
readonly selectionNavigation?: boolean;
}
export declare class WorkbenchList<T> extends List<T> {
readonly contextKeyService: IContextKeyService;
private readonly themeService;
private listSupportsMultiSelect;
private listHasSelectionOrFocus;
private listDoubleSelection;
private listMultiSelection;
private horizontalScrolling;
private _styler;
private _useAltAsMultipleSelectionModifier;
private navigator;
get onDidOpen(): Event<IOpenEvent<T | undefined>>;
constructor(
user: string,
container: HTMLElement,
delegate: IListVirtualDelegate<T>,
renderers: IListRenderer<T, any>[],
options: IWorkbenchListOptions<T>,
contextKeyService: IContextKeyService,
listService: IListService,
themeService: IThemeService,
configurationService: IConfigurationService,
instantiationService: IInstantiationService,
);
updateOptions(options: IWorkbenchListOptionsUpdate): void;
private updateStyles;
get useAltAsMultipleSelectionModifier(): boolean;
dispose(): void;
}
export interface IWorkbenchPagedListOptions<T>
extends IWorkbenchListOptionsUpdate,
IResourceNavigatorOptions,
IPagedListOptions<T> {
readonly selectionNavigation?: boolean;
}
export declare class WorkbenchPagedList<T> extends PagedList<T> {
readonly contextKeyService: IContextKeyService;
private readonly themeService;
private readonly disposables;
private listSupportsMultiSelect;
private _useAltAsMultipleSelectionModifier;
private horizontalScrolling;
private _styler;
private navigator;
get onDidOpen(): Event<IOpenEvent<T | undefined>>;
constructor(
user: string,
container: HTMLElement,
delegate: IListVirtualDelegate<number>,
renderers: IPagedRenderer<T, any>[],
options: IWorkbenchPagedListOptions<T>,
contextKeyService: IContextKeyService,
listService: IListService,
themeService: IThemeService,
configurationService: IConfigurationService,
instantiationService: IInstantiationService,
);
updateOptions(options: IWorkbenchListOptionsUpdate): void;
private updateStyles;
get useAltAsMultipleSelectionModifier(): boolean;
dispose(): void;
}
export interface IWorkbenchTableOptionsUpdate extends ITableOptionsUpdate {
readonly overrideStyles?: IColorMapping;
}
export interface IWorkbenchTableOptions<T>
extends IWorkbenchTableOptionsUpdate,
IResourceNavigatorOptions,
ITableOptions<T> {
readonly selectionNavigation?: boolean;
}
export declare class WorkbenchTable<TRow> extends Table<TRow> {
readonly contextKeyService: IContextKeyService;
private readonly themeService;
private listSupportsMultiSelect;
private listHasSelectionOrFocus;
private listDoubleSelection;
private listMultiSelection;
private horizontalScrolling;
private _styler;
private _useAltAsMultipleSelectionModifier;
private navigator;
get onDidOpen(): Event<IOpenEvent<TRow | undefined>>;
constructor(
user: string,
container: HTMLElement,
delegate: ITableVirtualDelegate<TRow>,
columns: ITableColumn<TRow, any>[],
renderers: ITableRenderer<TRow, any>[],
options: IWorkbenchTableOptions<TRow>,
contextKeyService: IContextKeyService,
listService: IListService,
themeService: IThemeService,
configurationService: IConfigurationService,
instantiationService: IInstantiationService,
);
updateOptions(options: IWorkbenchTableOptionsUpdate): void;
private updateStyles;
get useAltAsMultipleSelectionModifier(): boolean;
dispose(): void;
}
export interface IOpenResourceOptions {
editorOptions: IEditorOptions;
sideBySide: boolean;
element: any;
payload: any;
}
export interface IOpenEvent<T> {
editorOptions: IEditorOptions;
sideBySide: boolean;
element: T;
browserEvent?: UIEvent;
}
export interface IResourceNavigatorOptions {
readonly configurationService?: IConfigurationService;
readonly openOnSingleClick?: boolean;
}
export interface SelectionKeyboardEvent extends KeyboardEvent {
preserveFocus?: boolean;
pinned?: boolean;
__forceEvent?: boolean;
}
export declare function getSelectionKeyboardEvent(
typeArg?: string,
preserveFocus?: boolean,
pinned?: boolean,
): SelectionKeyboardEvent;
export interface IWorkbenchObjectTreeOptions<T, TFilterData>
extends IObjectTreeOptions<T, TFilterData>,
IResourceNavigatorOptions {
readonly accessibilityProvider: IListAccessibilityProvider<T>;
readonly overrideStyles?: IColorMapping;
readonly selectionNavigation?: boolean;
}
export declare class WorkbenchObjectTree<T extends NonNullable<any>, TFilterData = void> extends ObjectTree<
T,
TFilterData
> {
private internals;
get contextKeyService(): IContextKeyService;
get useAltAsMultipleSelectionModifier(): boolean;
get onDidOpen(): Event<IOpenEvent<T | undefined>>;
constructor(
user: string,
container: HTMLElement,
delegate: IListVirtualDelegate<T>,
renderers: ITreeRenderer<T, TFilterData, any>[],
options: IWorkbenchObjectTreeOptions<T, TFilterData>,
instantiationService: IInstantiationService,
contextKeyService: IContextKeyService,
listService: IListService,
themeService: IThemeService,
configurationService: IConfigurationService,
);
updateOptions(options: IAbstractTreeOptionsUpdate): void;
}
export interface IWorkbenchCompressibleObjectTreeOptionsUpdate extends ICompressibleObjectTreeOptionsUpdate {
readonly overrideStyles?: IColorMapping;
}
export interface IWorkbenchCompressibleObjectTreeOptions<T, TFilterData>
extends IWorkbenchCompressibleObjectTreeOptionsUpdate,
ICompressibleObjectTreeOptions<T, TFilterData>,
IResourceNavigatorOptions {
readonly accessibilityProvider: IListAccessibilityProvider<T>;
readonly selectionNavigation?: boolean;
}
export declare class WorkbenchCompressibleObjectTree<
T extends NonNullable<any>,
TFilterData = void,
> extends CompressibleObjectTree<T, TFilterData> {
private internals;
get contextKeyService(): IContextKeyService;
get useAltAsMultipleSelectionModifier(): boolean;
get onDidOpen(): Event<IOpenEvent<T | undefined>>;
constructor(
user: string,
container: HTMLElement,
delegate: IListVirtualDelegate<T>,
renderers: ICompressibleTreeRenderer<T, TFilterData, any>[],
options: IWorkbenchCompressibleObjectTreeOptions<T, TFilterData>,
instantiationService: IInstantiationService,
contextKeyService: IContextKeyService,
listService: IListService,
themeService: IThemeService,
configurationService: IConfigurationService,
);
updateOptions(options?: IWorkbenchCompressibleObjectTreeOptionsUpdate): void;
}
export interface IWorkbenchDataTreeOptionsUpdate extends IAbstractTreeOptionsUpdate {
readonly overrideStyles?: IColorMapping;
}
export interface IWorkbenchDataTreeOptions<T, TFilterData>
extends IWorkbenchDataTreeOptionsUpdate,
IDataTreeOptions<T, TFilterData>,
IResourceNavigatorOptions {
readonly accessibilityProvider: IListAccessibilityProvider<T>;
readonly selectionNavigation?: boolean;
}
export declare class WorkbenchDataTree<TInput, T, TFilterData = void> extends DataTree<TInput, T, TFilterData> {
private internals;
get contextKeyService(): IContextKeyService;
get useAltAsMultipleSelectionModifier(): boolean;
get onDidOpen(): Event<IOpenEvent<T | undefined>>;
constructor(
user: string,
container: HTMLElement,
delegate: IListVirtualDelegate<T>,
renderers: ITreeRenderer<T, TFilterData, any>[],
dataSource: IDataSource<TInput, T>,
options: IWorkbenchDataTreeOptions<T, TFilterData>,
instantiationService: IInstantiationService,
contextKeyService: IContextKeyService,
listService: IListService,
themeService: IThemeService,
configurationService: IConfigurationService,
);
updateOptions(options?: IWorkbenchDataTreeOptionsUpdate): void;
}
export interface IWorkbenchAsyncDataTreeOptionsUpdate extends IAsyncDataTreeOptionsUpdate {
readonly overrideStyles?: IColorMapping;
}
export interface IWorkbenchAsyncDataTreeOptions<T, TFilterData>
extends IWorkbenchAsyncDataTreeOptionsUpdate,
IAsyncDataTreeOptions<T, TFilterData>,
IResourceNavigatorOptions {
readonly accessibilityProvider: IListAccessibilityProvider<T>;
readonly selectionNavigation?: boolean;
}
export declare class WorkbenchAsyncDataTree<TInput, T, TFilterData = void> extends AsyncDataTree<
TInput,
T,
TFilterData
> {
private internals;
get contextKeyService(): IContextKeyService;
get useAltAsMultipleSelectionModifier(): boolean;
get onDidOpen(): Event<IOpenEvent<T | undefined>>;
constructor(
user: string,
container: HTMLElement,
delegate: IListVirtualDelegate<T>,
renderers: ITreeRenderer<T, TFilterData, any>[],
dataSource: IAsyncDataSource<TInput, T>,
options: IWorkbenchAsyncDataTreeOptions<T, TFilterData>,
instantiationService: IInstantiationService,
contextKeyService: IContextKeyService,
listService: IListService,
themeService: IThemeService,
configurationService: IConfigurationService,
);
updateOptions(options?: IWorkbenchAsyncDataTreeOptionsUpdate): void;
}
export interface IWorkbenchCompressibleAsyncDataTreeOptions<T, TFilterData>
extends ICompressibleAsyncDataTreeOptions<T, TFilterData>,
IResourceNavigatorOptions {
readonly accessibilityProvider: IListAccessibilityProvider<T>;
readonly overrideStyles?: IColorMapping;
readonly selectionNavigation?: boolean;
}
export declare class WorkbenchCompressibleAsyncDataTree<
TInput,
T,
TFilterData = void,
> extends CompressibleAsyncDataTree<TInput, T, TFilterData> {
private internals;
get contextKeyService(): IContextKeyService;
get useAltAsMultipleSelectionModifier(): boolean;
get onDidOpen(): Event<IOpenEvent<T | undefined>>;
constructor(
user: string,
container: HTMLElement,
virtualDelegate: IListVirtualDelegate<T>,
compressionDelegate: ITreeCompressionDelegate<T>,
renderers: ICompressibleTreeRenderer<T, TFilterData, any>[],
dataSource: IAsyncDataSource<TInput, T>,
options: IWorkbenchCompressibleAsyncDataTreeOptions<T, TFilterData>,
instantiationService: IInstantiationService,
contextKeyService: IContextKeyService,
listService: IListService,
themeService: IThemeService,
configurationService: IConfigurationService,
);
updateOptions(options: ICompressibleAsyncDataTreeOptionsUpdate): void;
}