Skip to content

Commit

Permalink
Clean up code
Browse files Browse the repository at this point in the history
  • Loading branch information
Joe Wegner committed Aug 23, 2019
1 parent a908b7b commit 2a53cba
Showing 1 changed file with 16 additions and 5 deletions.
21 changes: 16 additions & 5 deletions app/src/processing/app/tools/MenuScroller.java
Original file line number Diff line number Diff line change
Expand Up @@ -280,9 +280,6 @@ public MenuScroller(JPopupMenu menu, int scrollCount, int interval,
scrollCount = autoSizeScrollCount;
}

// if (PreferencesData.getBoolean("ide.accessible")) {
// interval = 1000;
// }
if (scrollCount <= 0 || interval <= 0) {
throw new IllegalArgumentException("scrollCount and interval must be greater than 0");
}
Expand Down Expand Up @@ -573,8 +570,21 @@ public void actionPerformed(ActionEvent e) {
firstIndex += increment * accelerator;
refreshMenu();
if (PreferencesData.getBoolean("ide.accessible")) {
// If the user has chosen to use accessibility features, it means that they are using a screen reader
// to assist them in development of their project. This scroller is very unfriendly toward screen readers
// because it does not tell the user that it is scrolling through the board options, and it does not read
// the name of the boards as they scroll by. It is possible that the desired board will never become
// accessible.
// Because this scroller is quite nice for the sighted user, the idea here is to continue to use the
// scroller, but to fool it into scrolling one item at a time for accessible features users so that the
// screen readers work well, too.
// It's not the prettiest of code, but it works.
String itemClassName;
int keyEvent;

// The blind user likely used an arrow key to get to the scroller. Determine which arrow key
// so we can send an event for the opposite arrow key. This fools the scroller into scrolling
// a single item. Get the class name of the new item while we're here
if (increment > 0) {
itemClassName = menuItems[firstIndex + scrollCount - 1].getClass().getName();
keyEvent = KeyEvent.VK_UP;
Expand All @@ -584,8 +594,9 @@ public void actionPerformed(ActionEvent e) {
keyEvent = KeyEvent.VK_DOWN;
}

// if next item is a separator just go on like normal, otherwise move the cursor back to that item is read
// by a screen reader and the user can continue to use their arrow keys to navigate the list
// Use the class name to check if the next item is a separator. If it is, just let it scroll on like
// normal, otherwise move the cursor back with the opposite key event to the new item so that item is read
// by a screen reader and the user can use their arrow keys to navigate the list one item at a time
if (!itemClassName.equals(JSeparator.class.getName()) ) {
KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
Component comp = manager.getFocusOwner();
Expand Down

0 comments on commit 2a53cba

Please sign in to comment.