提交 1ff9dc9c 编写于 作者: B Benjamin Pasero

accessibility provider for quick open

上级 97bf99b0
...@@ -11,7 +11,7 @@ import {ITree, IElementCallback} from 'vs/base/parts/tree/browser/tree'; ...@@ -11,7 +11,7 @@ import {ITree, IElementCallback} from 'vs/base/parts/tree/browser/tree';
import filters = require('vs/base/common/filters'); import filters = require('vs/base/common/filters');
import strings = require('vs/base/common/strings'); import strings = require('vs/base/common/strings');
import paths = require('vs/base/common/paths'); 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 {IActionProvider} from 'vs/base/parts/tree/browser/actionsRenderer';
import {Action, IAction, IActionRunner} from 'vs/base/common/actions'; import {Action, IAction, IActionRunner} from 'vs/base/common/actions';
import {compareAnything, compareByPrefix} from 'vs/base/common/comparers'; import {compareAnything, compareByPrefix} from 'vs/base/common/comparers';
...@@ -654,6 +654,7 @@ export class QuickOpenModel implements ...@@ -654,6 +654,7 @@ export class QuickOpenModel implements
private _renderer: IRenderer<QuickOpenEntry>; private _renderer: IRenderer<QuickOpenEntry>;
private _filter: IFilter<QuickOpenEntry>; private _filter: IFilter<QuickOpenEntry>;
private _runner: IRunner<QuickOpenEntry>; private _runner: IRunner<QuickOpenEntry>;
private _accessibilityProvider: IAccessiblityProvider<QuickOpenEntry>;
constructor(entries: QuickOpenEntry[] = [], actionProvider: IActionProvider = new NoActionProvider()) { constructor(entries: QuickOpenEntry[] = [], actionProvider: IActionProvider = new NoActionProvider()) {
this._entries = entries; this._entries = entries;
...@@ -661,6 +662,7 @@ export class QuickOpenModel implements ...@@ -661,6 +662,7 @@ export class QuickOpenModel implements
this._renderer = new Renderer(actionProvider); this._renderer = new Renderer(actionProvider);
this._filter = this; this._filter = this;
this._runner = this; this._runner = this;
this._accessibilityProvider = this;
} }
public get entries() { return this._entries; } public get entries() { return this._entries; }
...@@ -668,6 +670,7 @@ export class QuickOpenModel implements ...@@ -668,6 +670,7 @@ export class QuickOpenModel implements
public get renderer() { return this._renderer; } public get renderer() { return this._renderer; }
public get filter() { return this._filter; } public get filter() { return this._filter; }
public get runner() { return this._runner; } public get runner() { return this._runner; }
public get accessibilityProvider() { return this._accessibilityProvider; }
public set entries(entries: QuickOpenEntry[]) { public set entries(entries: QuickOpenEntry[]) {
this._entries = entries; this._entries = entries;
...@@ -712,6 +715,10 @@ export class QuickOpenModel implements ...@@ -712,6 +715,10 @@ export class QuickOpenModel implements
return entry.getLabel(); return entry.getLabel();
} }
getAriaLabel(entry: QuickOpenEntry): string {
return entry.getLabel();
}
isVisible<T>(entry: QuickOpenEntry): boolean { isVisible<T>(entry: QuickOpenEntry): boolean {
return !entry.isHidden(); return !entry.isHidden();
} }
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
import {Promise} from 'vs/base/common/winjs.base'; import {Promise} from 'vs/base/common/winjs.base';
import {isFunction} from 'vs/base/common/types'; 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'; import {IModel} from 'vs/base/parts/quickopen/common/quickOpen';
export interface IModelProvider { export interface IModelProvider {
...@@ -46,6 +46,16 @@ export class DataSource implements IDataSource { ...@@ -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 { export class Filter implements IFilter {
constructor(private modelProvider: IModelProvider) { } constructor(private modelProvider: IModelProvider) { }
......
...@@ -14,7 +14,7 @@ import types = require('vs/base/common/types'); ...@@ -14,7 +14,7 @@ import types = require('vs/base/common/types');
import errors = require('vs/base/common/errors'); import errors = require('vs/base/common/errors');
import uuid = require('vs/base/common/uuid'); import uuid = require('vs/base/common/uuid');
import {IQuickNavigateConfiguration, IAutoFocus, IContext, IModel, Mode} from 'vs/base/parts/quickopen/common/quickOpen'; 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 {Dimension, Builder, $} from 'vs/base/browser/builder';
import {ISelectionEvent, IFocusEvent, ITree, ContextMenuEvent} from 'vs/base/parts/tree/browser/tree'; import {ISelectionEvent, IFocusEvent, ITree, ContextMenuEvent} from 'vs/base/parts/tree/browser/tree';
import {InputBox, MessageType} from 'vs/base/browser/ui/inputbox/inputBox'; import {InputBox, MessageType} from 'vs/base/browser/ui/inputbox/inputBox';
...@@ -173,7 +173,8 @@ export class QuickOpenWidget implements IModelProvider { ...@@ -173,7 +173,8 @@ export class QuickOpenWidget implements IModelProvider {
dataSource: new DataSource(this), dataSource: new DataSource(this),
controller: new QuickOpenController({ clickBehavior: ClickBehavior.ON_MOUSE_UP }), controller: new QuickOpenController({ clickBehavior: ClickBehavior.ON_MOUSE_UP }),
renderer: new Renderer(this), renderer: new Renderer(this),
filter: new Filter(this) filter: new Filter(this),
accessibilityProvider: new AccessibilityProvider(this)
}, { }, {
twistiePixels: 11, twistiePixels: 11,
indentPixels: 0, indentPixels: 0,
......
...@@ -66,6 +66,10 @@ export interface IFilter<T> { ...@@ -66,6 +66,10 @@ export interface IFilter<T> {
isVisible(entry: T): boolean; isVisible(entry: T): boolean;
} }
export interface IAccessiblityProvider<T> {
getAriaLabel(entry: T): string;
}
export interface IRunner<T> { export interface IRunner<T> {
run(entry: T, mode: Mode, context: IContext): boolean; run(entry: T, mode: Mode, context: IContext): boolean;
} }
...@@ -76,4 +80,5 @@ export interface IModel<T> { ...@@ -76,4 +80,5 @@ export interface IModel<T> {
renderer: IRenderer<T>; renderer: IRenderer<T>;
runner: IRunner<T>; runner: IRunner<T>;
filter?: IFilter<T>; filter?: IFilter<T>;
accessibilityProvider?: IAccessiblityProvider<T>;
} }
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册