Skip to content

Commit cebe494

Browse files
committed
1 parent 47a49c7 commit cebe494

3 files changed

Lines changed: 44 additions & 26 deletions

File tree

src/vs/workbench/browser/parts/compositePart.ts

Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import errors = require('vs/base/common/errors');
2020
import * as DOM from 'vs/base/browser/dom';
2121
import { StandardMouseEvent } from 'vs/base/browser/mouseEvent';
2222
import { CONTEXT as ToolBarContext, ToolBar } from 'vs/base/browser/ui/toolbar/toolbar';
23-
import { IActionItem, ActionsOrientation, Separator } from 'vs/base/browser/ui/actionbar/actionbar';
23+
import { IActionItem, ActionsOrientation } from 'vs/base/browser/ui/actionbar/actionbar';
2424
import { ProgressBar } from 'vs/base/browser/ui/progressbar/progressbar';
2525
import { IActionBarRegistry, Extensions, prepareActions } from 'vs/workbench/browser/actions';
2626
import { Action, IAction } from 'vs/base/common/actions';
@@ -39,7 +39,6 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
3939
import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
4040
import { IThemeService } from 'vs/platform/theme/common/themeService';
4141
import { attachProgressBarStyler } from 'vs/platform/theme/common/styler';
42-
import { ToggleSidebarVisibilityAction } from 'vs/workbench/browser/actions/toggleSidebarVisibility';
4342

4443
export interface ICompositeTitleLabel {
4544

@@ -429,7 +428,7 @@ export abstract class CompositePart<T extends Composite> extends Part {
429428
'class': ['composite', 'title']
430429
});
431430

432-
$(titleArea).on(DOM.EventType.CONTEXT_MENU, (e: MouseEvent) => this.onContextMenu(new StandardMouseEvent(e)));
431+
$(titleArea).on(DOM.EventType.CONTEXT_MENU, (e: MouseEvent) => this.onTitleAreaContextMenu(new StandardMouseEvent(e)));
433432

434433
// Left Title Label
435434
this.titleLabel = this.createTitleLabel(titleArea);
@@ -477,31 +476,24 @@ export abstract class CompositePart<T extends Composite> extends Part {
477476
this.titleLabel.updateStyles();
478477
}
479478

480-
private onContextMenu(event: StandardMouseEvent): void {
481-
const contextMenuActions = this.activeComposite ? this.activeComposite.getContextMenuActions() : [];
482-
if (contextMenuActions.length) {
483-
contextMenuActions.push(new Separator());
484-
}
485-
contextMenuActions.push(this.createHideSideBarAction());
486-
if (contextMenuActions.length) {
487-
let anchor: { x: number, y: number } = { x: event.posx, y: event.posy };
488-
this.contextMenuService.showContextMenu({
489-
getAnchor: () => anchor,
490-
getActions: () => TPromise.as(contextMenuActions),
491-
getActionItem: (action: Action) => this.actionItemProvider(action),
492-
actionRunner: this.activeComposite.getActionRunner(),
493-
getKeyBinding: (action) => this.keybindingService.lookupKeybinding(action.id)
494-
});
479+
private onTitleAreaContextMenu(event: StandardMouseEvent): void {
480+
if (this.activeComposite) {
481+
const contextMenuActions = this.getTitleAreaContextMenuActions();
482+
if (contextMenuActions.length) {
483+
let anchor: { x: number, y: number } = { x: event.posx, y: event.posy };
484+
this.contextMenuService.showContextMenu({
485+
getAnchor: () => anchor,
486+
getActions: () => TPromise.as(contextMenuActions),
487+
getActionItem: (action: Action) => this.actionItemProvider(action),
488+
actionRunner: this.activeComposite.getActionRunner(),
489+
getKeyBinding: (action) => this.keybindingService.lookupKeybinding(action.id)
490+
});
491+
}
495492
}
496493
}
497494

498-
private createHideSideBarAction(): IAction {
499-
return <IAction>{
500-
id: ToggleSidebarVisibilityAction.ID,
501-
label: nls.localize('compositePart.hideSideBarLabel', "Hide Side Bar"),
502-
enabled: true,
503-
run: () => this.partService.setSideBarHidden(true)
504-
};
495+
protected getTitleAreaContextMenuActions(): IAction[] {
496+
return this.activeComposite ? this.activeComposite.getContextMenuActions() : [];
505497
}
506498

507499
private actionItemProvider(action: Action): IActionItem {

src/vs/workbench/browser/parts/sidebar/sidebarPart.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@ import 'vs/css!./media/sidebarpart';
77
import { TPromise } from 'vs/base/common/winjs.base';
88
import nls = require('vs/nls');
99
import { Registry } from 'vs/platform/registry/common/platform';
10-
import { Action } from 'vs/base/common/actions';
10+
import { Action, IAction } from 'vs/base/common/actions';
1111
import { CompositePart } from 'vs/workbench/browser/parts/compositePart';
1212
import { Viewlet, ViewletRegistry, Extensions as ViewletExtensions } from 'vs/workbench/browser/viewlet';
1313
import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actionRegistry';
1414
import { SyncActionDescriptor } from 'vs/platform/actions/common/actions';
15+
import { Separator } from 'vs/base/browser/ui/actionbar/actionbar';
1516
import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet';
1617
import { IPartService, Parts, Position as SideBarPosition } from 'vs/workbench/services/part/common/partService';
1718
import { IViewlet } from 'vs/workbench/common/viewlet';
@@ -27,6 +28,7 @@ import Event from 'vs/base/common/event';
2728
import { IThemeService } from 'vs/platform/theme/common/themeService';
2829
import { contrastBorder } from 'vs/platform/theme/common/colorRegistry';
2930
import { SIDE_BAR_TITLE_FOREGROUND, SIDE_BAR_BACKGROUND, SIDE_BAR_FOREGROUND, SIDE_BAR_BORDER } from 'vs/workbench/common/theme';
31+
import { ToggleSidebarVisibilityAction } from 'vs/workbench/browser/actions/toggleSidebarVisibility';
3032

3133
export class SidebarPart extends CompositePart<Viewlet> {
3234

@@ -125,6 +127,25 @@ export class SidebarPart extends CompositePart<Viewlet> {
125127
public hideActiveViewlet(): TPromise<void> {
126128
return this.hideActiveComposite().then(composite => void 0);
127129
}
130+
131+
protected getTitleAreaContextMenuActions(): IAction[] {
132+
const contextMenuActions = super.getTitleAreaContextMenuActions();
133+
if (contextMenuActions.length) {
134+
contextMenuActions.push(new Separator());
135+
}
136+
contextMenuActions.push(this.createHideSideBarAction());
137+
return contextMenuActions;
138+
}
139+
140+
private createHideSideBarAction(): IAction {
141+
return <IAction>{
142+
id: ToggleSidebarVisibilityAction.ID,
143+
label: nls.localize('compositePart.hideSideBarLabel', "Hide Side Bar"),
144+
enabled: true,
145+
run: () => this.partService.setSideBarHidden(true)
146+
};
147+
}
148+
128149
}
129150

130151
class FocusSideBarAction extends Action {

src/vs/workbench/common/composite.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ export interface IComposite {
2828
*/
2929
getSecondaryActions(): IAction[];
3030

31+
/**
32+
* Returns an array of actions to show in the context menu of the composite
33+
*/
34+
getContextMenuActions(): IAction[];
35+
3136
/**
3237
* Returns the action item for a specific action.
3338
*/

0 commit comments

Comments
 (0)