This is a migrated thread and some comments may be shown as answers.

Can RadBusyIndicator be made to echo in a screen reader like NVDA, Narrator, or JAWs

4 Answers 149 Views
BusyIndicator
This is a migrated thread and some comments may be shown as answers.
Leif
Top achievements
Rank 1
Leif asked on 10 Sep 2010, 05:35 PM
Hi all, long time listener, first time caller.

Here is my issue. I am considering using the RadBusyIndicator for a project, but due to 508 compliance necessities, the control must at the minimum have the text "Loading" as it's AutomationProperties.Name attribute. I can and have set the property to loading like so.

<telerik:RadBusyIndicator x:Name="myBusyIndicator" AutomationProperties.Name="Loading. Please Wait." GotFocus="MyBusyIndicator_GotFocus"  >

This busy indicator is being used during a map loading event with asynchronous calls, so I am just toggling it on and off from backcode with IsBusy:

MyBusyIndicator.IsBusy = true;
MyBusyIndicator.Focus();

After return from Async...
MyBusyIndicator.IsBusy = false;
SomeOtherControl.Focus();

All of this works fine, however, when run against a screen reader, i cannot get the contents of the RadBusyIndicator, or the AutomationProperties.Name to output in voice. I have tried sending the control focus right after it's set to busy, and confirmed that it received focus by changing the border color in the GotFocus event.

private void MapBusyIndicator_GotFocus(object sender, RoutedEventArgs e)
        {
            MapBusyIndicator.BorderBrush = new SolidColorBrush(Colors.Cyan);
        }

Any ideas how i can trick NVDA/Jaws/Narrator into reading either the content or the AutomationProperties.Name when the RadBusyIndictor becomes busy would be greatly appreciated. Thanks.

Leif

4 Answers, 1 is accepted

Sort by
0
Teodor
Telerik team
answered on 14 Sep 2010, 09:05 AM
Hello Leif,

Thank you for contacting us.

I can understand what you are aiming at setting this automation property. Unfortunately, we have not implemented an automation peer for the RadBusyIndicator yet. That is why you cannot get this to work at this stage. Still, we will have this in our task list, and will do our best to implement it for Q3.

Hope this time frame is acceptable.

Sincerely yours,

Teodor
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
Leif
Top achievements
Rank 1
answered on 14 Sep 2010, 03:19 PM
Good Morning All,
Thank you for your response. I look forward to the Q3 release and will check it then. For your readers who might happen upon this page when looking for some kind 508 Compliant Busy Indicator, here is what I ended up doing. It is not as visually pleasing as the Telerik RadBusyIndicator, nor will it track progress, it's not really a "BusyIndicator" at all, only a rectangle and a richtextbox, but it will expose its AutomationProperties.Name attribute to screen readers. This code makes use of the RichTextBox control, so Silverlight 4 is neccessary.

MainPage.xaml:

<Rectangle x:Name="RectangleMapLoading" HorizontalAlignment="Center" Visibility="Collapsed" VerticalAlignment="Center" Fill="Black" Height="75" Width="200" RadiusX="14" RadiusY="14" Opacity="0.7" />

<RichTextBox x:Name="RichTextBoxMapLoading" Height="0" HorizontalAlignment="Center" VerticalAlignment="Center" IsReadOnly="True" IsTabStop="True" Foreground="White"
AutomationProperties.Name="Loading. Please Wait."
AutomationProperties.HelpText="Loading Map and Grid Data. Please Wait.">
    <Paragraph>Loading...</Paragraph>
</RichTextBox>

MainPage.xaml.cs

// On the way out to an Async call.
RichTextBoxMapLoading.Height = 36;
RichTextBoxMapLoading.Visibility = Visibility.Visible;
RectangleMapLoading.Visibility = Visibility.Visible;
RichTextBoxMapLoading.Focus();

// Upon return from async call.
RichTextBoxMapLoading.Height = 0;
RichTextBoxMapLoading.Visibility = Visibility.Collapsed;
RectangleMapLoading.Visibility = Visibility.Collapsed;
SomeOtherControl.Focus();

By bouncing the focus around a bit, I am able to get the screen reader (I have only tested with NVDA) to read the AutomationProperties.Name attribute of the RichTextBox control, in this case "Loading. Please Wait". I know it's simple, but as they say, it's good enough for government work. Thanks again for your time Telerik Team.

Leif
0
Teodor
Telerik team
answered on 15 Sep 2010, 09:42 AM
Hi Leif,

Thank you for sharing your solution with the community. Hope it will be helpful.

Sincerely yours,
Teodor
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
Veerendra
Top achievements
Rank 2
answered on 30 Dec 2010, 08:06 AM
Hi Leif,
I'm also facing Narrator/JAWS problem in my application when using Telerik Control for ComboBox / DateTime mask / or Phone type masking.. so have you any solution please share us.

Narrator can read RadComboBox by AutomationProperties.Name, but its working on Combo LostFocus().


Thank's
Veerendra
Tags
BusyIndicator
Asked by
Leif
Top achievements
Rank 1
Answers by
Teodor
Telerik team
Leif
Top achievements
Rank 1
Veerendra
Top achievements
Rank 2
Share this question
or