Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/extensions/common/extensionsInput.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { Schemas } from '../../../../base/common/network.js';
7
import { URI } from '../../../../base/common/uri.js';
8
import { localize } from '../../../../nls.js';
9
import { EditorInputCapabilities, IUntypedEditorInput } from '../../../common/editor.js';
10
import { EditorInput } from '../../../common/editor/editorInput.js';
11
import { ExtensionEditorTab, IExtension } from './extensions.js';
12
import { areSameExtensions } from '../../../../platform/extensionManagement/common/extensionManagementUtil.js';
13
import { join } from '../../../../base/common/path.js';
14
import { IEditorOptions } from '../../../../platform/editor/common/editor.js';
15
import { ThemeIcon } from '../../../../base/common/themables.js';
16
import { Codicon } from '../../../../base/common/codicons.js';
17
import { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';
18
19
const ExtensionEditorIcon = registerIcon('extensions-editor-label-icon', Codicon.extensions, localize('extensionsEditorLabelIcon', 'Icon of the extensions editor label.'));
20
21
export interface IExtensionEditorOptions extends IEditorOptions {
22
showPreReleaseVersion?: boolean;
23
tab?: ExtensionEditorTab;
24
feature?: string;
25
sideByside?: boolean;
26
}
27
28
export class ExtensionsInput extends EditorInput {
29
30
static readonly ID = 'workbench.extensions.input2';
31
32
override get typeId(): string {
33
return ExtensionsInput.ID;
34
}
35
36
override get capabilities(): EditorInputCapabilities {
37
return EditorInputCapabilities.Readonly | EditorInputCapabilities.Singleton;
38
}
39
40
override get resource() {
41
return URI.from({
42
scheme: Schemas.extension,
43
path: join(this._extension.identifier.id, 'extension')
44
});
45
}
46
47
constructor(private _extension: IExtension) {
48
super();
49
}
50
51
get extension(): IExtension { return this._extension; }
52
53
override getName(): string {
54
return localize('extensionsInputName', "Extension: {0}", this._extension.displayName);
55
}
56
57
override getIcon(): ThemeIcon | undefined {
58
return ExtensionEditorIcon;
59
}
60
61
override matches(other: EditorInput | IUntypedEditorInput): boolean {
62
if (super.matches(other)) {
63
return true;
64
}
65
66
return other instanceof ExtensionsInput && areSameExtensions(this._extension.identifier, other._extension.identifier);
67
}
68
}
69
70