提交 41d89486 编写于 作者: I isidor

breakpoitnsView: accessibilityProvider for list

#92342
上级 094d4bb3
......@@ -37,6 +37,7 @@ import { TextEditorSelectionRevealType } from 'vs/platform/editor/common/editor'
import { IOpenerService } from 'vs/platform/opener/common/opener';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { Orientation } from 'vs/base/browser/ui/splitview/splitview';
import { IAccessibilityProvider } from 'vs/base/browser/ui/list/listWidget';
const $ = dom.$;
......@@ -54,10 +55,11 @@ export function getExpandedBodySize(model: IDebugModel): number {
const length = model.getBreakpoints().length + model.getExceptionBreakpoints().length + model.getFunctionBreakpoints().length + model.getDataBreakpoints().length;
return Math.min(MAX_VISIBLE_BREAKPOINTS, length) * 22;
}
type BreakpointItem = IBreakpoint | IFunctionBreakpoint | IDataBreakpoint | IExceptionBreakpoint;
export class BreakpointsView extends ViewPane {
private list!: WorkbenchList<IEnablement>;
private list!: WorkbenchList<BreakpointItem>;
private needsRefresh = false;
constructor(
......@@ -88,7 +90,7 @@ export class BreakpointsView extends ViewPane {
dom.addClass(container, 'debug-breakpoints');
const delegate = new BreakpointsDelegate(this.debugService);
this.list = <WorkbenchList<IEnablement>>this.instantiationService.createInstance(WorkbenchList, 'Breakpoints', container, delegate, [
this.list = <WorkbenchList<BreakpointItem>>this.instantiationService.createInstance(WorkbenchList, 'Breakpoints', container, delegate, [
this.instantiationService.createInstance(BreakpointsRenderer),
new ExceptionBreakpointsRenderer(this.debugService),
this.instantiationService.createInstance(FunctionBreakpointsRenderer),
......@@ -104,6 +106,7 @@ export class BreakpointsView extends ViewPane {
getRole: (breakpoint: IEnablement) => 'checkbox',
isChecked: (breakpoint: IEnablement) => breakpoint.enabled
},
accessibilityProvider: new BreakpointsAccessibilityProvider(this.debugService),
overrideStyles: {
listBackground: this.getBackgroundColor()
}
......@@ -246,25 +249,25 @@ export class BreakpointsView extends ViewPane {
}
}
private get elements(): IEnablement[] {
private get elements(): BreakpointItem[] {
const model = this.debugService.getModel();
const elements = (<ReadonlyArray<IEnablement>>model.getExceptionBreakpoints()).concat(model.getFunctionBreakpoints()).concat(model.getDataBreakpoints()).concat(model.getBreakpoints());
return elements;
return elements as BreakpointItem[];
}
}
class BreakpointsDelegate implements IListVirtualDelegate<IEnablement> {
class BreakpointsDelegate implements IListVirtualDelegate<BreakpointItem> {
constructor(private debugService: IDebugService) {
// noop
}
getHeight(element: IEnablement): number {
getHeight(_element: BreakpointItem): number {
return 22;
}
getTemplateId(element: IEnablement): string {
getTemplateId(element: BreakpointItem): string {
if (element instanceof Breakpoint) {
return BreakpointsRenderer.ID;
}
......@@ -291,7 +294,7 @@ interface IBaseBreakpointTemplateData {
breakpoint: HTMLElement;
name: HTMLElement;
checkbox: HTMLInputElement;
context: IEnablement;
context: BreakpointItem;
toDispose: IDisposable[];
}
......@@ -621,6 +624,22 @@ class FunctionBreakpointInputRenderer implements IListRenderer<IFunctionBreakpoi
}
}
class BreakpointsAccessibilityProvider implements IAccessibilityProvider<BreakpointItem> {
constructor(private readonly debugService: IDebugService) { }
getAriaLabel(element: BreakpointItem): string | null {
if (element instanceof ExceptionBreakpoint) {
return element.toString();
}
const { message } = getBreakpointMessageAndClassName(this.debugService.state, this.debugService.getModel().areBreakpointsActivated(), element as IBreakpoint | IDataBreakpoint | IFunctionBreakpoint);
const toString = element.toString();
return message ? `${toString} ${message}` : toString;
}
}
export function openBreakpointSource(breakpoint: IBreakpoint, sideBySide: boolean, preserveFocus: boolean, debugService: IDebugService, editorService: IEditorService): Promise<IEditorPane | undefined> {
if (breakpoint.uri.scheme === DEBUG_SCHEME && debugService.state === State.Inactive) {
return Promise.resolve(undefined);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册