diff --git a/packages/git/src/browser/git-view-contribution.ts b/packages/git/src/browser/git-view-contribution.ts index fb25d1f8998ec..7b9ded994dbb6 100644 --- a/packages/git/src/browser/git-view-contribution.ts +++ b/packages/git/src/browser/git-view-contribution.ts @@ -26,7 +26,7 @@ import { } from '@theia/core'; import { AbstractViewContribution, StatusBar, DiffUris, StatusBarEntry, - FrontendApplicationContribution, FrontendApplication, Widget, StatusBarAlignment + FrontendApplicationContribution, FrontendApplication, Widget } from '@theia/core/lib/browser'; import { TabBarToolbarContribution, TabBarToolbarRegistry } from '@theia/core/lib/browser/shell/tab-bar-toolbar'; import { EditorManager, EditorWidget, EditorOpenerOptions, EditorContextMenu, EDITOR_CONTEXT_MENU } from '@theia/editor/lib/browser'; @@ -37,7 +37,7 @@ import { GitQuickOpenService, GitAction } from './git-quick-open-service'; import { GitSyncService } from './git-sync-service'; import { WorkspaceService } from '@theia/workspace/lib/browser'; import { GitPrompt } from '../common/git-prompt'; -import { ScmRepository, ScmService, StatusBarCommand } from '@theia/scm/lib/common'; +import { ScmRepository, ScmService, ScmCommand } from '@theia/scm/lib/common'; import { GitRepositoryProvider } from './git-repository-provider'; export const GIT_WIDGET_FACTORY_ID = 'git'; @@ -128,7 +128,7 @@ export class GitViewContribution extends AbstractViewContribution protected toDispose = new DisposableCollection(); - private readonly onDidChangeCommandEmitterMap: Map> = new Map(); + private readonly onDidChangeCommandEmitterMap: Map> = new Map(); private readonly onDidChangeRepositoryEmitterMap: Map> = new Map(); private dirtyRepositories: Repository[] = []; @@ -176,8 +176,6 @@ export class GitViewContribution extends AbstractViewContribution onDidChangeCommandEmitter.fire([{ id: GIT_COMMANDS.CHANGE_REPOSITORY.id, text: `$(database) ${path.base}`, - alignment: StatusBarAlignment.LEFT, - priority: 102, command: GIT_COMMANDS.CHANGE_REPOSITORY.id, tooltip: path.toString() }]); @@ -214,8 +212,6 @@ export class GitViewContribution extends AbstractViewContribution onDidChangeCommandEmitter.fire([{ id: GIT_COMMANDS.CHECKOUT.id, text: `$(code-fork) ${branch}${dirty}`, - alignment: StatusBarAlignment.LEFT, - priority: 101, command: GIT_COMMANDS.CHECKOUT.id }]); } @@ -255,7 +251,7 @@ export class GitViewContribution extends AbstractViewContribution registerScmProvider(repository: Repository): ScmRepository { const uri = repository.localUri; const disposableCollection = new DisposableCollection(); - const onDidChangeStatusBarCommandsEmitter = new Emitter(); + const onDidChangeStatusBarCommandsEmitter = new Emitter(); const onDidChangeResourcesEmitter = new Emitter(); const onDidChangeRepositoryEmitter = new Emitter(); this.onDidChangeCommandEmitterMap.set(uri, onDidChangeStatusBarCommandsEmitter); @@ -514,9 +510,9 @@ export class GitViewContribution extends AbstractViewContribution if (onDidChangeCommandEmitter) { onDidChangeCommandEmitter.fire([{ id: 'vcs-sync-status', - alignment: StatusBarAlignment.LEFT, - priority: 100, - ...entry + text: entry.text, + tooltip: entry.tooltip, + command: entry.command, }]); } } else { diff --git a/packages/plugin-ext/src/api/plugin-api.ts b/packages/plugin-ext/src/api/plugin-api.ts index 9eb7fdc0a3975..92b07142883e9 100644 --- a/packages/plugin-ext/src/api/plugin-api.ts +++ b/packages/plugin-ext/src/api/plugin-api.ts @@ -63,7 +63,7 @@ import { IJSONSchema, IJSONSchemaSnippet } from '@theia/core/lib/common/json-sch import { DebuggerDescription } from '@theia/debug/lib/common/debug-service'; import { DebugProtocol } from 'vscode-debugprotocol'; import { SymbolInformation } from 'vscode-languageserver-types'; -import { StatusBarCommand } from '@theia/scm/lib/common'; +import { ScmCommand } from '@theia/scm/lib/common'; export interface PluginInitData { plugins: PluginMetadata[]; @@ -477,8 +477,8 @@ export interface SourceControlProviderFeatures { hasQuickDiffProvider?: boolean; count?: number; commitTemplate?: string; - acceptInputCommand?: StatusBarCommand; - statusBarCommands?: StatusBarCommand[]; + acceptInputCommand?: ScmCommand; + statusBarCommands?: ScmCommand[]; } export interface SourceControlGroupFeatures { diff --git a/packages/plugin-ext/src/main/browser/scm-main.ts b/packages/plugin-ext/src/main/browser/scm-main.ts index d963f6f81673a..11b8fd336900f 100644 --- a/packages/plugin-ext/src/main/browser/scm-main.ts +++ b/packages/plugin-ext/src/main/browser/scm-main.ts @@ -1,5 +1,5 @@ /******************************************************************************** - * Copyright (C) 2018 Red Hat, Inc. and others. + * Copyright (C) 2019 Red Hat, Inc. and others. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0 which is available at @@ -29,7 +29,7 @@ import { ScmResourceDecorations, ScmResourceGroup, ScmService, - StatusBarCommand + ScmCommand } from '@theia/scm/lib/common'; import { RPCProtocol } from '../../api/rpc-protocol'; import { interfaces } from 'inversify'; @@ -128,7 +128,7 @@ class ScmProviderImpl implements ScmProvider { private onDidChangeEmitter = new Emitter(); private onDidChangeResourcesEmitter = new Emitter(); private onDidChangeCommitTemplateEmitter = new Emitter(); - private onDidChangeStatusBarCommandsEmitter = new Emitter(); + private onDidChangeStatusBarCommandsEmitter = new Emitter(); private features: SourceControlProviderFeatures = {}; private groupsMap: Map = new Map(); private disposableCollection: DisposableCollection = new DisposableCollection(); @@ -175,11 +175,11 @@ class ScmProviderImpl implements ScmProvider { return this.features.commitTemplate; } - get acceptInputCommand(): StatusBarCommand | undefined { + get acceptInputCommand(): ScmCommand | undefined { return this.features.acceptInputCommand; } - get statusBarCommands(): StatusBarCommand[] | undefined { + get statusBarCommands(): ScmCommand[] | undefined { return this.features.statusBarCommands; } @@ -191,7 +191,7 @@ class ScmProviderImpl implements ScmProvider { return this.onDidChangeCommitTemplateEmitter.event; } - get onDidChangeStatusBarCommands(): Event { + get onDidChangeStatusBarCommands(): Event { return this.onDidChangeStatusBarCommandsEmitter.event; } diff --git a/packages/plugin-ext/src/plugin/scm.ts b/packages/plugin-ext/src/plugin/scm.ts index 12d66b8c9ff7a..a154c2860a3e1 100644 --- a/packages/plugin-ext/src/plugin/scm.ts +++ b/packages/plugin-ext/src/plugin/scm.ts @@ -1,5 +1,5 @@ /******************************************************************************** - * Copyright (C) 2018 Red Hat, Inc. and others. + * Copyright (C) 2019 Red Hat, Inc. and others. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0 which is available at @@ -17,7 +17,7 @@ import * as theia from '@theia/plugin'; import { CommandRegistryExt, Plugin as InternalPlugin, PLUGIN_RPC_CONTEXT, ScmExt, ScmMain } from '../api/plugin-api'; import { RPCProtocol } from '../api/rpc-protocol'; -import { StatusBarCommand } from '@theia/scm/lib/common/scm'; +import { ScmCommand } from '@theia/scm/lib/common'; import { CancellationToken } from '@theia/core'; import { UriComponents } from '../common/uri-components'; import URI from '@theia/core/lib/common/uri'; @@ -183,10 +183,9 @@ class SourceControlImpl implements theia.SourceControl { this._acceptInputCommand = acceptInputCommand; if (acceptInputCommand) { - const command: StatusBarCommand = { + const command: ScmCommand = { id: acceptInputCommand.id, - text: acceptInputCommand.label ? acceptInputCommand.label : '', - alignment: 1 + text: acceptInputCommand.label ? acceptInputCommand.label : '' }; this.proxy.$updateSourceControl(this.handle, { acceptInputCommand: command }); } diff --git a/packages/scm/compile.tsconfig.json b/packages/scm/compile.tsconfig.json index b8b72b49c8822..a23513b5e6b13 100644 --- a/packages/scm/compile.tsconfig.json +++ b/packages/scm/compile.tsconfig.json @@ -7,4 +7,4 @@ "include": [ "src" ] -} \ No newline at end of file +} diff --git a/packages/scm/src/browser/scm-contribution.ts b/packages/scm/src/browser/scm-contribution.ts index 343f0dc4af777..ca69823eeb2de 100644 --- a/packages/scm/src/browser/scm-contribution.ts +++ b/packages/scm/src/browser/scm-contribution.ts @@ -1,5 +1,5 @@ /******************************************************************************** - * Copyright (C) 2018 Red Hat, Inc. and others. + * Copyright (C) 2019 Red Hat, Inc. and others. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0 which is available at @@ -13,18 +13,25 @@ * * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 ********************************************************************************/ -import { injectable, inject } from 'inversify'; -import { FrontendApplicationContribution, StatusBar } from '@theia/core/lib/browser'; -import { ScmService, StatusBarCommand } from '../common/scm'; +import { inject, injectable } from 'inversify'; +import { FrontendApplicationContribution, StatusBar, StatusBarAlignment, StatusBarEntry } from '@theia/core/lib/browser'; +import { ScmCommand, ScmService } from '../common/scm'; @injectable() export class ScmContribution implements FrontendApplicationContribution { @inject(StatusBar) protected readonly statusBar: StatusBar; @inject(ScmService) protected readonly scmService: ScmService; onStart(): void { - const refresh = (commands: StatusBarCommand[]) => { + const refresh = (commands: ScmCommand[]) => { commands.forEach(command => { - this.statusBar.setElement(command.id, command); + const statusBaCommand: StatusBarEntry = { + text: command.text, + tooltip: command.tooltip, + command: command.command, + alignment: StatusBarAlignment.LEFT, + priority: 100 + }; + this.statusBar.setElement(command.id, statusBaCommand); }); }; this.scmService.onDidAddRepository(repository => { diff --git a/packages/scm/src/browser/scm-frontend-module.ts b/packages/scm/src/browser/scm-frontend-module.ts index 5771dd507635e..23b6e489806f1 100644 --- a/packages/scm/src/browser/scm-frontend-module.ts +++ b/packages/scm/src/browser/scm-frontend-module.ts @@ -1,5 +1,5 @@ /******************************************************************************** - * Copyright (C) 2017 TypeFox and others. + * Copyright (C) 2019 Red Hat, Inc. and others. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0 which is available at @@ -16,7 +16,7 @@ import { ContainerModule } from 'inversify'; import { ScmContribution } from './scm-contribution'; -import { ScmServiceImpl } from './scmService'; +import { ScmServiceImpl } from './scm-service-impl'; import { FrontendApplicationContribution } from '@theia/core/lib/browser'; import { ScmService } from '../common/scm'; diff --git a/packages/scm/src/browser/scmService.ts b/packages/scm/src/browser/scm-service-impl.ts similarity index 99% rename from packages/scm/src/browser/scmService.ts rename to packages/scm/src/browser/scm-service-impl.ts index 52892c37ab510..a62312c4c3fb5 100644 --- a/packages/scm/src/browser/scmService.ts +++ b/packages/scm/src/browser/scm-service-impl.ts @@ -1,5 +1,5 @@ /******************************************************************************** - * Copyright (C) 2018 Red Hat, Inc. and others. + * Copyright (C) 2019 Red Hat, Inc. and others. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/packages/scm/src/common/index.ts b/packages/scm/src/common/index.ts index be20242d05be1..e4c4d22ed2181 100644 --- a/packages/scm/src/common/index.ts +++ b/packages/scm/src/common/index.ts @@ -1,5 +1,5 @@ /******************************************************************************** - * Copyright (C) 2018 Red Hat, Inc. and others. + * Copyright (C) 2019 Red Hat, Inc. and others. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/packages/scm/src/common/scm.ts b/packages/scm/src/common/scm.ts index 6d6942df8c4cf..a673907e71651 100644 --- a/packages/scm/src/common/scm.ts +++ b/packages/scm/src/common/scm.ts @@ -1,5 +1,5 @@ /******************************************************************************** - * Copyright (C) 2018 Red Hat, Inc. and others. + * Copyright (C) 2019 Red Hat, Inc. and others. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0 which is available at @@ -15,7 +15,6 @@ ********************************************************************************/ import URI from '@theia/core/lib/common/uri'; import { Disposable, Event } from '@theia/core/lib/common'; -import { StatusBarEntry } from '@theia/core/lib/browser'; export interface ScmResourceDecorations { icon?: URI; @@ -57,16 +56,19 @@ export interface ScmProvider extends Disposable { readonly count?: number; readonly commitTemplate?: string; readonly onDidChangeCommitTemplate?: Event; - readonly onDidChangeStatusBarCommands?: Event; - readonly acceptInputCommand?: StatusBarCommand; - readonly statusBarCommands?: StatusBarCommand[]; + readonly onDidChangeStatusBarCommands?: Event; + readonly acceptInputCommand?: ScmCommand; + readonly statusBarCommands?: ScmCommand[]; readonly onDidChange: Event; getOriginalResource(uri: URI): Promise; } -export interface StatusBarCommand extends StatusBarEntry { - id: string +export interface ScmCommand { + id: string; + text: string; + tooltip?: string; + command?: string; } export const enum InputValidationType {