mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-26 23:42:44 -05:00
Pull common parts into abstract a11y service
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { Disposable } from 'vs/base/common/lifecycle';
|
||||
import { IAccessibilityService, AccessibilitySupport, CONTEXT_ACCESSIBILITY_MODE_ENABLED } from 'vs/platform/accessibility/common/accessibility';
|
||||
import { Event, Emitter } from 'vs/base/common/event';
|
||||
import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
|
||||
export abstract class AbstractAccessibilityService extends Disposable implements IAccessibilityService {
|
||||
_serviceBrand: any;
|
||||
|
||||
private _accessibilityModeEnabledContext: IContextKey<boolean>;
|
||||
protected readonly _onDidChangeAccessibilitySupport = new Emitter<void>();
|
||||
readonly onDidChangeAccessibilitySupport: Event<void> = this._onDidChangeAccessibilitySupport.event;
|
||||
|
||||
constructor(
|
||||
@IContextKeyService private readonly _contextKeyService: IContextKeyService,
|
||||
@IConfigurationService private readonly _configurationService: IConfigurationService,
|
||||
) {
|
||||
super();
|
||||
this._accessibilityModeEnabledContext = CONTEXT_ACCESSIBILITY_MODE_ENABLED.bindTo(this._contextKeyService);
|
||||
this._register(this._configurationService.onDidChangeConfiguration(e => {
|
||||
if (e.affectsConfiguration('editor.accessibilitySupport')) {
|
||||
this._updateContextKey();
|
||||
}
|
||||
}));
|
||||
this._updateContextKey();
|
||||
this.onDidChangeAccessibilitySupport(() => this._updateContextKey());
|
||||
}
|
||||
|
||||
abstract alwaysUnderlineAccessKeys(): Promise<boolean>;
|
||||
abstract getAccessibilitySupport(): AccessibilitySupport;
|
||||
abstract setAccessibilitySupport(accessibilitySupport: AccessibilitySupport): void;
|
||||
|
||||
private _updateContextKey(): void {
|
||||
const detected = this.getAccessibilitySupport() === AccessibilitySupport.Enabled;
|
||||
const config = this._configurationService.getValue('editor.accessibilitySupport');
|
||||
this._accessibilityModeEnabledContext.set(config === 'on' || (config === 'auto' && detected));
|
||||
}
|
||||
}
|
||||
@@ -3,33 +3,22 @@
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { Emitter, Event } from 'vs/base/common/event';
|
||||
import { IAccessibilityService, AccessibilitySupport, CONTEXT_ACCESSIBILITY_MODE_ENABLED } from 'vs/platform/accessibility/common/accessibility';
|
||||
import { Disposable } from 'vs/base/common/lifecycle';
|
||||
import { IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { IAccessibilityService, AccessibilitySupport } from 'vs/platform/accessibility/common/accessibility';
|
||||
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
import { AbstractAccessibilityService } from 'vs/platform/accessibility/common/abstractAccessibilityService';
|
||||
|
||||
export class BrowserAccessibilityService extends Disposable implements IAccessibilityService {
|
||||
export class BrowserAccessibilityService extends AbstractAccessibilityService implements IAccessibilityService {
|
||||
|
||||
_serviceBrand: any;
|
||||
|
||||
private _accessibilitySupport = AccessibilitySupport.Unknown;
|
||||
private _accessibilityModeEnabledContext: IContextKey<boolean>;
|
||||
private readonly _onDidChangeAccessibilitySupport = new Emitter<void>();
|
||||
readonly onDidChangeAccessibilitySupport: Event<void> = this._onDidChangeAccessibilitySupport.event;
|
||||
|
||||
constructor(
|
||||
@IContextKeyService private readonly _contextKeyService: IContextKeyService,
|
||||
@IConfigurationService private readonly _configurationService: IConfigurationService,
|
||||
@IContextKeyService readonly contextKeyService: IContextKeyService,
|
||||
@IConfigurationService readonly configurationService: IConfigurationService,
|
||||
) {
|
||||
super();
|
||||
this._accessibilityModeEnabledContext = CONTEXT_ACCESSIBILITY_MODE_ENABLED.bindTo(this._contextKeyService);
|
||||
this._register(this._configurationService.onDidChangeConfiguration(e => {
|
||||
if (e.affectsConfiguration('editor.accessibilitySupport')) {
|
||||
this._updateContextKey();
|
||||
}
|
||||
}));
|
||||
this._updateContextKey();
|
||||
super(contextKeyService, configurationService);
|
||||
}
|
||||
|
||||
alwaysUnderlineAccessKeys(): Promise<boolean> {
|
||||
@@ -43,16 +32,9 @@ export class BrowserAccessibilityService extends Disposable implements IAccessib
|
||||
|
||||
this._accessibilitySupport = accessibilitySupport;
|
||||
this._onDidChangeAccessibilitySupport.fire();
|
||||
this._updateContextKey();
|
||||
}
|
||||
|
||||
getAccessibilitySupport(): AccessibilitySupport {
|
||||
return this._accessibilitySupport;
|
||||
}
|
||||
|
||||
private _updateContextKey(): void {
|
||||
const detected = this.getAccessibilitySupport() === AccessibilitySupport.Enabled;
|
||||
const config = this._configurationService.getValue('editor.accessibilitySupport');
|
||||
this._accessibilityModeEnabledContext.set(config === 'on' || (config === 'auto' && detected));
|
||||
}
|
||||
}
|
||||
@@ -3,35 +3,24 @@
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { IAccessibilityService, AccessibilitySupport, CONTEXT_ACCESSIBILITY_MODE_ENABLED } from 'vs/platform/accessibility/common/accessibility';
|
||||
import { IAccessibilityService, AccessibilitySupport } from 'vs/platform/accessibility/common/accessibility';
|
||||
import { isWindows } from 'vs/base/common/platform';
|
||||
import { Emitter, Event } from 'vs/base/common/event';
|
||||
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
|
||||
import { IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
import { Disposable } from 'vs/base/common/lifecycle';
|
||||
import { AbstractAccessibilityService } from 'vs/platform/accessibility/common/abstractAccessibilityService';
|
||||
|
||||
export class AccessibilityService extends Disposable implements IAccessibilityService {
|
||||
export class AccessibilityService extends AbstractAccessibilityService implements IAccessibilityService {
|
||||
_serviceBrand: any;
|
||||
|
||||
private _accessibilitySupport = AccessibilitySupport.Unknown;
|
||||
private _accessibilityModeEnabledContext: IContextKey<boolean>;
|
||||
private readonly _onDidChangeAccessibilitySupport = new Emitter<void>();
|
||||
readonly onDidChangeAccessibilitySupport: Event<void> = this._onDidChangeAccessibilitySupport.event;
|
||||
|
||||
constructor(
|
||||
@IWorkbenchEnvironmentService private readonly environmentService: IWorkbenchEnvironmentService,
|
||||
@IContextKeyService private readonly _contextKeyService: IContextKeyService,
|
||||
@IConfigurationService private readonly _configurationService: IConfigurationService
|
||||
@IContextKeyService readonly contextKeyService: IContextKeyService,
|
||||
@IConfigurationService readonly configurationService: IConfigurationService
|
||||
) {
|
||||
super();
|
||||
this._accessibilityModeEnabledContext = CONTEXT_ACCESSIBILITY_MODE_ENABLED.bindTo(this._contextKeyService);
|
||||
this._register(this._configurationService.onDidChangeConfiguration(e => {
|
||||
if (e.affectsConfiguration('editor.accessibilitySupport')) {
|
||||
this._updateContextKey();
|
||||
}
|
||||
}));
|
||||
this._updateContextKey();
|
||||
super(contextKeyService, configurationService);
|
||||
}
|
||||
|
||||
alwaysUnderlineAccessKeys(): Promise<boolean> {
|
||||
@@ -70,10 +59,4 @@ export class AccessibilityService extends Disposable implements IAccessibilitySe
|
||||
|
||||
return this._accessibilitySupport;
|
||||
}
|
||||
|
||||
private _updateContextKey(): void {
|
||||
const detected = this.getAccessibilitySupport() === AccessibilitySupport.Enabled;
|
||||
const config = this._configurationService.getValue('editor.accessibilitySupport');
|
||||
this._accessibilityModeEnabledContext.set(config === 'on' || (config === 'auto' && detected));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user