From 2cf9921ee52b6d602a48dce1d5ebdacdd37bcf6b Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Wed, 2 Oct 2019 14:30:35 -0700 Subject: [PATCH] Fixing name and description for custom editor on data uris --- .../customEditor/browser/customEditorInput.ts | 27 +++++++++++++++---- .../webview/browser/webviewEditorInput.ts | 2 +- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/vs/workbench/contrib/customEditor/browser/customEditorInput.ts b/src/vs/workbench/contrib/customEditor/browser/customEditorInput.ts index b5e56ab7456..7af6673ed7b 100644 --- a/src/vs/workbench/contrib/customEditor/browser/customEditorInput.ts +++ b/src/vs/workbench/contrib/customEditor/browser/customEditorInput.ts @@ -7,7 +7,7 @@ import { memoize } from 'vs/base/common/decorators'; import { Emitter } from 'vs/base/common/event'; import { UnownedDisposable } from 'vs/base/common/lifecycle'; import { basename } from 'vs/base/common/path'; -import { isEqual } from 'vs/base/common/resources'; +import { isEqual, DataUri } from 'vs/base/common/resources'; import { URI } from 'vs/base/common/uri'; import { WebviewContentState } from 'vs/editor/common/modes'; import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; @@ -18,12 +18,12 @@ import { WebviewEditorOverlay } from 'vs/workbench/contrib/webview/browser/webvi import { WebviewInput } from 'vs/workbench/contrib/webview/browser/webviewEditorInput'; import { IWebviewEditorService } from 'vs/workbench/contrib/webview/browser/webviewEditorService'; import { promptSave } from 'vs/workbench/services/textfile/browser/textFileService'; +import { Schemas } from 'vs/base/common/network'; export class CustomFileEditorInput extends WebviewInput { public static typeId = 'workbench.editors.webviewEditor'; - private name?: string; private _hasResolved = false; private readonly _editorResource: URI; private _state = WebviewContentState.Readonly; @@ -49,11 +49,28 @@ export class CustomFileEditorInput extends WebviewInput { return this._editorResource; } + @memoize getName(): string { - if (!this.name) { - this.name = basename(this.labelService.getUriLabel(this.getResource())); + if (this.getResource().scheme === Schemas.data) { + const metadata = DataUri.parseMetaData(this.getResource()); + const label = metadata.get(DataUri.META_DATA_LABEL); + if (typeof label === 'string') { + return label; + } + } + return basename(this.labelService.getUriLabel(this.getResource())); + } + + @memoize + getDescription(): string | undefined { + if (this.getResource().scheme === Schemas.data) { + const metadata = DataUri.parseMetaData(this.getResource()); + const description = metadata.get(DataUri.META_DATA_DESCRIPTION); + if (typeof description === 'string') { + return description; + } } - return this.name; + return super.getDescription(); } matches(other: IEditorInput): boolean { diff --git a/src/vs/workbench/contrib/webview/browser/webviewEditorInput.ts b/src/vs/workbench/contrib/webview/browser/webviewEditorInput.ts index ee87e913ab7..4980730a177 100644 --- a/src/vs/workbench/contrib/webview/browser/webviewEditorInput.ts +++ b/src/vs/workbench/contrib/webview/browser/webviewEditorInput.ts @@ -94,7 +94,7 @@ export class WebviewInput extends EditorInput { return this.getName(); } - public getDescription() { + public getDescription(): string | undefined { return undefined; } -- GitLab