/*--------------------------------------------------------------------------------------------- * 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'; export interface ICommonMenubarService { updateMenubar(windowId: number, menuData: IMenubarData): Promise; } export interface IMenubarData { menus: { [id: string]: IMenubarMenu }; keybindings: { [id: string]: IMenubarKeybinding }; } export interface IMenubarMenu { items: Array; } export interface IMenubarKeybinding { label: string; userSettingsLabel?: string; isNative?: boolean; // Assumed true if missing } export interface IMenubarMenuItemAction { id: string; label: string; checked?: boolean; // Assumed false if missing enabled?: boolean; // Assumed true if missing } export interface IMenubarMenuRecentItemAction { id: string; label: string; uri: URI; remoteAuthority?: string; enabled?: boolean; } export interface IMenubarMenuItemSubmenu { id: string; label: string; submenu: IMenubarMenu; } export interface IMenubarMenuItemSeparator { id: 'vscode.menubar.separator'; } export type MenubarMenuItem = IMenubarMenuItemAction | IMenubarMenuItemSubmenu | IMenubarMenuItemSeparator | IMenubarMenuRecentItemAction; export function isMenubarMenuItemSubmenu(menuItem: MenubarMenuItem): menuItem is IMenubarMenuItemSubmenu { return (menuItem).submenu !== undefined; } export function isMenubarMenuItemSeparator(menuItem: MenubarMenuItem): menuItem is IMenubarMenuItemSeparator { return (menuItem).id === 'vscode.menubar.separator'; } export function isMenubarMenuItemRecentAction(menuItem: MenubarMenuItem): menuItem is IMenubarMenuRecentItemAction { return (menuItem).uri !== undefined; } export function isMenubarMenuItemAction(menuItem: MenubarMenuItem): menuItem is IMenubarMenuItemAction { return !isMenubarMenuItemSubmenu(menuItem) && !isMenubarMenuItemSeparator(menuItem) && !isMenubarMenuItemRecentAction(menuItem); }