import { URI } from '@vscode-alt/monaco-editor/esm/vs/base/common/uri'; import { ISingleFolderWorkspaceIdentifier, IWorkspaceFolderCreationData } from './workspaces'; import { IWorkspace, WorkbenchState, IWorkspaceFolder, IWorkspaceFoldersChangeEvent } from './workspace'; import { IWorkspaceIdentifier, IWorkspaceData } from '../generated-model'; import { Event } from '@vscode-alt/monaco-editor/esm/vs/base/common/event'; import { IDisposable } from '@vscode-alt/monaco-editor/esm/vs/base/common/lifecycle'; import { IWorkspaceInitializationPayload } from '../workspace'; export interface IWorkspaceContextService extends IDisposable { /** * An event which fires on workbench state changes. */ onDidChangeWorkbenchState: Event; /** * An event which fires on workspace name changes. */ onDidChangeWorkspaceName: Event; /** * An event which fires on workspace folders change. */ onDidChangeWorkspaceFolders: Event; /** * Provides access to the complete workspace object. */ getCompleteWorkspace(): Promise; /** * Provides access to the workspace object the platform is running with. */ getWorkspace(): IWorkspace; /** * Return the state of the workbench. * * WorkbenchState.EMPTY - if the workbench was opened with empty window or file * WorkbenchState.FOLDER - if the workbench was opened with a folder * WorkbenchState.WORKSPACE - if the workbench was opened with a workspace */ getWorkbenchState(): WorkbenchState; /** * Returns the folder for the given resource from the workspace. * Can be null if there is no workspace or the resource is not inside the workspace. */ getWorkspaceFolder(resource: URI): IWorkspaceFolder; /** * Return `true` if the current workspace has the given identifier otherwise `false`. */ isCurrentWorkspace(workspaceIdentifier: ISingleFolderWorkspaceIdentifier | IWorkspaceIdentifier): boolean; /** * Returns if the provided resource is inside the workspace or not. */ isInsideWorkspace(resource: URI): boolean; addFolders(foldersToAdd: IWorkspaceFolderCreationData[], index?: number): Promise; removeFolders(foldersToRemove: URI[]): Promise; updateFolders(foldersToAdd: IWorkspaceFolderCreationData[], foldersToRemove: URI[], index?: number): Promise; initialize(arg: IWorkspaceInitializationPayload): Promise; } export interface IClientWorkspaceContextService extends IWorkspaceContextService { extAcceptChangedWorkbenchState(workspace: IWorkspaceData, event: WorkbenchState): any; extAcceptChangedWorkspaceFolders(data: IWorkspaceData, event: IWorkspaceFoldersChangeEvent): any; extAcceptChangedWorkspaceName(date: IWorkspaceData): any; initialize(args: any): any; }