/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { URI } from 'vs/base/common/uri'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { Event } from 'vs/base/common/event'; import { IDisposable } from 'vs/base/common/lifecycle'; import { Command } from 'vs/editor/common/modes'; import { ISequence } from 'vs/base/common/sequence'; import { Extensions as ViewContainerExtensions, ViewContainer, IViewContainersRegistry, ViewContainerLocation } from 'vs/workbench/common/views'; import { Registry } from 'vs/platform/registry/common/platform'; import { localize } from 'vs/nls'; export const VIEWLET_ID = 'workbench.view.scm'; export const VIEW_CONTAINER: ViewContainer = Registry.as(ViewContainerExtensions.ViewContainersRegistry).registerViewContainer({ id: VIEWLET_ID, name: localize('source control', "Source Control"), }, ViewContainerLocation.Sidebar); export interface IBaselineResourceProvider { getBaselineResource(resource: URI): Promise; } export const ISCMService = createDecorator('scm'); export interface ISCMResourceDecorations { icon?: URI; iconDark?: URI; tooltip?: string; strikeThrough?: boolean; faded?: boolean; } export interface ISCMResource { readonly resourceGroup: ISCMResourceGroup; readonly sourceUri: URI; readonly decorations: ISCMResourceDecorations; open(): Promise; } export interface ISCMResourceGroup extends ISequence { readonly provider: ISCMProvider; readonly label: string; readonly id: string; readonly hideWhenEmpty: boolean; readonly onDidChange: Event; } export interface ISCMProvider extends IDisposable { readonly label: string; readonly id: string; readonly contextValue: string; readonly groups: ISequence; // TODO@Joao: remove readonly onDidChangeResources: Event; readonly rootUri?: URI; readonly count?: number; readonly commitTemplate: string; readonly onDidChangeCommitTemplate: Event; readonly onDidChangeStatusBarCommands?: Event; readonly acceptInputCommand?: Command; readonly statusBarCommands?: Command[]; readonly onDidChange: Event; getOriginalResource(uri: URI): Promise; } export const enum InputValidationType { Error = 0, Warning = 1, Information = 2 } export interface IInputValidation { message: string; type: InputValidationType; } export interface IInputValidator { (value: string, cursorPosition: number): Promise; } export interface ISCMInput { value: string; readonly onDidChange: Event; placeholder: string; readonly onDidChangePlaceholder: Event; validateInput: IInputValidator; readonly onDidChangeValidateInput: Event; visible: boolean; readonly onDidChangeVisibility: Event; } export interface ISCMRepository extends IDisposable { readonly onDidFocus: Event; readonly selected: boolean; readonly onDidChangeSelection: Event; readonly provider: ISCMProvider; readonly input: ISCMInput; focus(): void; setSelected(selected: boolean): void; } export interface ISCMService { readonly _serviceBrand: undefined; readonly onDidAddRepository: Event; readonly onDidRemoveRepository: Event; readonly repositories: ISCMRepository[]; readonly selectedRepositories: ISCMRepository[]; readonly onDidChangeSelectedRepositories: Event; registerSCMProvider(provider: ISCMProvider): ISCMRepository; }