mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-24 18:49:00 +01:00
move ResourceContextKey, #15558
This commit is contained in:
50
src/vs/workbench/common/resourceContextKey.ts
Normal file
50
src/vs/workbench/common/resourceContextKey.ts
Normal file
@@ -0,0 +1,50 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
'use strict';
|
||||
|
||||
import URI from 'vs/base/common/uri';
|
||||
import { basename } from 'vs/base/common/paths';
|
||||
import { RawContextKey, IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { IModeService } from 'vs/editor/common/services/modeService';
|
||||
|
||||
export class ResourceContextKey implements IContextKey<URI> {
|
||||
|
||||
static Scheme = new RawContextKey<string>('resourceScheme', undefined);
|
||||
static Filename = new RawContextKey<string>('resourceFilename', undefined);
|
||||
static LangId = new RawContextKey<string>('resourceLangId', undefined);
|
||||
static Resource = new RawContextKey<URI>('resource', undefined);
|
||||
|
||||
private _resourceKey: IContextKey<URI>;
|
||||
private _schemeKey: IContextKey<string>;
|
||||
private _filenameKey: IContextKey<string>;
|
||||
private _langIdKey: IContextKey<string>;
|
||||
|
||||
constructor(
|
||||
@IContextKeyService contextKeyService: IContextKeyService,
|
||||
@IModeService private _modeService: IModeService
|
||||
) {
|
||||
this._schemeKey = ResourceContextKey.Scheme.bindTo(contextKeyService);
|
||||
this._filenameKey = ResourceContextKey.Filename.bindTo(contextKeyService);
|
||||
this._langIdKey = ResourceContextKey.LangId.bindTo(contextKeyService);
|
||||
this._resourceKey = ResourceContextKey.Resource.bindTo(contextKeyService);
|
||||
}
|
||||
|
||||
set(value: URI) {
|
||||
this._resourceKey.set(value);
|
||||
this._schemeKey.set(value && value.scheme);
|
||||
this._filenameKey.set(value && basename(value.fsPath));
|
||||
this._langIdKey.set(value && this._modeService.getModeIdByFilenameOrFirstLine(value.fsPath));
|
||||
}
|
||||
|
||||
reset(): void {
|
||||
this._schemeKey.reset();
|
||||
this._langIdKey.reset();
|
||||
this._resourceKey.reset();
|
||||
}
|
||||
|
||||
public get(): URI {
|
||||
return this._resourceKey.get();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user