Merge from vscode 8a997f7321ae6612fc0e6eb3eac4f358a6233bfb

This commit is contained in:
ADS Merger
2020-02-11 07:08:19 +00:00
parent 0f934081e1
commit 085752f111
217 changed files with 2561 additions and 2063 deletions

View File

@@ -28,6 +28,32 @@ import { IEnvironmentService } from 'vs/platform/environment/common/environment'
const registry = Registry.as<IWorkbenchActionRegistry>(Extensions.WorkbenchActions);
const viewCategory = nls.localize('view', "View");
// --- Close Side Bar
export class CloseSidebarAction extends Action {
static readonly ID = 'workbench.action.closeSidebar';
static readonly LABEL = nls.localize('closeSidebar', "Close Side Bar");
constructor(
id: string,
label: string,
@IWorkbenchLayoutService private readonly layoutService: IWorkbenchLayoutService
) {
super(id, label);
this.enabled = !!this.layoutService;
}
run(): Promise<any> {
this.layoutService.setSideBarHidden(true);
return Promise.resolve();
}
}
registry.registerWorkbenchAction(SyncActionDescriptor.create(CloseSidebarAction, CloseSidebarAction.ID, CloseSidebarAction.LABEL), 'View: Close Side Bar ', viewCategory);
// --- Toggle Activity Bar
export class ToggleActivityBarVisibilityAction extends Action {

View File

@@ -8,18 +8,20 @@ import { Registry } from 'vs/platform/registry/common/platform';
import { Action } from 'vs/base/common/actions';
import { IEditorGroupsService, GroupDirection, GroupLocation, IFindGroupScope } from 'vs/workbench/services/editor/common/editorGroupsService';
import { IPanelService } from 'vs/workbench/services/panel/common/panelService';
import { IWorkbenchLayoutService, Parts, Position as PartPosition } from 'vs/workbench/services/layout/browser/layoutService';
import { IWorkbenchLayoutService, Parts } from 'vs/workbench/services/layout/browser/layoutService';
import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet';
import { IViewlet } from 'vs/workbench/common/viewlet';
import { IPanel } from 'vs/workbench/common/panel';
import { SyncActionDescriptor } from 'vs/platform/actions/common/actions';
import { IWorkbenchActionRegistry, Extensions } from 'vs/workbench/common/actions';
import { Direction } from 'vs/base/browser/ui/grid/grid';
abstract class BaseNavigationAction extends Action {
constructor(
id: string,
label: string,
protected direction: Direction,
@IEditorGroupsService protected editorGroupService: IEditorGroupsService,
@IPanelService protected panelService: IPanelService,
@IWorkbenchLayoutService protected layoutService: IWorkbenchLayoutService,
@@ -33,37 +35,40 @@ abstract class BaseNavigationAction extends Action {
const isPanelFocus = this.layoutService.hasFocus(Parts.PANEL_PART);
const isSidebarFocus = this.layoutService.hasFocus(Parts.SIDEBAR_PART);
const isSidebarPositionLeft = this.layoutService.getSideBarPosition() === PartPosition.LEFT;
const isPanelPositionDown = this.layoutService.getPanelPosition() === PartPosition.BOTTOM;
let neighborPart: Parts | undefined;
if (isEditorFocus) {
return this.navigateOnEditorFocus(isSidebarPositionLeft, isPanelPositionDown);
const didNavigate = this.navigateAcrossEditorGroup(this.toGroupDirection(this.direction));
if (didNavigate) {
return Promise.resolve(true);
}
neighborPart = this.layoutService.getVisibleNeighborPart(Parts.EDITOR_PART, this.direction);
}
if (isPanelFocus) {
return this.navigateOnPanelFocus(isSidebarPositionLeft, isPanelPositionDown);
neighborPart = this.layoutService.getVisibleNeighborPart(Parts.PANEL_PART, this.direction);
}
if (isSidebarFocus) {
return Promise.resolve(this.navigateOnSidebarFocus(isSidebarPositionLeft, isPanelPositionDown));
neighborPart = this.layoutService.getVisibleNeighborPart(Parts.SIDEBAR_PART, this.direction);
}
if (neighborPart === Parts.EDITOR_PART) {
return Promise.resolve(this.navigateToEditorGroup(this.direction === Direction.Right ? GroupLocation.FIRST : GroupLocation.LAST));
}
if (neighborPart === Parts.SIDEBAR_PART) {
return this.navigateToSidebar();
}
if (neighborPart === Parts.PANEL_PART) {
return this.navigateToPanel();
}
return Promise.resolve(false);
}
protected navigateOnEditorFocus(_isSidebarPositionLeft: boolean, _isPanelPositionDown: boolean): Promise<boolean | IViewlet | IPanel> {
return Promise.resolve(true);
}
protected navigateOnPanelFocus(_isSidebarPositionLeft: boolean, _isPanelPositionDown: boolean): Promise<boolean | IPanel> {
return Promise.resolve(true);
}
protected navigateOnSidebarFocus(_isSidebarPositionLeft: boolean, _isPanelPositionDown: boolean): boolean | IViewlet {
return true;
}
protected async navigateToPanel(): Promise<IPanel | boolean> {
private async navigateToPanel(): Promise<IPanel | boolean> {
if (!this.layoutService.isVisible(Parts.PANEL_PART)) {
return false;
}
@@ -83,7 +88,7 @@ abstract class BaseNavigationAction extends Action {
return res;
}
protected async navigateToSidebar(): Promise<IViewlet | boolean> {
private async navigateToSidebar(): Promise<IViewlet | boolean> {
if (!this.layoutService.isVisible(Parts.SIDEBAR_PART)) {
return Promise.resolve(false);
}
@@ -98,14 +103,23 @@ abstract class BaseNavigationAction extends Action {
return !!viewlet;
}
protected navigateAcrossEditorGroup(direction: GroupDirection): boolean {
private navigateAcrossEditorGroup(direction: GroupDirection): boolean {
return this.doNavigateToEditorGroup({ direction });
}
protected navigateToEditorGroup(location: GroupLocation): boolean {
private navigateToEditorGroup(location: GroupLocation): boolean {
return this.doNavigateToEditorGroup({ location });
}
private toGroupDirection(direction: Direction): GroupDirection {
switch (direction) {
case Direction.Down: return GroupDirection.DOWN;
case Direction.Left: return GroupDirection.LEFT;
case Direction.Right: return GroupDirection.RIGHT;
case Direction.Up: return GroupDirection.UP;
}
}
private doNavigateToEditorGroup(scope: IFindGroupScope): boolean {
const targetGroup = this.editorGroupService.findGroup(scope, this.editorGroupService.activeGroup);
if (targetGroup) {
@@ -131,40 +145,7 @@ class NavigateLeftAction extends BaseNavigationAction {
@IWorkbenchLayoutService layoutService: IWorkbenchLayoutService,
@IViewletService viewletService: IViewletService
) {
super(id, label, editorGroupService, panelService, layoutService, viewletService);
}
protected navigateOnEditorFocus(isSidebarPositionLeft: boolean, _isPanelPositionDown: boolean): Promise<boolean | IViewlet> {
const didNavigate = this.navigateAcrossEditorGroup(GroupDirection.LEFT);
if (didNavigate) {
return Promise.resolve(true);
}
if (isSidebarPositionLeft) {
return this.navigateToSidebar();
}
return Promise.resolve(false);
}
protected navigateOnPanelFocus(isSidebarPositionLeft: boolean, isPanelPositionDown: boolean): Promise<boolean | IViewlet> {
if (isPanelPositionDown && isSidebarPositionLeft) {
return this.navigateToSidebar();
}
if (!isPanelPositionDown) {
return Promise.resolve(this.navigateToEditorGroup(GroupLocation.LAST));
}
return Promise.resolve(false);
}
protected navigateOnSidebarFocus(isSidebarPositionLeft: boolean, _isPanelPositionDown: boolean): boolean {
if (!isSidebarPositionLeft) {
return this.navigateToEditorGroup(GroupLocation.LAST);
}
return false;
super(id, label, Direction.Left, editorGroupService, panelService, layoutService, viewletService);
}
}
@@ -181,40 +162,7 @@ class NavigateRightAction extends BaseNavigationAction {
@IWorkbenchLayoutService layoutService: IWorkbenchLayoutService,
@IViewletService viewletService: IViewletService
) {
super(id, label, editorGroupService, panelService, layoutService, viewletService);
}
protected navigateOnEditorFocus(isSidebarPositionLeft: boolean, isPanelPositionDown: boolean): Promise<boolean | IViewlet | IPanel> {
const didNavigate = this.navigateAcrossEditorGroup(GroupDirection.RIGHT);
if (didNavigate) {
return Promise.resolve(true);
}
if (!isPanelPositionDown) {
return this.navigateToPanel();
}
if (!isSidebarPositionLeft) {
return this.navigateToSidebar();
}
return Promise.resolve(false);
}
protected navigateOnPanelFocus(isSidebarPositionLeft: boolean, _isPanelPositionDown: boolean): Promise<boolean | IViewlet> {
if (!isSidebarPositionLeft) {
return this.navigateToSidebar();
}
return Promise.resolve(false);
}
protected navigateOnSidebarFocus(isSidebarPositionLeft: boolean, _isPanelPositionDown: boolean): boolean {
if (isSidebarPositionLeft) {
return this.navigateToEditorGroup(GroupLocation.FIRST);
}
return false;
super(id, label, Direction.Right, editorGroupService, panelService, layoutService, viewletService);
}
}
@@ -231,19 +179,7 @@ class NavigateUpAction extends BaseNavigationAction {
@IWorkbenchLayoutService layoutService: IWorkbenchLayoutService,
@IViewletService viewletService: IViewletService
) {
super(id, label, editorGroupService, panelService, layoutService, viewletService);
}
protected navigateOnEditorFocus(_isSidebarPositionLeft: boolean, _isPanelPositionDown: boolean): Promise<boolean> {
return Promise.resolve(this.navigateAcrossEditorGroup(GroupDirection.UP));
}
protected navigateOnPanelFocus(_isSidebarPositionLeft: boolean, isPanelPositionDown: boolean): Promise<boolean> {
if (isPanelPositionDown) {
return Promise.resolve(this.navigateToEditorGroup(GroupLocation.LAST));
}
return Promise.resolve(false);
super(id, label, Direction.Up, editorGroupService, panelService, layoutService, viewletService);
}
}
@@ -260,20 +196,7 @@ class NavigateDownAction extends BaseNavigationAction {
@IWorkbenchLayoutService layoutService: IWorkbenchLayoutService,
@IViewletService viewletService: IViewletService
) {
super(id, label, editorGroupService, panelService, layoutService, viewletService);
}
protected navigateOnEditorFocus(_isSidebarPositionLeft: boolean, isPanelPositionDown: boolean): Promise<boolean | IPanel> {
const didNavigate = this.navigateAcrossEditorGroup(GroupDirection.DOWN);
if (didNavigate) {
return Promise.resolve(true);
}
if (isPanelPositionDown) {
return this.navigateToPanel();
}
return Promise.resolve(false);
super(id, label, Direction.Down, editorGroupService, panelService, layoutService, viewletService);
}
}

View File

@@ -361,14 +361,20 @@ class ResourceLabelWidget extends IconLabel {
// provided. If they are not provided from the label we got
// we assume that the client does not want to display them
// and as such do not override.
const untitledEditor = this.textFileService.untitled.get(label.resource);
if (untitledEditor && !untitledEditor.hasAssociatedFilePath) {
const untitledModel = this.textFileService.untitled.get(label.resource);
if (untitledModel && !untitledModel.hasAssociatedFilePath) {
if (typeof label.name === 'string') {
label.name = untitledEditor.getName();
label.name = untitledModel.name;
}
if (typeof label.description === 'string') {
const untitledDescription = untitledEditor.getDescription();
let untitledDescription: string;
if (untitledModel.hasAssociatedFilePath) {
untitledDescription = this.labelService.getUriLabel(resources.dirname(untitledModel.resource), { relative: true });
} else {
untitledDescription = untitledModel.resource.path;
}
if (label.name !== untitledDescription) {
label.description = untitledDescription;
}

View File

@@ -1265,6 +1265,35 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi
this._onMaximizeChange.fire(maximized);
}
getVisibleNeighborPart(part: Parts, direction: Direction): Parts | undefined {
if (!this.workbenchGrid) {
return undefined;
}
if (!this.isVisible(part)) {
return undefined;
}
const neighborViews = this.workbenchGrid.getNeighborViews(this.getPart(part), direction, false);
if (!neighborViews) {
return undefined;
}
for (const neighborView of neighborViews) {
const neighborPart =
[Parts.ACTIVITYBAR_PART, Parts.EDITOR_PART, Parts.PANEL_PART, Parts.SIDEBAR_PART, Parts.STATUSBAR_PART, Parts.TITLEBAR_PART]
.find(partId => this.getPart(partId) === neighborView && this.isVisible(partId));
if (neighborPart !== undefined) {
return neighborPart;
}
}
return undefined;
}
private arrangeEditorNodes(editorNode: ISerializedNode, panelNode: ISerializedNode, editorSectionWidth: number): ISerializedNode[] {
switch (this.state.panel.position) {
case Position.BOTTOM:

View File

@@ -17,7 +17,7 @@ import 'vs/css!./media/breadcrumbscontrol';
import { OutlineElement, OutlineModel, TreeElement } from 'vs/editor/contrib/documentSymbols/outlineModel';
import { IConfigurationService, IConfigurationOverrides } from 'vs/platform/configuration/common/configuration';
import { FileKind, IFileService, IFileStat } from 'vs/platform/files/common/files';
import { IConstructorSignature1, IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { WorkbenchDataTree, WorkbenchAsyncDataTree } from 'vs/platform/list/browser/listService';
import { breadcrumbsPickerBackground, widgetShadow } from 'vs/platform/theme/common/colorRegistry';
import { IWorkspace, IWorkspaceContextService, IWorkspaceFolder } from 'vs/platform/workspace/common/workspace';
@@ -30,11 +30,9 @@ import { OutlineVirtualDelegate, OutlineGroupRenderer, OutlineElementRenderer, O
import { IIdentityProvider, IListVirtualDelegate, IKeyboardNavigationLabelProvider } from 'vs/base/browser/ui/list/list';
export function createBreadcrumbsPicker(instantiationService: IInstantiationService, parent: HTMLElement, element: BreadcrumbElement): BreadcrumbsPicker {
const ctor: IConstructorSignature1<HTMLElement, BreadcrumbsPicker> = element instanceof FileElement
? BreadcrumbsFilePicker
: BreadcrumbsOutlinePicker;
return instantiationService.createInstance(ctor, parent);
return element instanceof FileElement
? instantiationService.createInstance(BreadcrumbsFilePicker, parent)
: instantiationService.createInstance(BreadcrumbsOutlinePicker, parent);
}
interface ILayoutInfo {
@@ -375,7 +373,7 @@ export class BreadcrumbsFilePicker extends BreadcrumbsPicker {
const labels = this._instantiationService.createInstance(ResourceLabels, DEFAULT_LABELS_CONTAINER /* TODO@Jo visibility propagation */);
this._disposables.add(labels);
return this._instantiationService.createInstance<typeof WorkbenchAsyncDataTree, WorkbenchAsyncDataTree<IWorkspace | URI, IWorkspaceFolder | IFileStat, FuzzyScore>>(WorkbenchAsyncDataTree, 'BreadcrumbsFilePicker', container, new FileVirtualDelegate(), [this._instantiationService.createInstance(FileRenderer, labels)], this._instantiationService.createInstance(FileDataSource), {
return <WorkbenchAsyncDataTree<IWorkspace | URI, IWorkspaceFolder | IFileStat, FuzzyScore>>this._instantiationService.createInstance(WorkbenchAsyncDataTree, 'BreadcrumbsFilePicker', container, new FileVirtualDelegate(), [this._instantiationService.createInstance(FileRenderer, labels)], this._instantiationService.createInstance(FileDataSource), {
multipleSelectionSupport: false,
sorter: new FileSorter(),
filter: this._instantiationService.createInstance(FileFilter),
@@ -444,7 +442,7 @@ export class BreadcrumbsOutlinePicker extends BreadcrumbsPicker {
}
protected _createTree(container: HTMLElement) {
return this._instantiationService.createInstance<typeof WorkbenchDataTree, WorkbenchDataTree<OutlineModel, any, FuzzyScore>>(
return <WorkbenchDataTree<OutlineModel, any, FuzzyScore>>this._instantiationService.createInstance(
WorkbenchDataTree,
'BreadcrumbsOutlinePicker',
container,

View File

@@ -13,7 +13,7 @@ import { EditorInput, IEditorInputFactory, SideBySideEditorInput, IEditorInputFa
import { TextResourceEditor } from 'vs/workbench/browser/parts/editor/textResourceEditor';
import { SideBySideEditor } from 'vs/workbench/browser/parts/editor/sideBySideEditor';
import { DiffEditorInput } from 'vs/workbench/common/editor/diffEditorInput';
import { UntitledTextEditorInput } from 'vs/workbench/common/editor/untitledTextEditorInput';
import { UntitledTextEditorInput } from 'vs/workbench/services/untitled/common/untitledTextEditorInput';
import { ResourceEditorInput } from 'vs/workbench/common/editor/resourceEditorInput';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { TextDiffEditor } from 'vs/workbench/browser/parts/editor/textDiffEditor';

View File

@@ -12,7 +12,7 @@ import { areFunctions, withNullAsUndefined, withUndefinedAsNull } from 'vs/base/
import { URI } from 'vs/base/common/uri';
import { Action } from 'vs/base/common/actions';
import { Language } from 'vs/base/common/platform';
import { UntitledTextEditorInput } from 'vs/workbench/common/editor/untitledTextEditorInput';
import { UntitledTextEditorInput } from 'vs/workbench/services/untitled/common/untitledTextEditorInput';
import { IFileEditorInput, EncodingMode, IEncodingSupport, toResource, SideBySideEditorInput, IEditor as IBaseEditor, IEditorInput, SideBySideEditor, IModeSupport } from 'vs/workbench/common/editor';
import { Disposable, MutableDisposable, DisposableStore } from 'vs/base/common/lifecycle';
import { IEditorAction } from 'vs/editor/common/editorCommon';
@@ -1013,7 +1013,7 @@ export class ChangeModeAction extends Action {
const resource = this.editorService.activeEditor ? toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.MASTER }) : null;
let hasLanguageSupport = !!resource;
if (resource?.scheme === Schemas.untitled && !this.textFileService.untitled.hasAssociatedFilePath(resource)) {
if (resource?.scheme === Schemas.untitled && !this.textFileService.untitled.get(resource)?.hasAssociatedFilePath) {
hasLanguageSupport = false; // no configuration for untitled resources (e.g. "Untitled-1")
}

View File

@@ -9,7 +9,7 @@ import { ICodeEditor, getCodeEditor, IPasteEvent } from 'vs/editor/browser/edito
import { TextEditorOptions, EditorInput, EditorOptions } from 'vs/workbench/common/editor';
import { ResourceEditorInput } from 'vs/workbench/common/editor/resourceEditorInput';
import { BaseTextEditorModel } from 'vs/workbench/common/editor/textEditorModel';
import { UntitledTextEditorInput } from 'vs/workbench/common/editor/untitledTextEditorInput';
import { UntitledTextEditorInput } from 'vs/workbench/services/untitled/common/untitledTextEditorInput';
import { BaseTextEditor } from 'vs/workbench/browser/parts/editor/textEditor';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { IStorageService } from 'vs/platform/storage/common/storage';

View File

@@ -73,7 +73,7 @@ export class NotificationsList extends Themable {
const renderer = this.instantiationService.createInstance(NotificationRenderer, actionRunner);
// List
const list = this.list = this._register(this.instantiationService.createInstance<typeof WorkbenchList, WorkbenchList<INotificationViewItem>>(
const list = this.list = <WorkbenchList<INotificationViewItem>>this._register(this.instantiationService.createInstance(
WorkbenchList,
'NotificationsList',
this.listContainer,

View File

@@ -150,9 +150,9 @@ function createPositionPanelActionConfig(id: string, alias: string, label: strin
}
export const PositionPanelActionConfigs: PanelActionConfig<Position>[] = [
createPositionPanelActionConfig(PositionPanelActionId.LEFT, 'View: Panel Position Left', nls.localize('positionPanelLeft', 'Move Panel Left'), Position.LEFT),
createPositionPanelActionConfig(PositionPanelActionId.RIGHT, 'View: Panel Position Right', nls.localize('positionPanelRight', 'Move Panel Right'), Position.RIGHT),
createPositionPanelActionConfig(PositionPanelActionId.BOTTOM, 'View: Panel Position Bottom', nls.localize('positionPanelBottom', 'Move Panel To Bottom'), Position.BOTTOM),
createPositionPanelActionConfig(PositionPanelActionId.LEFT, 'View: Move Panel Left', nls.localize('positionPanelLeft', 'Move Panel Left'), Position.LEFT),
createPositionPanelActionConfig(PositionPanelActionId.RIGHT, 'View: Move Panel Right', nls.localize('positionPanelRight', 'Move Panel Right'), Position.RIGHT),
createPositionPanelActionConfig(PositionPanelActionId.BOTTOM, 'View: Move Panel To Bottom', nls.localize('positionPanelBottom', 'Move Panel To Bottom'), Position.BOTTOM),
];
const positionByActionId = new Map(PositionPanelActionConfigs.map(config => [config.id, config.value]));

View File

@@ -61,7 +61,7 @@ export abstract class MenubarControl extends Disposable {
// 'Selection': IMenu; {{SQL CARBON EDIT}} - Disable unusued menus
'View': IMenu;
// 'Go': IMenu; {{SQL CARBON EDIT}} - Disable unusued menus
// 'Debug': IMenu; {{SQL CARBON EDIT}} - Disable unusued menus
// 'Run': IMenu; {{SQL CARBON EDIT}} - Disable unusued menus
// 'Terminal': IMenu; {{SQL CARBON EDIT}} - Disable unusued menus
'Window'?: IMenu;
'Help': IMenu;
@@ -73,9 +73,9 @@ export abstract class MenubarControl extends Disposable {
'Edit': nls.localize({ key: 'mEdit', comment: ['&& denotes a mnemonic'] }, "&&Edit"),
// 'Selection': nls.localize({ key: 'mSelection', comment: ['&& denotes a mnemonic'] }, "&&Selection"), {{SQL CARBON EDIT}} - Disable unused menus
'View': nls.localize({ key: 'mView', comment: ['&& denotes a mnemonic'] }, "&&View"),
// 'Go': nls.localize({ key: 'mGoto', comment: ['&& denotes a mnemonic'] }, "&&Go"), {{SQL CARBON EDIT}} - Disable unused menus
// 'Debug': nls.localize({ key: 'mDebug', comment: ['&& denotes a mnemonic'] }, "&&Debug"), {{SQL CARBON EDIT}} - Disable unused menus
// 'Terminal': nls.localize({ key: 'mTerminal', comment: ['&& denotes a mnemonic'] }, "&&Terminal"), {{SQL CARBON EDIT}} - Disable unused menus
// 'Go': nls.localize({ key: 'mGoto', comment: ['&& denotes a mnemonic'] }, "&&Go"), {{SQL CARBON EDIT}} - Disable unusued menus
// 'Run': nls.localize({ key: 'mRun', comment: ['&& denotes a mnemonic'] }, "&&Run"), {{SQL CARBON EDIT}} - Disable unusued menus
// 'Terminal': nls.localize({ key: 'mTerminal', comment: ['&& denotes a mnemonic'] }, "&&Terminal"), {{SQL CARBON EDIT}} - Disable unusued menus
'Help': nls.localize({ key: 'mHelp', comment: ['&& denotes a mnemonic'] }, "&&Help")
};
@@ -110,7 +110,7 @@ export abstract class MenubarControl extends Disposable {
// 'Selection': this._register(this.menuService.createMenu(MenuId.MenubarSelectionMenu, this.contextKeyService)),
'View': this._register(this.menuService.createMenu(MenuId.MenubarViewMenu, this.contextKeyService)),
// 'Go': this._register(this.menuService.createMenu(MenuId.MenubarGoMenu, this.contextKeyService)),
// 'Debug': this._register(this.menuService.createMenu(MenuId.MenubarDebugMenu, this.contextKeyService)),
// 'Run': this._register(this.menuService.createMenu(MenuId.MenubarDebugMenu, this.contextKeyService)),
// 'Terminal': this._register(this.menuService.createMenu(MenuId.MenubarTerminalMenu, this.contextKeyService)),
'Help': this._register(this.menuService.createMenu(MenuId.MenubarHelpMenu, this.contextKeyService))
};