parent
33676982c8
commit
4f76209b7c
|
@ -1040,14 +1040,7 @@ export class ViewPaneContainer extends Component implements IViewPaneContainer {
|
|||
}
|
||||
}
|
||||
|
||||
const viewToggleActions = this.viewContainerModel.activeViewDescriptors.map(viewDescriptor => (<IAction>{
|
||||
id: `${viewDescriptor.id}.toggleVisibility`,
|
||||
label: viewDescriptor.name,
|
||||
checked: this.viewContainerModel.isVisible(viewDescriptor.id),
|
||||
enabled: viewDescriptor.canToggleVisibility && (!this.viewContainerModel.isVisible(viewDescriptor.id) || this.viewContainerModel.visibleViewDescriptors.length > 1),
|
||||
run: () => this.toggleViewVisibility(viewDescriptor.id)
|
||||
}));
|
||||
|
||||
const viewToggleActions = this.getViewsVisibilityActions();
|
||||
if (result.length && viewToggleActions.length) {
|
||||
result.push(new Separator());
|
||||
}
|
||||
|
@ -1073,6 +1066,16 @@ export class ViewPaneContainer extends Component implements IViewPaneContainer {
|
|||
return [];
|
||||
}
|
||||
|
||||
getViewsVisibilityActions(): IAction[] {
|
||||
return this.viewContainerModel.activeViewDescriptors.map(viewDescriptor => (<IAction>{
|
||||
id: `${viewDescriptor.id}.toggleVisibility`,
|
||||
label: viewDescriptor.name,
|
||||
checked: this.viewContainerModel.isVisible(viewDescriptor.id),
|
||||
enabled: viewDescriptor.canToggleVisibility && (!this.viewContainerModel.isVisible(viewDescriptor.id) || this.viewContainerModel.visibleViewDescriptors.length > 1),
|
||||
run: () => this.toggleViewVisibility(viewDescriptor.id)
|
||||
}));
|
||||
}
|
||||
|
||||
getActionViewItem(action: IAction): IActionViewItem | undefined {
|
||||
if (this.isViewMergedWithContainer()) {
|
||||
return this.paneItems[0].pane.getActionViewItem(action);
|
||||
|
|
|
@ -27,6 +27,8 @@ import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace
|
|||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
import { PaneComposite } from 'vs/workbench/browser/panecomposite';
|
||||
import { Separator } from 'vs/base/browser/ui/actionbar/actionbar';
|
||||
import { ContextSubMenu } from 'vs/base/browser/contextmenu';
|
||||
import { Event } from 'vs/base/common/event';
|
||||
|
||||
export abstract class Viewlet extends PaneComposite implements IViewlet {
|
||||
|
||||
|
@ -43,6 +45,10 @@ export abstract class Viewlet extends PaneComposite implements IViewlet {
|
|||
@IConfigurationService protected configurationService: IConfigurationService
|
||||
) {
|
||||
super(id, viewPaneContainer, telemetryService, storageService, instantiationService, themeService, contextMenuService, extensionService, contextService);
|
||||
this._register(Event.any(viewPaneContainer.onDidAddViews, viewPaneContainer.onDidRemoveViews)(() => {
|
||||
// Update title area since there is no better way to update secondary actions
|
||||
this.updateTitleArea();
|
||||
}));
|
||||
}
|
||||
|
||||
getContextMenuActions(): IAction[] {
|
||||
|
@ -60,6 +66,24 @@ export abstract class Viewlet extends PaneComposite implements IViewlet {
|
|||
run: () => this.layoutService.setSideBarHidden(true)
|
||||
}];
|
||||
}
|
||||
|
||||
getSecondaryActions(): IAction[] {
|
||||
const viewSecondaryActions = this.viewPaneContainer.getViewsVisibilityActions();
|
||||
const secondaryActions = this.viewPaneContainer.getSecondaryActions();
|
||||
if (viewSecondaryActions.length <= 1) {
|
||||
return secondaryActions;
|
||||
}
|
||||
|
||||
if (secondaryActions.length === 0) {
|
||||
return viewSecondaryActions;
|
||||
}
|
||||
|
||||
return [
|
||||
new ContextSubMenu(nls.localize('views', "Views"), viewSecondaryActions),
|
||||
new Separator(),
|
||||
...secondaryActions
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue