Files
code-server/lib/vscode/src/vs/platform/menubar/common/menubar.ts
2021-04-09 11:32:27 +05:30

69 lines
2.2 KiB
TypeScript

/*---------------------------------------------------------------------------------------------
* 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<void>;
}
export interface IMenubarData {
menus: { [id: string]: IMenubarMenu };
keybindings: { [id: string]: IMenubarKeybinding };
}
export interface IMenubarMenu {
items: Array<MenubarMenuItem>;
}
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 (<IMenubarMenuItemSubmenu>menuItem).submenu !== undefined;
}
export function isMenubarMenuItemSeparator(menuItem: MenubarMenuItem): menuItem is IMenubarMenuItemSeparator {
return (<IMenubarMenuItemSeparator>menuItem).id === 'vscode.menubar.separator';
}
export function isMenubarMenuItemRecentAction(menuItem: MenubarMenuItem): menuItem is IMenubarMenuRecentItemAction {
return (<IMenubarMenuRecentItemAction>menuItem).uri !== undefined;
}
export function isMenubarMenuItemAction(menuItem: MenubarMenuItem): menuItem is IMenubarMenuItemAction {
return !isMenubarMenuItemSubmenu(menuItem) && !isMenubarMenuItemSeparator(menuItem) && !isMenubarMenuItemRecentAction(menuItem);
}