@sussudio/platform
Version:
Internal APIs for VS Code's service injection the base services.
125 lines (123 loc) • 4.69 kB
text/typescript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IToolBarOptions, ToolBar } from '@sussudio/base/browser/ui/toolbar/toolbar.mjs';
import { IAction, SubmenuAction } from '@sussudio/base/common/actions.mjs';
import { IMenuActionOptions, IMenuService, MenuId } from '../common/actions.mjs';
import { IContextKeyService } from '../../contextkey/common/contextkey.mjs';
import { IContextMenuService } from '../../contextview/browser/contextView.mjs';
import { IKeybindingService } from '../../keybinding/common/keybinding.mjs';
import { ITelemetryService } from '../../telemetry/common/telemetry.mjs';
export declare const enum HiddenItemStrategy {
/** This toolbar doesn't support hiding*/
NoHide = -1,
/** Hidden items aren't shown anywhere */
Ignore = 0,
/** Hidden items move into the secondary group */
RenderInSecondaryGroup = 1,
}
export type IWorkbenchToolBarOptions = IToolBarOptions & {
/**
* Items of the primary group can be hidden. When this happens the item can
* - move into the secondary popup-menu, or
* - not be shown at all
*/
hiddenItemStrategy?: HiddenItemStrategy;
/**
* Optional menu id which is used for a "Reset Menu" command. This should be the
* menu id that defines the contents of this workbench menu
*/
resetMenu?: MenuId;
/**
* Optional menu id which items are used for the context menu of the toolbar.
*/
contextMenu?: MenuId;
/**
* Optional options how menu actions are created and invoked
*/
menuOptions?: IMenuActionOptions;
/**
* When set the `workbenchActionExecuted` is automatically send for each invoked action. The `from` property
* of the event will the passed `telemetrySource`-value
*/
telemetrySource?: string;
/** This is controlled by the WorkbenchToolBar */
allowContextMenu?: never;
/**
* Maximun number of items that can shown. Extra items will be shown in the overflow menu.
*/
maxNumberOfItems?: number;
};
/**
* The `WorkbenchToolBar` does
* - support hiding of menu items
* - lookup keybindings for each actions automatically
* - send `workbenchActionExecuted`-events for each action
*
* See {@link MenuWorkbenchToolBar} for a toolbar that is backed by a menu.
*/
export declare class WorkbenchToolBar extends ToolBar {
private _options;
private readonly _menuService;
private readonly _contextKeyService;
private readonly _contextMenuService;
private readonly _sessionDisposables;
constructor(
container: HTMLElement,
_options: IWorkbenchToolBarOptions | undefined,
_menuService: IMenuService,
_contextKeyService: IContextKeyService,
_contextMenuService: IContextMenuService,
keybindingService: IKeybindingService,
telemetryService: ITelemetryService,
);
setActions(_primary: readonly IAction[], _secondary?: readonly IAction[], menuIds?: readonly MenuId[]): void;
}
export interface IToolBarRenderOptions {
/**
* Determines what groups are considered primary. Defaults to `navigation`. Items of the primary
* group are rendered with buttons and the rest is rendered in the secondary popup-menu.
*/
primaryGroup?: string | ((actionGroup: string) => boolean);
/**
* Inlinse submenus with just a single item
*/
shouldInlineSubmenu?: (action: SubmenuAction, group: string, groupSize: number) => boolean;
/**
* Should the primary group allow for separators.
*/
useSeparatorsInPrimaryActions?: boolean;
}
export interface IMenuWorkbenchToolBarOptions extends IWorkbenchToolBarOptions {
/**
* Optional options to configure how the toolbar renderes items.
*/
toolbarOptions?: IToolBarRenderOptions;
/**
* Only `undefined` to disable the reset command is allowed, otherwise the menus
* id is used.
*/
resetMenu?: undefined;
}
/**
* A {@link WorkbenchToolBar workbench toolbar} that is purely driven from a {@link MenuId menu}-identifier.
*
* *Note* that Manual updates via `setActions` are NOT supported.
*/
export declare class MenuWorkbenchToolBar extends WorkbenchToolBar {
constructor(
container: HTMLElement,
menuId: MenuId,
options: IMenuWorkbenchToolBarOptions | undefined,
menuService: IMenuService,
contextKeyService: IContextKeyService,
contextMenuService: IContextMenuService,
keybindingService: IKeybindingService,
telemetryService: ITelemetryService,
);
/**
* @deprecated The WorkbenchToolBar does not support this method because it works with menus.
*/
setActions(): void;
}