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

5 posts, 0 answers
  1. Leif
    Leif avatar
    3 posts
    Member since:
    Sep 2010

    Posted 10 Sep 2010 Link to this post

    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

  2. Teodor
    Admin
    Teodor avatar
    501 posts

    Posted 14 Sep 2010 Link to this post

    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
  3. DevCraft banner
  4. Leif
    Leif avatar
    3 posts
    Member since:
    Sep 2010

    Posted 14 Sep 2010 Link to this post

    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
  5. Teodor
    Admin
    Teodor avatar
    501 posts

    Posted 15 Sep 2010 Link to this post

    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
  6. Veerendra
    Veerendra avatar
    11 posts
    Member since:
    Nov 2010

    Posted 30 Dec 2010 Link to this post

    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
Back to Top
DevCraft banner