Skip to content

Commit 4f76209

Browse files
committed
views: show secondary view visibility actions in title area
microsoft#98614
1 parent 3367698 commit 4f76209

2 files changed

Lines changed: 35 additions & 8 deletions

File tree

src/vs/workbench/browser/parts/views/viewPaneContainer.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1040,14 +1040,7 @@ export class ViewPaneContainer extends Component implements IViewPaneContainer {
10401040
}
10411041
}
10421042

1043-
const viewToggleActions = this.viewContainerModel.activeViewDescriptors.map(viewDescriptor => (<IAction>{
1044-
id: `${viewDescriptor.id}.toggleVisibility`,
1045-
label: viewDescriptor.name,
1046-
checked: this.viewContainerModel.isVisible(viewDescriptor.id),
1047-
enabled: viewDescriptor.canToggleVisibility && (!this.viewContainerModel.isVisible(viewDescriptor.id) || this.viewContainerModel.visibleViewDescriptors.length > 1),
1048-
run: () => this.toggleViewVisibility(viewDescriptor.id)
1049-
}));
1050-
1043+
const viewToggleActions = this.getViewsVisibilityActions();
10511044
if (result.length && viewToggleActions.length) {
10521045
result.push(new Separator());
10531046
}
@@ -1073,6 +1066,16 @@ export class ViewPaneContainer extends Component implements IViewPaneContainer {
10731066
return [];
10741067
}
10751068

1069+
getViewsVisibilityActions(): IAction[] {
1070+
return this.viewContainerModel.activeViewDescriptors.map(viewDescriptor => (<IAction>{
1071+
id: `${viewDescriptor.id}.toggleVisibility`,
1072+
label: viewDescriptor.name,
1073+
checked: this.viewContainerModel.isVisible(viewDescriptor.id),
1074+
enabled: viewDescriptor.canToggleVisibility && (!this.viewContainerModel.isVisible(viewDescriptor.id) || this.viewContainerModel.visibleViewDescriptors.length > 1),
1075+
run: () => this.toggleViewVisibility(viewDescriptor.id)
1076+
}));
1077+
}
1078+
10761079
getActionViewItem(action: IAction): IActionViewItem | undefined {
10771080
if (this.isViewMergedWithContainer()) {
10781081
return this.paneItems[0].pane.getActionViewItem(action);

src/vs/workbench/browser/viewlet.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace
2727
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
2828
import { PaneComposite } from 'vs/workbench/browser/panecomposite';
2929
import { Separator } from 'vs/base/browser/ui/actionbar/actionbar';
30+
import { ContextSubMenu } from 'vs/base/browser/contextmenu';
31+
import { Event } from 'vs/base/common/event';
3032

3133
export abstract class Viewlet extends PaneComposite implements IViewlet {
3234

@@ -43,6 +45,10 @@ export abstract class Viewlet extends PaneComposite implements IViewlet {
4345
@IConfigurationService protected configurationService: IConfigurationService
4446
) {
4547
super(id, viewPaneContainer, telemetryService, storageService, instantiationService, themeService, contextMenuService, extensionService, contextService);
48+
this._register(Event.any(viewPaneContainer.onDidAddViews, viewPaneContainer.onDidRemoveViews)(() => {
49+
// Update title area since there is no better way to update secondary actions
50+
this.updateTitleArea();
51+
}));
4652
}
4753

4854
getContextMenuActions(): IAction[] {
@@ -60,6 +66,24 @@ export abstract class Viewlet extends PaneComposite implements IViewlet {
6066
run: () => this.layoutService.setSideBarHidden(true)
6167
}];
6268
}
69+
70+
getSecondaryActions(): IAction[] {
71+
const viewSecondaryActions = this.viewPaneContainer.getViewsVisibilityActions();
72+
const secondaryActions = this.viewPaneContainer.getSecondaryActions();
73+
if (viewSecondaryActions.length <= 1) {
74+
return secondaryActions;
75+
}
76+
77+
if (secondaryActions.length === 0) {
78+
return viewSecondaryActions;
79+
}
80+
81+
return [
82+
new ContextSubMenu(nls.localize('views', "Views"), viewSecondaryActions),
83+
new Separator(),
84+
...secondaryActions
85+
];
86+
}
6387
}
6488

6589
/**

0 commit comments

Comments
 (0)