From 1ff9dc9c9b4c20189d21164c8e98d0338cf8aa62 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Mon, 25 Jan 2016 18:50:05 +0100 Subject: [PATCH] accessibility provider for quick open --- .../base/parts/quickopen/browser/quickOpenModel.ts | 9 ++++++++- .../base/parts/quickopen/browser/quickOpenViewer.ts | 12 +++++++++++- .../base/parts/quickopen/browser/quickOpenWidget.ts | 5 +++-- src/vs/base/parts/quickopen/common/quickOpen.ts | 5 +++++ 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/vs/base/parts/quickopen/browser/quickOpenModel.ts b/src/vs/base/parts/quickopen/browser/quickOpenModel.ts index 88a53b855fb..e5f6c412d5f 100644 --- a/src/vs/base/parts/quickopen/browser/quickOpenModel.ts +++ b/src/vs/base/parts/quickopen/browser/quickOpenModel.ts @@ -11,7 +11,7 @@ import {ITree, IElementCallback} from 'vs/base/parts/tree/browser/tree'; import filters = require('vs/base/common/filters'); import strings = require('vs/base/common/strings'); import paths = require('vs/base/common/paths'); -import {IQuickNavigateConfiguration, IModel, IDataSource, IFilter, IRenderer, IRunner, Mode} from 'vs/base/parts/quickopen/common/quickOpen'; +import {IQuickNavigateConfiguration, IModel, IDataSource, IFilter, IAccessiblityProvider, IRenderer, IRunner, Mode} from 'vs/base/parts/quickopen/common/quickOpen'; import {IActionProvider} from 'vs/base/parts/tree/browser/actionsRenderer'; import {Action, IAction, IActionRunner} from 'vs/base/common/actions'; import {compareAnything, compareByPrefix} from 'vs/base/common/comparers'; @@ -654,6 +654,7 @@ export class QuickOpenModel implements private _renderer: IRenderer; private _filter: IFilter; private _runner: IRunner; + private _accessibilityProvider: IAccessiblityProvider; constructor(entries: QuickOpenEntry[] = [], actionProvider: IActionProvider = new NoActionProvider()) { this._entries = entries; @@ -661,6 +662,7 @@ export class QuickOpenModel implements this._renderer = new Renderer(actionProvider); this._filter = this; this._runner = this; + this._accessibilityProvider = this; } public get entries() { return this._entries; } @@ -668,6 +670,7 @@ export class QuickOpenModel implements public get renderer() { return this._renderer; } public get filter() { return this._filter; } public get runner() { return this._runner; } + public get accessibilityProvider() { return this._accessibilityProvider; } public set entries(entries: QuickOpenEntry[]) { this._entries = entries; @@ -712,6 +715,10 @@ export class QuickOpenModel implements return entry.getLabel(); } + getAriaLabel(entry: QuickOpenEntry): string { + return entry.getLabel(); + } + isVisible(entry: QuickOpenEntry): boolean { return !entry.isHidden(); } diff --git a/src/vs/base/parts/quickopen/browser/quickOpenViewer.ts b/src/vs/base/parts/quickopen/browser/quickOpenViewer.ts index a8111627701..40e8ed1791f 100644 --- a/src/vs/base/parts/quickopen/browser/quickOpenViewer.ts +++ b/src/vs/base/parts/quickopen/browser/quickOpenViewer.ts @@ -5,7 +5,7 @@ import {Promise} from 'vs/base/common/winjs.base'; import {isFunction} from 'vs/base/common/types'; -import {ITree, IRenderer, IFilter, IDataSource} from 'vs/base/parts/tree/browser/tree'; +import {ITree, IRenderer, IFilter, IDataSource, IAccessibilityProvider} from 'vs/base/parts/tree/browser/tree'; import {IModel} from 'vs/base/parts/quickopen/common/quickOpen'; export interface IModelProvider { @@ -46,6 +46,16 @@ export class DataSource implements IDataSource { } } +export class AccessibilityProvider implements IAccessibilityProvider { + constructor(private modelProvider: IModelProvider) { } + + public getAriaLabel(tree: ITree, element: any): string { + const model = this.modelProvider.getModel(); + + return model.accessibilityProvider && model.accessibilityProvider.getAriaLabel(element); + } +} + export class Filter implements IFilter { constructor(private modelProvider: IModelProvider) { } diff --git a/src/vs/base/parts/quickopen/browser/quickOpenWidget.ts b/src/vs/base/parts/quickopen/browser/quickOpenWidget.ts index efb392f6343..fd4b8c95979 100644 --- a/src/vs/base/parts/quickopen/browser/quickOpenWidget.ts +++ b/src/vs/base/parts/quickopen/browser/quickOpenWidget.ts @@ -14,7 +14,7 @@ import types = require('vs/base/common/types'); import errors = require('vs/base/common/errors'); import uuid = require('vs/base/common/uuid'); import {IQuickNavigateConfiguration, IAutoFocus, IContext, IModel, Mode} from 'vs/base/parts/quickopen/common/quickOpen'; -import {Filter, Renderer, DataSource, IModelProvider} from 'vs/base/parts/quickopen/browser/quickOpenViewer'; +import {Filter, Renderer, DataSource, IModelProvider, AccessibilityProvider} from 'vs/base/parts/quickopen/browser/quickOpenViewer'; import {Dimension, Builder, $} from 'vs/base/browser/builder'; import {ISelectionEvent, IFocusEvent, ITree, ContextMenuEvent} from 'vs/base/parts/tree/browser/tree'; import {InputBox, MessageType} from 'vs/base/browser/ui/inputbox/inputBox'; @@ -173,7 +173,8 @@ export class QuickOpenWidget implements IModelProvider { dataSource: new DataSource(this), controller: new QuickOpenController({ clickBehavior: ClickBehavior.ON_MOUSE_UP }), renderer: new Renderer(this), - filter: new Filter(this) + filter: new Filter(this), + accessibilityProvider: new AccessibilityProvider(this) }, { twistiePixels: 11, indentPixels: 0, diff --git a/src/vs/base/parts/quickopen/common/quickOpen.ts b/src/vs/base/parts/quickopen/common/quickOpen.ts index ece1b8c7dc7..1b83cc7580e 100644 --- a/src/vs/base/parts/quickopen/common/quickOpen.ts +++ b/src/vs/base/parts/quickopen/common/quickOpen.ts @@ -66,6 +66,10 @@ export interface IFilter { isVisible(entry: T): boolean; } +export interface IAccessiblityProvider { + getAriaLabel(entry: T): string; +} + export interface IRunner { run(entry: T, mode: Mode, context: IContext): boolean; } @@ -76,4 +80,5 @@ export interface IModel { renderer: IRenderer; runner: IRunner; filter?: IFilter; + accessibilityProvider?: IAccessiblityProvider; } \ No newline at end of file -- GitLab