Skip to content

Commit 116a3de

Browse files
committed
Unify into single ViewContainerModel
1 parent 9275e7e commit 116a3de

15 files changed

Lines changed: 945 additions & 1005 deletions

File tree

src/vs/workbench/browser/actions/layoutActions.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -488,9 +488,9 @@ export class ResetViewLocationsAction extends Action {
488488
async run(): Promise<void> {
489489
const viewContainerRegistry = Registry.as<IViewContainersRegistry>(ViewContainerExtensions.ViewContainersRegistry);
490490
viewContainerRegistry.all.forEach(viewContainer => {
491-
const viewDescriptors = this.viewDescriptorService.getViewDescriptors(viewContainer);
491+
const viewContainerModel = this.viewDescriptorService.getViewContainerModel(viewContainer);
492492

493-
viewDescriptors.allViewDescriptors.forEach(viewDescriptor => {
493+
viewContainerModel.allViewDescriptors.forEach(viewDescriptor => {
494494
const defaultContainer = this.viewDescriptorService.getDefaultContainer(viewDescriptor.id);
495495
const currentContainer = this.viewDescriptorService.getViewContainer(viewDescriptor.id);
496496

@@ -583,7 +583,7 @@ export class MoveFocusedViewAction extends Action {
583583

584584
const currentContainer = this.viewDescriptorService.getViewContainer(focusedViewId)!;
585585
const currentLocation = this.viewDescriptorService.getViewLocation(focusedViewId)!;
586-
const isViewSolo = this.viewDescriptorService.getViewDescriptors(currentContainer).allViewDescriptors.length === 1;
586+
const isViewSolo = this.viewDescriptorService.getViewContainerModel(currentContainer).allViewDescriptors.length === 1;
587587

588588
if (!(isViewSolo && currentLocation === ViewContainerLocation.Sidebar)) {
589589
items.push({

src/vs/workbench/browser/parts/activitybar/activitybarPart.ts

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import { IExtensionService } from 'vs/workbench/services/extensions/common/exten
2626
import { URI, UriComponents } from 'vs/base/common/uri';
2727
import { ToggleCompositePinnedAction, ICompositeBarColors, ActivityAction, ICompositeActivity } from 'vs/workbench/browser/parts/compositeBarActions';
2828
import { ViewletDescriptor } from 'vs/workbench/browser/viewlet';
29-
import { IViewDescriptorService, IViewContainersRegistry, Extensions as ViewContainerExtensions, ViewContainer, TEST_VIEW_CONTAINER_ID, IViewDescriptorCollection, ViewContainerLocation } from 'vs/workbench/common/views';
29+
import { IViewDescriptorService, IViewContainersRegistry, Extensions as ViewContainerExtensions, ViewContainer, TEST_VIEW_CONTAINER_ID, IViewContainerModel, ViewContainerLocation } from 'vs/workbench/common/views';
3030
import { IContextKeyService, ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
3131
import { IViewlet } from 'vs/workbench/common/viewlet';
3232
import { isUndefinedOrNull, assertIsDefined, isString } from 'vs/base/common/types';
@@ -218,8 +218,8 @@ export class ActivitybarPart extends Part implements IActivityBarService {
218218
if (viewletDescriptor) {
219219
const viewContainer = this.getViewContainer(viewletDescriptor.id);
220220
if (viewContainer?.hideIfEmpty) {
221-
const viewDescriptors = this.viewDescriptorService.getViewDescriptors(viewContainer);
222-
if (viewDescriptors.activeViewDescriptors.length === 0) {
221+
const viewContainerModel = this.viewDescriptorService.getViewContainerModel(viewContainer);
222+
if (viewContainerModel.activeViewDescriptors.length === 0) {
223223
this.hideComposite(viewletDescriptor.id); // Update the composite bar by hiding
224224
}
225225
}
@@ -490,13 +490,12 @@ export class ActivitybarPart extends Part implements IActivityBarService {
490490
for (const viewlet of viewlets) {
491491
this.enableCompositeActions(viewlet);
492492
const viewContainer = this.getViewContainer(viewlet.id)!;
493-
const viewDescriptors = this.viewDescriptorService.getViewDescriptors(viewContainer);
494-
this.onDidChangeActiveViews(viewlet, viewDescriptors, viewContainer.hideIfEmpty);
493+
const viewContainerModel = this.viewDescriptorService.getViewContainerModel(viewContainer);
494+
this.onDidChangeActiveViews(viewlet, viewContainerModel, viewContainer.hideIfEmpty);
495495

496496
const disposables = new DisposableStore();
497-
disposables.add(viewDescriptors.onDidChangeActiveViews(() => this.onDidChangeActiveViews(viewlet, viewDescriptors, viewContainer.hideIfEmpty)));
498-
disposables.add(viewDescriptors.onDidChangeViews(() => this.onDidUpdateViews(viewlet, viewDescriptors)));
499-
disposables.add(viewDescriptors.onDidMove(() => this.onDidUpdateViews(viewlet, viewDescriptors)));
497+
disposables.add(viewContainerModel.onDidChangeActiveViewDescriptors(() => this.onDidChangeActiveViews(viewlet, viewContainerModel, viewContainer.hideIfEmpty)));
498+
disposables.add(viewContainerModel.onDidChangeContainerInfo(() => this.updateActivity(viewlet, viewContainerModel)));
500499

501500
this.viewletDisposables.set(viewlet.id, disposables);
502501
}
@@ -512,12 +511,12 @@ export class ActivitybarPart extends Part implements IActivityBarService {
512511
this.hideComposite(viewletId);
513512
}
514513

515-
private updateActivity(viewlet: ViewletDescriptor, viewDescriptors: IViewDescriptorCollection): void {
516-
const icon = viewDescriptors.getIcon();
514+
private updateActivity(viewlet: ViewletDescriptor, viewContainerModel: IViewContainerModel): void {
515+
const icon = viewContainerModel.icon;
517516

518517
const activity: IActivity = {
519518
id: viewlet.id,
520-
name: viewDescriptors.getTitle(),
519+
name: viewContainerModel.title,
521520
cssClass: isString(icon) ? icon : undefined,
522521
iconUrl: icon instanceof URI ? icon : undefined,
523522
keybindingId: viewlet.keybindingId
@@ -531,11 +530,7 @@ export class ActivitybarPart extends Part implements IActivityBarService {
531530
}
532531
}
533532

534-
private onDidUpdateViews(viewlet: ViewletDescriptor, viewDescriptors: IViewDescriptorCollection): void {
535-
this.updateActivity(viewlet, viewDescriptors);
536-
}
537-
538-
private onDidChangeActiveViews(viewlet: ViewletDescriptor, viewDescriptors: IViewDescriptorCollection, hideIfEmpty?: boolean): void {
533+
private onDidChangeActiveViews(viewlet: ViewletDescriptor, viewDescriptors: IViewContainerModel, hideIfEmpty?: boolean): void {
539534
if (viewDescriptors.activeViewDescriptors.length) {
540535
this.updateActivity(viewlet, viewDescriptors);
541536
this.compositeBar.addComposite(viewlet);
@@ -663,8 +658,8 @@ export class ActivitybarPart extends Part implements IActivityBarService {
663658
if (viewlet) {
664659
const views: { when: string | undefined }[] = [];
665660
if (viewContainer) {
666-
const viewDescriptors = this.viewDescriptorService.getViewDescriptors(viewContainer);
667-
for (const { when } of viewDescriptors.allViewDescriptors) {
661+
const viewContainerModel = this.viewDescriptorService.getViewContainerModel(viewContainer);
662+
for (const { when } of viewContainerModel.allViewDescriptors) {
668663
views.push({ when: when ? when.serialize() : undefined });
669664
}
670665
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ export class CompositeDragAndDrop implements ICompositeDragAndDrop {
5656
}
5757
// ... on a different composite bar
5858
else {
59-
const viewsToMove = this.viewDescriptorService.getViewDescriptors(currentContainer)!.allViewDescriptors;
59+
const viewsToMove = this.viewDescriptorService.getViewContainerModel(currentContainer)!.allViewDescriptors;
6060
if (viewsToMove.some(v => !v.canMoveView)) {
6161
return;
6262
}
@@ -119,7 +119,7 @@ export class CompositeDragAndDrop implements ICompositeDragAndDrop {
119119
}
120120

121121
// ... to another composite location
122-
const draggedViews = this.viewDescriptorService.getViewDescriptors(currentContainer)!.allViewDescriptors;
122+
const draggedViews = this.viewDescriptorService.getViewContainerModel(currentContainer)!.allViewDescriptors;
123123

124124
// ... all views must be movable
125125
return !draggedViews.some(v => !v.canMoveView);

src/vs/workbench/browser/parts/panel/panelPart.ts

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import { IContextKey, IContextKeyService, ContextKeyExpr } from 'vs/platform/con
3333
import { isUndefinedOrNull, assertIsDefined } from 'vs/base/common/types';
3434
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
3535
import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions';
36-
import { ViewContainer, IViewContainersRegistry, Extensions as ViewContainerExtensions, IViewDescriptorService, IViewDescriptorCollection, ViewContainerLocation } from 'vs/workbench/common/views';
36+
import { ViewContainer, IViewContainersRegistry, Extensions as ViewContainerExtensions, IViewDescriptorService, IViewContainerModel, ViewContainerLocation } from 'vs/workbench/common/views';
3737
import { MenuId } from 'vs/platform/actions/common/actions';
3838
import { ViewMenuActions } from 'vs/workbench/browser/parts/views/viewMenuActions';
3939
import { IPaneComposite } from 'vs/workbench/common/panecomposite';
@@ -178,9 +178,9 @@ export class PanelPart extends CompositePart<Panel> implements IPanelService {
178178
const result: IAction[] = [];
179179
const container = this.getViewContainer(compositeId);
180180
if (container) {
181-
const viewDescriptors = this.viewDescriptorService.getViewDescriptors(container);
182-
if (viewDescriptors.allViewDescriptors.length === 1) {
183-
const viewMenuActions = this.instantiationService.createInstance(ViewMenuActions, viewDescriptors.allViewDescriptors[0].id, MenuId.ViewTitle, MenuId.ViewTitleContext);
181+
const viewContainerModel = this.viewDescriptorService.getViewContainerModel(container);
182+
if (viewContainerModel.allViewDescriptors.length === 1) {
183+
const viewMenuActions = this.instantiationService.createInstance(ViewMenuActions, viewContainerModel.allViewDescriptors[0].id, MenuId.ViewTitle, MenuId.ViewTitleContext);
184184
result.push(...viewMenuActions.getContextMenuActions());
185185
viewMenuActions.dispose();
186186
}
@@ -211,13 +211,13 @@ export class PanelPart extends CompositePart<Panel> implements IPanelService {
211211
for (const panel of panels) {
212212
this.enableCompositeActions(panel);
213213
const viewContainer = this.getViewContainer(panel.id)!;
214-
const viewDescriptors = this.viewDescriptorService.getViewDescriptors(viewContainer);
215-
this.onDidChangeActiveViews(panel, viewDescriptors, viewContainer.hideIfEmpty);
214+
const viewContainerModel = this.viewDescriptorService.getViewContainerModel(viewContainer);
215+
this.onDidChangeActiveViews(panel, viewContainerModel, viewContainer.hideIfEmpty);
216216

217217
const disposables = new DisposableStore();
218-
disposables.add(viewDescriptors.onDidChangeActiveViews(() => this.onDidChangeActiveViews(panel, viewDescriptors, viewContainer.hideIfEmpty)));
219-
disposables.add(viewDescriptors.onDidChangeViews(() => this.onDidUpdateViews(panel, viewDescriptors)));
220-
disposables.add(viewDescriptors.onDidMove(() => this.onDidUpdateViews(panel, viewDescriptors)));
218+
disposables.add(viewContainerModel.onDidChangeActiveViewDescriptors(() => this.onDidChangeActiveViews(panel, viewContainerModel, viewContainer.hideIfEmpty)));
219+
disposables.add(viewContainerModel.onDidChangeAllViewDescriptors(() => this.onDidUpdateViews(panel, viewContainerModel)));
220+
disposables.add(viewContainerModel.onDidMoveVisibleViewDescriptors(() => this.onDidUpdateViews(panel, viewContainerModel)));
221221

222222
this.panelDisposables.set(panel.id, disposables);
223223
}
@@ -242,10 +242,10 @@ export class PanelPart extends CompositePart<Panel> implements IPanelService {
242242
}
243243
}
244244

245-
private updateActivity(panel: PanelDescriptor, viewDescriptors: IViewDescriptorCollection): void {
245+
private updateActivity(panel: PanelDescriptor, viewContainerModel: IViewContainerModel): void {
246246
const activity: IActivity = {
247247
id: panel.id,
248-
name: viewDescriptors.getTitle(),
248+
name: viewContainerModel.title,
249249
keybindingId: panel.keybindingId
250250
};
251251

@@ -257,11 +257,11 @@ export class PanelPart extends CompositePart<Panel> implements IPanelService {
257257
}
258258
}
259259

260-
private onDidUpdateViews(panel: PanelDescriptor, viewDescriptors: IViewDescriptorCollection): void {
260+
private onDidUpdateViews(panel: PanelDescriptor, viewDescriptors: IViewContainerModel): void {
261261
this.updateActivity(panel, viewDescriptors);
262262
}
263263

264-
private onDidChangeActiveViews(panel: PanelDescriptor, viewDescriptors: IViewDescriptorCollection, hideIfEmpty?: boolean): void {
264+
private onDidChangeActiveViews(panel: PanelDescriptor, viewDescriptors: IViewContainerModel, hideIfEmpty?: boolean): void {
265265
if (viewDescriptors.activeViewDescriptors.length) {
266266
this.updateActivity(panel, viewDescriptors);
267267
this.compositeBar.addComposite(panel);
@@ -343,8 +343,8 @@ export class PanelPart extends CompositePart<Panel> implements IPanelService {
343343
if (panelDescriptor) {
344344
const viewContainer = this.getViewContainer(panelDescriptor.id);
345345
if (viewContainer?.hideIfEmpty) {
346-
const viewDescriptors = this.viewDescriptorService.getViewDescriptors(viewContainer);
347-
if (viewDescriptors.activeViewDescriptors.length === 0 && this.compositeBar.getPinnedComposites().length > 1) {
346+
const viewContainerModel = this.viewDescriptorService.getViewContainerModel(viewContainer);
347+
if (viewContainerModel.activeViewDescriptors.length === 0 && this.compositeBar.getPinnedComposites().length > 1) {
348348
this.hideComposite(panelDescriptor.id); // Update the composite bar by hiding
349349
}
350350
}
@@ -610,10 +610,11 @@ export class PanelPart extends CompositePart<Panel> implements IPanelService {
610610

611611
const compositeItems = this.compositeBar.getCompositeBarItems();
612612
for (const compositeItem of compositeItems) {
613-
const viewContainer = this.getViewContainer(compositeItem.id)!;
614-
const viewDescriptors = this.viewDescriptorService.getViewDescriptors(viewContainer);
615-
616-
state.push({ id: compositeItem.id, name: viewDescriptors.getTitle(), pinned: compositeItem.pinned, order: compositeItem.order, visible: compositeItem.visible });
613+
const viewContainer = this.getViewContainer(compositeItem.id);
614+
if (viewContainer) {
615+
const viewContainerModel = this.viewDescriptorService.getViewContainerModel(viewContainer);
616+
state.push({ id: compositeItem.id, name: viewContainerModel.title, pinned: compositeItem.pinned, order: compositeItem.order, visible: compositeItem.visible });
617+
}
617618
}
618619

619620
this.cachedPanelsValue = JSON.stringify(state);

0 commit comments

Comments
 (0)