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

accessibility provider for quick open

上级 97bf99b0
......@@ -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<QuickOpenEntry>;
private _filter: IFilter<QuickOpenEntry>;
private _runner: IRunner<QuickOpenEntry>;
private _accessibilityProvider: IAccessiblityProvider<QuickOpenEntry>;
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<T>(entry: QuickOpenEntry): boolean {
return !entry.isHidden();
}
......
......@@ -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) { }
......
......@@ -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,
......
......@@ -66,6 +66,10 @@ export interface IFilter<T> {
isVisible(entry: T): boolean;
}
export interface IAccessiblityProvider<T> {
getAriaLabel(entry: T): string;
}
export interface IRunner<T> {
run(entry: T, mode: Mode, context: IContext): boolean;
}
......@@ -76,4 +80,5 @@ export interface IModel<T> {
renderer: IRenderer<T>;
runner: IRunner<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.
先完成此消息的编辑!
想要评论请 注册