mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-08 17:24:01 -05:00
59 lines
2.5 KiB
TypeScript
59 lines
2.5 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
import { IDisposable } from 'vs/base/common/lifecycle';
|
|
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
|
import { IMenuService, MenuId, IMenu } from 'vs/platform/actions/common/actions';
|
|
import { IAction } from 'vs/base/common/actions';
|
|
import { MainThreadCommentController } from 'vs/workbench/api/browser/mainThreadComments';
|
|
import { IContextMenuService } from 'vs/platform/contextview/browser/contextView';
|
|
import { Comment, CommentThread2 } from 'vs/editor/common/modes';
|
|
import { fillInContextMenuActions } from 'vs/platform/actions/browser/menuEntryActionViewItem';
|
|
|
|
export class CommentMenus implements IDisposable {
|
|
constructor(
|
|
controller: MainThreadCommentController,
|
|
@IContextKeyService private contextKeyService: IContextKeyService,
|
|
@IMenuService private readonly menuService: IMenuService,
|
|
@IContextMenuService private readonly contextMenuService: IContextMenuService
|
|
) {
|
|
const commentControllerKey = this.contextKeyService.createKey<string | undefined>('commentController', undefined);
|
|
|
|
commentControllerKey.set(controller.contextValue);
|
|
}
|
|
|
|
getCommentThreadTitleActions(commentThread: CommentThread2, contextKeyService: IContextKeyService): IMenu {
|
|
return this.getMenu(MenuId.CommentThreadTitle, contextKeyService);
|
|
}
|
|
|
|
getCommentThreadActions(commentThread: CommentThread2, contextKeyService: IContextKeyService): IMenu {
|
|
return this.getMenu(MenuId.CommentThreadActions, contextKeyService);
|
|
}
|
|
|
|
getCommentTitleActions(comment: Comment, contextKeyService: IContextKeyService): IMenu {
|
|
return this.getMenu(MenuId.CommentTitle, contextKeyService);
|
|
}
|
|
|
|
getCommentActions(comment: Comment, contextKeyService: IContextKeyService): IMenu {
|
|
return this.getMenu(MenuId.CommentActions, contextKeyService);
|
|
}
|
|
|
|
private getMenu(menuId: MenuId, contextKeyService: IContextKeyService): IMenu {
|
|
const menu = this.menuService.createMenu(menuId, contextKeyService);
|
|
|
|
const primary: IAction[] = [];
|
|
const secondary: IAction[] = [];
|
|
const result = { primary, secondary };
|
|
|
|
fillInContextMenuActions(menu, { shouldForwardArgs: true }, result, this.contextMenuService, g => true);
|
|
|
|
return menu;
|
|
}
|
|
|
|
dispose(): void {
|
|
|
|
}
|
|
}
|