提交 ffd91480 编写于 作者: I isidor

context menu on title area is specific for sidebarPart thus move it there

fixes #46237
上级 42a5c793
......@@ -15,7 +15,6 @@ import * as strings from 'vs/base/common/strings';
import { Emitter } from 'vs/base/common/event';
import * as types from 'vs/base/common/types';
import * as errors from 'vs/base/common/errors';
import { StandardMouseEvent } from 'vs/base/browser/mouseEvent';
import { ToolBar } from 'vs/base/browser/ui/toolbar/toolbar';
import { IActionItem, ActionsOrientation } from 'vs/base/browser/ui/actionbar/actionbar';
import { ProgressBar } from 'vs/base/browser/ui/progressbar/progressbar';
......@@ -36,7 +35,7 @@ import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
import { IThemeService } from 'vs/platform/theme/common/themeService';
import { attachProgressBarStyler } from 'vs/platform/theme/common/styler';
import { INotificationService } from 'vs/platform/notification/common/notification';
import { Dimension, EventType } from 'vs/base/browser/dom';
import { Dimension } from 'vs/base/browser/dom';
export interface ICompositeTitleLabel {
......@@ -74,7 +73,7 @@ export abstract class CompositePart<T extends Composite> extends Part {
private telemetryService: ITelemetryService,
protected contextMenuService: IContextMenuService,
protected partService: IPartService,
private keybindingService: IKeybindingService,
protected keybindingService: IKeybindingService,
protected instantiationService: IInstantiationService,
themeService: IThemeService,
protected readonly registry: CompositeRegistry<T>,
......@@ -408,8 +407,6 @@ export abstract class CompositePart<T extends Composite> extends Part {
'class': ['composite', 'title']
});
$(titleArea).on(EventType.CONTEXT_MENU, (e: MouseEvent) => this.onTitleAreaContextMenu(new StandardMouseEvent(e)));
// Left Title Label
this.titleLabel = this.createTitleLabel(titleArea.getHTMLElement());
......@@ -456,27 +453,7 @@ export abstract class CompositePart<T extends Composite> extends Part {
this.titleLabel.updateStyles();
}
private onTitleAreaContextMenu(event: StandardMouseEvent): void {
if (this.activeComposite) {
const contextMenuActions = this.getTitleAreaContextMenuActions();
if (contextMenuActions.length) {
const anchor: { x: number, y: number } = { x: event.posx, y: event.posy };
this.contextMenuService.showContextMenu({
getAnchor: () => anchor,
getActions: () => TPromise.as(contextMenuActions),
getActionItem: action => this.actionItemProvider(action as Action),
actionRunner: this.activeComposite.getActionRunner(),
getKeyBinding: action => this.keybindingService.lookupKeybinding(action.id)
});
}
}
}
protected getTitleAreaContextMenuActions(): IAction[] {
return this.activeComposite ? this.activeComposite.getContextMenuActions() : [];
}
private actionItemProvider(action: Action): IActionItem {
protected actionItemProvider(action: Action): IActionItem {
// Check Active Composite
if (this.activeComposite) {
......
......@@ -26,8 +26,9 @@ import { IThemeService } from 'vs/platform/theme/common/themeService';
import { contrastBorder } from 'vs/platform/theme/common/colorRegistry';
import { SIDE_BAR_TITLE_FOREGROUND, SIDE_BAR_BACKGROUND, SIDE_BAR_FOREGROUND, SIDE_BAR_BORDER } from 'vs/workbench/common/theme';
import { INotificationService } from 'vs/platform/notification/common/notification';
import { Dimension } from 'vs/base/browser/dom';
import { Dimension, EventType } from 'vs/base/browser/dom';
import { $ } from 'vs/base/browser/builder';
import { StandardMouseEvent } from 'vs/base/browser/mouseEvent';
export class SidebarPart extends CompositePart<Viewlet> {
......@@ -76,6 +77,13 @@ export class SidebarPart extends CompositePart<Viewlet> {
return this._onDidCompositeClose.event as Event<IViewlet>;
}
public createTitleArea(parent: HTMLElement): HTMLElement {
const titleArea = super.createTitleArea(parent);
$(titleArea).on(EventType.CONTEXT_MENU, (e: MouseEvent) => this.onTitleAreaContextMenu(new StandardMouseEvent(e)));
return titleArea;
}
public updateStyles(): void {
super.updateStyles();
......@@ -133,6 +141,23 @@ export class SidebarPart extends CompositePart<Viewlet> {
return super.layout(dimension);
}
private onTitleAreaContextMenu(event: StandardMouseEvent): void {
const activeViewlet = this.getActiveViewlet() as Viewlet;
if (activeViewlet) {
const contextMenuActions = activeViewlet ? activeViewlet.getContextMenuActions() : [];
if (contextMenuActions.length) {
const anchor: { x: number, y: number } = { x: event.posx, y: event.posy };
this.contextMenuService.showContextMenu({
getAnchor: () => anchor,
getActions: () => TPromise.as(contextMenuActions),
getActionItem: action => this.actionItemProvider(action as Action),
actionRunner: activeViewlet.getActionRunner(),
getKeyBinding: action => this.keybindingService.lookupKeybinding(action.id)
});
}
}
}
}
class FocusSideBarAction extends Action {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册