Hello
Motivation
I work at the American Printing House for the Blind. I have several developer colleagues who are blind or visually impaired, and they find parts of the Adruino IDE difficult to use. So I would like to work toward adding accessibility to the IDE.
Yesterday I already added code that allows screen readers to be able to read the data in the board manager and library manager. That was a fairly easy change. But moving forward, as things become more complex, it's probably best that I coordinate more.
Problem
The next thing that I would like to tackle is the pop-up dialog box that says "Updates available for some of your boards and libraries". There are a some issues with this for people that are blind or visually impaired.
- The screen reader reads only "Updates available for some of your" then says button
- The button has no name
- The dialog box is on a timer that expires too quickly for many people who are blind to be able to act on it.
- The links for boards and libraries are not read by the screen reader, and there is no way to use these links from the keyboard
The reason that the links do not work is that the text is not in a web context, so screen readers don't realize that the links are indeed links. As a result. when the screen reader sees the HTML code it basically just stops. NOTE: this issue is found in other places in the IDE as well. But I want to start small.
Project
For people that are sighted, the way the IDE works now is visibly appealing and it works well. But for people that blind and can not use the mouse, the links are unusable.
Preferences screen (Preferences.form and Preferences.java)
In the preferences screen I want to add a new checkbox field called Accessible GUI. When checked, changes made to the GUI to make it more accessible will be used.
Notification popup class (NotificationPopup.java)
I can either create a new accessible dialog box, or I can modify the current NotificationPopup class. I prefer the latter. These are the changes to be made, such that when the accessible GUI option is true the dialog box will be more accessible. When the accessible GUI option is true:
- Disable timer for automatic dismissal.
- Request focus so that the dialog is brought to the user's attention.
- The close box will be given an accessible description of close so that the user knows what the button does.
- 2 additional buttons will be added. These buttons will be named and handle by the calling class.
Contribution update check (ContributionsSelfCheck.java)
The update check will continue to function as normal, but when the accessible GUI option is true:
- The dialog text will say the same text, but the text will not contain links.
- The call to the Notification Popup will provide the name and handler for 2 new buttons.
- Update Boards - when clicked this will do the same as clicking the board link.
- Update Libraries - when clicked this will do the same as clicking the libraries link.
Questions
- Is there a preferred development platform, particularly for the preferences screen?
- Is there currently any work along this lines that has started this? For instance, if there already is an accessible GUI option I don't want to repeat/recreate all of that.
- I want to keep this in small chunks. What should some of the future small chunks be?
- Advise is always appreciated.