From 9c94be39a9f180e6879a7e9b473c15344d1e8aed Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Sun, 19 Jun 2016 09:26:19 +0200 Subject: [PATCH] wip: adopt IExtension --- .../extensions/common/extensionsInput.ts | 21 ++++---- .../electron-browser/extensionEditor.ts | 13 +++-- .../electron-browser/extensionsList.ts | 53 ++++--------------- .../electron-browser/extensionsModel.ts | 41 ++++++++------ .../electron-browser/extensionsViewlet.ts | 13 +++-- 5 files changed, 56 insertions(+), 85 deletions(-) diff --git a/src/vs/workbench/parts/extensions/common/extensionsInput.ts b/src/vs/workbench/parts/extensions/common/extensionsInput.ts index 299b579dc16..1bd0a1eee3e 100644 --- a/src/vs/workbench/parts/extensions/common/extensionsInput.ts +++ b/src/vs/workbench/parts/extensions/common/extensionsInput.ts @@ -7,14 +7,16 @@ import { TPromise } from 'vs/base/common/winjs.base'; import { EditorInput } from 'vs/workbench/common/editor'; -import { ILocalExtension, IGalleryExtension } from 'vs/platform/extensionManagement/common/extensionManagement'; + +// TODO@joao: layer breaker +import { IExtension } from '../electron-browser/extensionsModel'; export class ExtensionsInput extends EditorInput { static get ID() { return 'workbench.extensions.input2'; } - get extension(): ILocalExtension | IGalleryExtension { return this._extension; } + get extension(): IExtension { return this._extension; } - constructor(private _extension: ILocalExtension | IGalleryExtension) { + constructor(private _extension: IExtension) { super(); } @@ -23,14 +25,7 @@ export class ExtensionsInput extends EditorInput { } getName(): string { - const local = this.extension as ILocalExtension; - const gallery = this.extension as IGalleryExtension; - - if (local.path) { - return local.manifest.displayName || local.manifest.name; - } else { - return gallery.displayName || gallery.name; - } + return this.extension.displayName; } matches(other: any): boolean { @@ -39,7 +34,9 @@ export class ExtensionsInput extends EditorInput { } const otherExtensionInput = other as ExtensionsInput; - return this.extension.id === otherExtensionInput.extension.id; + + // TODO@joao is this correct? + return this.extension === otherExtensionInput.extension; } resolve(refresh?: boolean): TPromise { diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts index dbc56338e84..aa0f98a87f7 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts @@ -15,7 +15,8 @@ import { append, emmet as $, addClass, removeClass } from 'vs/base/browser/dom'; import { BaseEditor } from 'vs/workbench/browser/parts/editor/baseEditor'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; -import { ILocalExtension, IGalleryExtension, IExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionManagement'; +// import { IExtension } from './extensionsModel'; +import { IExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionManagement'; import { ExtensionsInput } from '../common/extensionsInput'; import { text as downloadText, IRequestOptions } from 'vs/base/node/request'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; @@ -62,15 +63,13 @@ export class ExtensionEditor extends BaseEditor { this.body.innerHTML = ''; let promise = TPromise.as(null); - const extension = input.extension; - const local = extension as ILocalExtension; - const gallery = extension as IGalleryExtension; - - if (local.path) { + // const extension = input.extension; + if (1 === 1/*local.path*/) { + // TODO@joao } else { - const [version] = gallery.versions; + const version = null/*gallery.versions[0]*/; const headers = version.downloadHeaders; addClass(this.body, 'loading'); diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionsList.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionsList.ts index 52ad5dd0575..3a063a47391 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionsList.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionsList.ts @@ -9,10 +9,10 @@ import { append, emmet as $, addClass, removeClass } from 'vs/base/browser/dom'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IDelegate } from 'vs/base/browser/ui/list/list'; import { IPagedRenderer } from 'vs/base/browser/ui/list/listPaging'; -import { ILocalExtension, IGalleryExtension } from 'vs/platform/extensionManagement/common/extensionManagement'; +import { IExtension } from './extensionsModel'; export interface ITemplateData { - extension: ILocalExtension | IGalleryExtension; + extension: IExtension; element: HTMLElement; icon: HTMLImageElement; name: HTMLElement; @@ -21,12 +21,12 @@ export interface ITemplateData { description: HTMLElement; } -export class Delegate implements IDelegate { +export class Delegate implements IDelegate { getHeight() { return 62; } getTemplateId() { return 'extension'; } } -export class Renderer implements IPagedRenderer { +export class Renderer implements IPagedRenderer { private _templates: ITemplateData[]; get templates(): ITemplateData[] { return this._templates; } @@ -64,49 +64,14 @@ export class Renderer implements IPagedRenderer { + return this.extensionService.getInstalled() + .then(result => result.map(local => new Extension(local))); } queryGallery(options: IQueryOptions = {}): TPromise> { - throw new Error('not implemented'); + return this.galleryService.query(options) + .then(result => mapPager(result, gallery => new Extension(null, gallery))); } getState(extension: IExtension): ExtensionState { diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts index 0449c67f877..b4e2208016a 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts @@ -18,7 +18,8 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { PagedList } from 'vs/base/browser/ui/list/listPaging'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { Delegate, Renderer } from './extensionsList'; -import { IExtensionManagementService, IExtensionGalleryService, ILocalExtension, IGalleryExtension } from 'vs/platform/extensionManagement/common/extensionManagement'; +import { ExtensionsModel, IExtension } from './extensionsModel'; +import { IExtensionManagementService, IExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionManagement'; import { ExtensionsInput } from '../common/extensionsInput'; import { IProgressService } from 'vs/platform/progress/common/progress'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; @@ -32,7 +33,8 @@ export class ExtensionsViewlet extends Viewlet { private root: HTMLElement; private searchBox: HTMLInputElement; private extensionsBox: HTMLElement; - private list: PagedList; + private model: ExtensionsModel; + private list: PagedList; constructor( @ITelemetryService telemetryService: ITelemetryService, @@ -45,6 +47,7 @@ export class ExtensionsViewlet extends Viewlet { super(ExtensionsViewlet.ID, telemetryService); this.searchDelayer = new ThrottledDelayer(500); this.disposables = []; + this.model = instantiationService.createInstance(ExtensionsModel); } create(parent: Builder): TPromise { @@ -100,13 +103,13 @@ export class ExtensionsViewlet extends Viewlet { private doSearch(text: string = ''): TPromise { const progressRunner = this.progressService.show(true); - let promise: TPromise>; + let promise: TPromise>; if (text) { - promise = this.galleryService.query({ text }) + promise = this.model.queryGallery({ text }) .then(result => new PagedModel(result)); } else { - promise = this.extensionService.getInstalled() + promise = this.model.getInstalled() .then(result => new SinglePagePagedModel(result)); } -- GitLab