diff --git a/src/vs/workbench/api/browser/viewsContainersExtensionPoint.ts b/src/vs/workbench/api/browser/viewsContainersExtensionPoint.ts index 56c7e90b3f2..fc67667e524 100644 --- a/src/vs/workbench/api/browser/viewsContainersExtensionPoint.ts +++ b/src/vs/workbench/api/browser/viewsContainersExtensionPoint.ts @@ -90,7 +90,7 @@ class ViewsContainersExtensionHandler implements IWorkbenchContribution { const cssClass = `extensionViewlet-test`; const icon = URI.parse(require.toUrl('./media/test.svg')); - this.registerCustomViewlet({ id: TEST_VIEW_CONTAINER_ID, title, icon }, TEST_VIEW_CONTAINER_ORDER, cssClass); + this.registerCustomViewlet({ id: TEST_VIEW_CONTAINER_ID, title, icon }, TEST_VIEW_CONTAINER_ORDER, cssClass, void 0); } private handleAndRegisterCustomViewContainers() { @@ -143,18 +143,18 @@ class ViewsContainersExtensionHandler implements IWorkbenchContribution { containers.forEach((descriptor, index) => { const cssClass = `extensionViewlet-${descriptor.id}`; const icon = resources.joinPath(extension.extensionLocation, descriptor.icon); - this.registerCustomViewlet({ id: `workbench.view.extension.${descriptor.id}`, title: descriptor.title, icon }, TEST_VIEW_CONTAINER_ORDER + index + 1, cssClass); + this.registerCustomViewlet({ id: `workbench.view.extension.${descriptor.id}`, title: descriptor.title, icon }, TEST_VIEW_CONTAINER_ORDER + index + 1, cssClass, extension.id); }); } - private registerCustomViewlet(descriptor: IUserFriendlyViewsContainerDescriptor2, order: number, cssClass: string): void { + private registerCustomViewlet(descriptor: IUserFriendlyViewsContainerDescriptor2, order: number, cssClass: string, extensionId: string): void { const viewContainersRegistry = Registry.as(ViewContainerExtensions.ViewContainersRegistry); const viewletRegistry = Registry.as(ViewletExtensions.Viewlets); const id = descriptor.id; if (!viewletRegistry.getViewlet(id)) { - viewContainersRegistry.registerViewContainer(id); + viewContainersRegistry.registerViewContainer(id, extensionId); // Register as viewlet class CustomViewlet extends ViewContainerViewlet { diff --git a/src/vs/workbench/api/browser/viewsExtensionPoint.ts b/src/vs/workbench/api/browser/viewsExtensionPoint.ts index ddb907b9065..edc30f694e0 100644 --- a/src/vs/workbench/api/browser/viewsExtensionPoint.ts +++ b/src/vs/workbench/api/browser/viewsExtensionPoint.ts @@ -113,7 +113,7 @@ class ViewsContainersExtensionHandler implements IWorkbenchContribution { } const registeredViews = ViewsRegistry.getViews(container); const viewIds = []; - const viewDescriptors = coalesce(entry.value.map(item => { + const viewDescriptors = coalesce(entry.value.map((item, index) => { // validate if (viewIds.indexOf(item.id) !== -1) { collector.error(localize('duplicateView1', "Cannot register multiple views with same id `{0}` in the view container `{1}`", item.id, container.id)); @@ -132,7 +132,8 @@ class ViewsContainersExtensionHandler implements IWorkbenchContribution { when: ContextKeyExpr.deserialize(item.when), canToggleVisibility: true, collapsed: this.showCollapsed(container), - treeViewer: this.instantiationService.createInstance(CustomTreeViewer, item.id, container) + treeViewer: this.instantiationService.createInstance(CustomTreeViewer, item.id, container), + order: extension.description.id === container.extensionId ? index + 1 : void 0 }; viewIds.push(viewDescriptor.id); diff --git a/src/vs/workbench/common/views.ts b/src/vs/workbench/common/views.ts index b1049fab080..b0723b21310 100644 --- a/src/vs/workbench/common/views.ts +++ b/src/vs/workbench/common/views.ts @@ -42,7 +42,7 @@ export interface IViewContainersRegistry { * * @returns the registered ViewContainer. */ - registerViewContainer(id: string): ViewContainer; + registerViewContainer(id: string, extensionId?: string): ViewContainer; /** * Returns the view container with given id. @@ -54,7 +54,7 @@ export interface IViewContainersRegistry { } export class ViewContainer { - protected constructor(readonly id: string) { } + protected constructor(readonly id: string, readonly extensionId: string) { } } class ViewContainersRegistryImpl implements IViewContainersRegistry { @@ -68,11 +68,11 @@ class ViewContainersRegistryImpl implements IViewContainersRegistry { return values(this.viewContainers); } - registerViewContainer(id: string): ViewContainer { + registerViewContainer(id: string, extensionId: string): ViewContainer { if (!this.viewContainers.has(id)) { const viewContainer = new class extends ViewContainer { constructor() { - super(id); + super(id, extensionId); } }; this.viewContainers.set(id, viewContainer);