diff --git a/src/vs/platform/extensionManagement/common/extensionManagement.ts b/src/vs/platform/extensionManagement/common/extensionManagement.ts index 1f2012831a3655c46d18e9f70275186a75815061..4002234ed86412103f8f8d76d898d12ac33b2b49 100644 --- a/src/vs/platform/extensionManagement/common/extensionManagement.ts +++ b/src/vs/platform/extensionManagement/common/extensionManagement.ts @@ -76,6 +76,11 @@ export interface ITheme { label: string; } +export interface IViewContainer { + id: string; + title: string; +} + export interface IView { id: string; name: string; @@ -99,6 +104,7 @@ export interface IExtensionContributions { snippets?: ISnippet[]; themes?: ITheme[]; iconThemes?: ITheme[]; + viewsContainers?: { [location: string]: IViewContainer[] }; views?: { [location: string]: IView[] }; colors?: IColor[]; localizations?: ILocalization[]; diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts index 14f0d4d1c89f97b82cce80ac5d62efd5e92e5681..18764fcd07946ce01c4f61ce8e59b22bd3b51a1f 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts @@ -23,7 +23,7 @@ import { BaseEditor } from 'vs/workbench/browser/parts/editor/baseEditor'; import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; -import { IExtensionManifest, IKeyBinding, IView, IExtensionTipsService, LocalExtensionType } from 'vs/platform/extensionManagement/common/extensionManagement'; +import { IExtensionManifest, IKeyBinding, IView, IExtensionTipsService, LocalExtensionType, IViewContainer } from 'vs/platform/extensionManagement/common/extensionManagement'; import { ResolvedKeybinding, KeyMod, KeyCode } from 'vs/base/common/keyCodes'; import { ExtensionsInput } from 'vs/workbench/parts/extensions/common/extensionsInput'; import { IExtensionsWorkbenchService, IExtensionsViewlet, VIEWLET_ID, IExtension, IExtensionDependencies } from 'vs/workbench/parts/extensions/common/extensions'; @@ -484,6 +484,7 @@ export class ExtensionEditor extends BaseEditor { this.renderColors(content, manifest, layout), this.renderJSONValidation(content, manifest, layout), this.renderDebuggers(content, manifest, layout), + this.renderViewContainers(content, manifest, layout), this.renderViews(content, manifest, layout), this.renderLocalizations(content, manifest, layout) ]; @@ -614,6 +615,32 @@ export class ExtensionEditor extends BaseEditor { return true; } + private renderViewContainers(container: HTMLElement, manifest: IExtensionManifest, onDetailsToggle: Function): boolean { + const contributes = manifest.contributes; + const contrib = contributes && contributes.viewsContainers || {}; + + let viewContainers = <{ id: string, title: string, location: string }[]>Object.keys(contrib).reduce((result, location) => { + let viewContainersForLocation: IViewContainer[] = contrib[location]; + result.push(...viewContainersForLocation.map(viewContainer => ({ ...viewContainer, location }))); + return result; + }, []); + + if (!viewContainers.length) { + return false; + } + + const details = $('details', { open: true, ontoggle: onDetailsToggle }, + $('summary', null, localize('viewContainers', "View Containers ({0})", viewContainers.length)), + $('table', null, + $('tr', null, $('th', null, localize('view container id', "ID")), $('th', null, localize('view container title', "Title")), $('th', null, localize('view container location', "Where"))), + ...viewContainers.map(viewContainer => $('tr', null, $('td', null, viewContainer.id), $('td', null, viewContainer.title), $('td', null, viewContainer.location))) + ) + ); + + append(container, details); + return true; + } + private renderViews(container: HTMLElement, manifest: IExtensionManifest, onDetailsToggle: Function): boolean { const contributes = manifest.contributes; const contrib = contributes && contributes.views || {};