From e8b257c64562c8adc2c52ada40a84826dc636995 Mon Sep 17 00:00:00 2001 From: GeraldMit Date: Fri, 15 Oct 2021 02:07:25 -0400 Subject: [PATCH] Bug 576639 - [Accessibility][A11y] reduce JAWS table read while in table correct previous fixes Bug 575946, Bug 575949, Bug 576090 to use only parent for accessibility add of table description. Change-Id: Idbc39f13c06f27ed106839d922c328f3bce76d16 Signed-off-by: GeraldMit --- .../ui/filters/CustomFiltersDialog.java | 20 +++++------ .../CEditorColoringConfigurationBlock.java | 18 +++++----- .../preferences/CTemplatePreferencePage.java | 35 ++++++++++++++----- .../CodeAssistAdvancedConfigurationBlock.java | 28 +++++++-------- 4 files changed, 56 insertions(+), 45 deletions(-) diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/CustomFiltersDialog.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/CustomFiltersDialog.java index 884ea4e58eb..38279163d44 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/CustomFiltersDialog.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/filters/CustomFiltersDialog.java @@ -37,8 +37,8 @@ import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.swt.SWT; -import org.eclipse.swt.accessibility.AccessibleAdapter; -import org.eclipse.swt.accessibility.AccessibleEvent; +import org.eclipse.swt.accessibility.ACC; +import org.eclipse.swt.accessibility.AccessibleListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; @@ -133,18 +133,17 @@ public class CustomFiltersDialog extends SelectionDialog { fUserDefinedPatterns.setLayoutData(data); String patterns = convertToString(fPatterns, SEPARATOR); fUserDefinedPatterns.setText(patterns); - + fUserDefinedPatterns.setToolTipText(FilterMessages.CustomFiltersDialog_patternInfo); // Info text final Label info = new Label(group, SWT.LEFT); info.setText(FilterMessages.CustomFiltersDialog_patternInfo); // add the info text as a description to the pattern field - fUserDefinedPatterns.getAccessible().addAccessibleListener(new AccessibleAdapter() { - @Override - public void getDescription(AccessibleEvent e) { + fUserDefinedPatterns.getAccessible().addAccessibleListener(AccessibleListener.getNameAdapter(e -> { + if (e.childID == ACC.CHILDID_SELF && (e.result == null || e.result.trim().isEmpty())) { e.result = FilterMessages.CustomFiltersDialog_patternInfo; } - }); + })); // Enabling / disabling of pattern group fEnableUserDefinedPatterns.setSelection(fEnablePatterns); @@ -191,12 +190,11 @@ public class CustomFiltersDialog extends SelectionDialog { if (initialSelection != null && !initialSelection.isEmpty()) checkInitialSelections(); - fCheckBoxList.getTable().getAccessible().addAccessibleListener(new AccessibleAdapter() { - @Override - public void getName(AccessibleEvent e) { + fCheckBoxList.getTable().getAccessible().addAccessibleListener(AccessibleListener.getNameAdapter(e -> { + if (e.childID == ACC.CHILDID_SELF && (e.result == null || e.result.trim().isEmpty())) { e.result = FilterMessages.CustomFiltersDialog_filterList_label; } - }); + })); fCheckBoxList.getTable().setToolTipText(FilterMessages.CustomFiltersDialog_filterList_label); // Description diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorColoringConfigurationBlock.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorColoringConfigurationBlock.java index ff63377fd90..56edb67e541 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorColoringConfigurationBlock.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CEditorColoringConfigurationBlock.java @@ -56,8 +56,8 @@ import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerComparator; import org.eclipse.swt.SWT; -import org.eclipse.swt.accessibility.AccessibleAdapter; -import org.eclipse.swt.accessibility.AccessibleEvent; +import org.eclipse.swt.accessibility.ACC; +import org.eclipse.swt.accessibility.AccessibleListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; @@ -650,12 +650,11 @@ class CEditorColoringConfigurationBlock extends AbstractConfigurationBlock { fListViewer.getControl().setLayoutData(gd); // add the coloring element label text as the name for the list viewer - fListViewer.getControl().getAccessible().addAccessibleListener(new AccessibleAdapter() { - @Override - public void getName(AccessibleEvent e) { + fListViewer.getControl().getAccessible().addAccessibleListener(AccessibleListener.getNameAdapter(e -> { + if (e.childID == ACC.CHILDID_SELF && (e.result == null || e.result.trim().isEmpty())) { e.result = PreferencesMessages.CEditorColoringConfigurationBlock_coloring_element; } - }); + })); Composite stylesComposite = new Composite(editorComposite, SWT.NONE); layout = new GridLayout(); @@ -721,12 +720,11 @@ class CEditorColoringConfigurationBlock extends AbstractConfigurationBlock { gd.heightHint = convertHeightInCharsToPixels(5); previewer.setLayoutData(gd); // add the preview label text as the name to the previewer - previewer.getAccessible().addAccessibleListener(new AccessibleAdapter() { - @Override - public void getName(AccessibleEvent e) { + previewer.getAccessible().addAccessibleListener(AccessibleListener.getNameAdapter(e -> { + if (e.childID == ACC.CHILDID_SELF && (e.result == null || e.result.trim().isEmpty())) { e.result = PreferencesMessages.CEditorColoringConfigurationBlock_preview; } - }); + })); fListViewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CTemplatePreferencePage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CTemplatePreferencePage.java index 7788b63ba9f..91b70fbcbcc 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CTemplatePreferencePage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CTemplatePreferencePage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2002, 2010 QNX Software Systems and others. + * Copyright (c) 2002, 2021 QNX Software Systems and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -11,6 +11,7 @@ * Contributors: * QNX Software Systems - Initial API and implementation * Wind River Systems, Inc. - Bug fixes + * IBM Corporation - Bug fixes *******************************************************************************/ package org.eclipse.cdt.internal.ui.preferences; @@ -33,8 +34,8 @@ import org.eclipse.jface.text.templates.ContextTypeRegistry; import org.eclipse.jface.text.templates.Template; import org.eclipse.jface.window.Window; import org.eclipse.swt.SWT; -import org.eclipse.swt.accessibility.AccessibleAdapter; -import org.eclipse.swt.accessibility.AccessibleEvent; +import org.eclipse.swt.accessibility.ACC; +import org.eclipse.swt.accessibility.AccessibleListener; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; @@ -111,6 +112,25 @@ public class CTemplatePreferencePage extends TemplatePreferencePage { PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), ICHelpContextIds.TEMPLATE_PREFERENCE_PAGE); } + /* + * @see PreferencePage#createContents(Composite) + */ + @Override + protected Control createContents(Composite ancestor) { + Control control = super.createContents(ancestor); + //must occur after contents created + if (getTableViewer() == null) { + String description = getDescription(); + //same description as used in PreferencePage.createDescriptionLabel(Composite parent) + getTableViewer().getControl().getAccessible().addAccessibleListener(AccessibleListener.getNameAdapter(e -> { + if (e.childID == ACC.CHILDID_SELF && (e.result == null || e.result.trim().isEmpty())) { + e.result = description; + } + })); + } + return control; + } + /* * @see org.eclipse.ui.texteditor.templates.TemplatePreferencePage#getFormatterPreferenceKey() */ @@ -157,12 +177,9 @@ public class CTemplatePreferencePage extends TemplatePreferencePage { data.heightHint = convertHeightInCharsToPixels(5); control.setLayoutData(data); - control.getAccessible().addAccessibleListener(new AccessibleAdapter() { - @Override - public void getName(AccessibleEvent e) { - e.result = PreferencesMessages.TemplatePreferencePage_Viewer_preview; - } - }); + control.getAccessible().addAccessibleListener(AccessibleListener.getNameAdapter(e -> { + e.result = PreferencesMessages.TemplatePreferencePage_Viewer_preview; + })); CSourcePreviewerUpdater.registerPreviewer(viewer, configuration, CUIPlugin.getDefault().getCombinedPreferenceStore()); diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CodeAssistAdvancedConfigurationBlock.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CodeAssistAdvancedConfigurationBlock.java index c56c267e1c3..23daffbe50f 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CodeAssistAdvancedConfigurationBlock.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/CodeAssistAdvancedConfigurationBlock.java @@ -56,8 +56,8 @@ import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.ViewerComparator; import org.eclipse.swt.SWT; -import org.eclipse.swt.accessibility.AccessibleAdapter; -import org.eclipse.swt.accessibility.AccessibleEvent; +import org.eclipse.swt.accessibility.ACC; +import org.eclipse.swt.accessibility.AccessibleListener; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; @@ -158,7 +158,7 @@ final class CodeAssistAdvancedConfigurationBlock extends OptionsConfigurationBlo } } - private final Comparator fCategoryComparator = new Comparator<>() { + private final Comparator fCategoryComparator = new Comparator() { @Override public int compare(ModelElement o1, ModelElement o2) { return o1.getRank() - o2.getRank(); @@ -428,12 +428,12 @@ final class CodeAssistAdvancedConfigurationBlock extends OptionsConfigurationBlo styledTextWidget.setEditable(false); styledTextWidget.setCaret(null); styledTextWidget.setBackground(composite.getBackground()); - styledTextWidget.getAccessible().addAccessibleListener(new AccessibleAdapter() { - @Override - public void getDescription(AccessibleEvent e) { + styledTextWidget.setToolTipText(value); + styledTextWidget.getAccessible().addAccessibleListener(AccessibleListener.getNameAdapter(e -> { + if (e.childID == ACC.CHILDID_SELF && (e.result == null || e.result.trim().isEmpty())) { e.result = value; } - }); + })); return styledTextWidget; } @@ -489,12 +489,11 @@ final class CodeAssistAdvancedConfigurationBlock extends OptionsConfigurationBlo } }); - fDefaultViewer.getControl().getAccessible().addAccessibleListener(new AccessibleAdapter() { - @Override - public void getName(AccessibleEvent e) { + fDefaultViewer.getControl().getAccessible().addAccessibleListener(AccessibleListener.getNameAdapter(e -> { + if (e.childID == ACC.CHILDID_SELF && (e.result == null || e.result.trim().isEmpty())) { e.result = PreferencesMessages.CodeAssistAdvancedConfigurationBlock_default_table_description; } - }); + })); fDefaultViewer.setContentProvider(ArrayContentProvider.getInstance()); @@ -598,12 +597,11 @@ final class CodeAssistAdvancedConfigurationBlock extends OptionsConfigurationBlo } }); - fSeparateViewer.getControl().getAccessible().addAccessibleListener(new AccessibleAdapter() { - @Override - public void getName(AccessibleEvent e) { + fSeparateViewer.getControl().getAccessible().addAccessibleListener(AccessibleListener.getNameAdapter(e -> { + if (e.childID == ACC.CHILDID_SELF && (e.result == null || e.result.trim().isEmpty())) { e.result = PreferencesMessages.CodeAssistAdvancedConfigurationBlock_separate_table_description; } - }); + })); table.addSelectionListener(new SelectionAdapter() { @Override