提交 6685973b 编写于 作者: J Joao Moreno

scm provider switcher

上级 24517424
......@@ -5,7 +5,7 @@
'use strict';
import { IDisposable } from 'vs/base/common/lifecycle';
import { IAction, IActionRunner } from 'vs/base/common/actions';
import { IAction, IActionRunner, Action } from 'vs/base/common/actions';
import { IActionItem } from 'vs/base/browser/ui/actionbar/actionbar';
import { TPromise } from 'vs/base/common/winjs.base';
import { ResolvedKeybinding } from 'vs/base/common/keyCodes';
......@@ -53,8 +53,8 @@ export interface IContextMenuDelegate {
actionRunner?: IActionRunner;
}
export class ContextSubMenu {
constructor(public label: string, public entries: (ContextSubMenu | IAction)[]) {
// noop
export class ContextSubMenu extends Action {
constructor(label: string, public entries: (ContextSubMenu | IAction)[]) {
super('contextsubmenu', label, '', true);
}
}
......@@ -6,15 +6,38 @@
'use strict';
import 'vs/css!./media/scmViewlet';
import { localize } from 'vs/nls';
import { TPromise } from 'vs/base/common/winjs.base';
import Event, { Emitter } from 'vs/base/common/event';
import { IDisposable, dispose, empty as EmptyDisposable, toDisposable } from 'vs/base/common/lifecycle';
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
import { IMenuService, MenuId } from 'vs/platform/actions/common/actions';
import { IAction } from 'vs/base/common/actions';
import { IAction, Action } from 'vs/base/common/actions';
import { fillInActions } from 'vs/platform/actions/browser/menuItemActionItem';
import { ContextSubMenu } from 'vs/platform/contextview/browser/contextView';
import { Separator } from 'vs/base/browser/ui/actionbar/actionbar';
import { ISCMService, ISCMProvider, ISCMResource, ISCMResourceGroup } from 'vs/workbench/services/scm/common/scm';
import { getSCMResourceContextKey } from './scmUtil';
class SwitchProviderAction extends Action {
get checked(): boolean {
return this.scmService.activeProvider === this.provider;
}
constructor(
private provider: ISCMProvider,
@ISCMService private scmService: ISCMService
) {
super('scm.switchProvider', provider.label, '', true);
}
run(): TPromise<void> {
this.scmService.activeProvider = this.provider;
return TPromise.as(null);
}
}
export class SCMMenus implements IDisposable {
private disposables: IDisposable[] = [];
......@@ -69,7 +92,24 @@ export class SCMMenus implements IDisposable {
}
getTitleSecondaryActions(): IAction[] {
return this.titleSecondaryActions;
const providerSwitchActions = this.scmService.providers
.map(p => new SwitchProviderAction(p, this.scmService));
let result = [];
if (this.titleSecondaryActions.length > 0) {
result = result.concat(this.titleSecondaryActions);
}
if (result.length > 0 && providerSwitchActions.length > 0) {
result.push(new Separator());
}
if (providerSwitchActions.length > 0) {
result.push(new ContextSubMenu(localize('switch provider', "Switch SCM Provider..."), providerSwitchActions));
}
return result;
}
getResourceGroupActions(group: ISCMResourceGroup): IAction[] {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册