Files
vscode/src/vs/workbench/services/preferences/common/preferencesEditorInput.ts
T
2020-01-26 09:29:34 +01:00

131 lines
4.2 KiB
TypeScript

/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { OS } from 'vs/base/common/platform';
import { URI } from 'vs/base/common/uri';
import { ITextModelService } from 'vs/editor/common/services/resolverService';
import * as nls from 'vs/nls';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { EditorInput, SideBySideEditorInput, Verbosity } from 'vs/workbench/common/editor';
import { ResourceEditorInput } from 'vs/workbench/common/editor/resourceEditorInput';
import { KeybindingsEditorModel } from 'vs/workbench/services/preferences/common/keybindingsEditorModel';
import { IPreferencesService } from 'vs/workbench/services/preferences/common/preferences';
import { Settings2EditorModel } from 'vs/workbench/services/preferences/common/preferencesModels';
import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles';
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService';
export class PreferencesEditorInput extends SideBySideEditorInput {
static readonly ID: string = 'workbench.editorinputs.preferencesEditorInput';
getTypeId(): string {
return PreferencesEditorInput.ID;
}
getTitle(verbosity: Verbosity): string {
return this.master.getTitle(verbosity);
}
}
export class DefaultPreferencesEditorInput extends ResourceEditorInput {
static readonly ID = 'workbench.editorinputs.defaultpreferences';
constructor(
defaultSettingsResource: URI,
@ITextModelService textModelResolverService: ITextModelService,
@ITextFileService textFileService: ITextFileService,
@IEditorService editorService: IEditorService,
@IEditorGroupsService editorGroupService: IEditorGroupsService
) {
super(nls.localize('settingsEditorName', "Default Settings"), '', defaultSettingsResource, undefined, textModelResolverService, textFileService, editorService, editorGroupService);
}
getTypeId(): string {
return DefaultPreferencesEditorInput.ID;
}
matches(other: unknown): boolean {
if (other instanceof DefaultPreferencesEditorInput) {
return true;
}
if (!super.matches(other)) {
return false;
}
return true;
}
}
export interface IKeybindingsEditorSearchOptions {
searchValue: string;
recordKeybindings: boolean;
sortByPrecedence: boolean;
}
export class KeybindingsEditorInput extends EditorInput {
static readonly ID: string = 'workbench.input.keybindings';
readonly keybindingsModel: KeybindingsEditorModel;
searchOptions: IKeybindingsEditorSearchOptions | null = null;
constructor(@IInstantiationService instantiationService: IInstantiationService) {
super();
this.keybindingsModel = instantiationService.createInstance(KeybindingsEditorModel, OS);
}
getTypeId(): string {
return KeybindingsEditorInput.ID;
}
getName(): string {
return nls.localize('keybindingsInputName', "Keyboard Shortcuts");
}
resolve(): Promise<KeybindingsEditorModel> {
return Promise.resolve(this.keybindingsModel);
}
matches(otherInput: unknown): boolean {
return otherInput instanceof KeybindingsEditorInput;
}
}
export class SettingsEditor2Input extends EditorInput {
static readonly ID: string = 'workbench.input.settings2';
private readonly _settingsModel: Settings2EditorModel;
private resource: URI = URI.from({
scheme: 'vscode-settings',
path: `settingseditor`
});
constructor(
@IPreferencesService _preferencesService: IPreferencesService,
) {
super();
this._settingsModel = _preferencesService.createSettings2EditorModel();
}
matches(otherInput: unknown): boolean {
return otherInput instanceof SettingsEditor2Input;
}
getTypeId(): string {
return SettingsEditor2Input.ID;
}
getName(): string {
return nls.localize('settingsEditor2InputName', "Settings");
}
resolve(): Promise<Settings2EditorModel> {
return Promise.resolve(this._settingsModel);
}
getResource(): URI {
return this.resource;
}
}