On Mon, 7 Nov 2022 21:20:45 GMT, Phil Race <p...@openjdk.org> wrote: >> Artem Semenov has updated the pull request incrementally with one additional >> commit since the last revision: >> >> We don't do @author tags in openjdk >> Not 2022 ? > > I am still waiting for the following questions (from July) to be answered > here (not somewhere else) > >> You did not acknowledge this is not a backportable fix > > By which I mean, if this needs to be solved in say JDK 11 too, what will you > do ?? > >> I'd like you to explain why calling setSelectedIndex isn't good enough AND >> why Windows A11Y does not need this API > > Also leaving aside that you haven't yet shown the API is needed I note that > there are javax.accessibility is NOT > the place for Component specific A11Y classes. > So adding javax.accessibility.AccessibleList looks like a very anomalous and > perhaps incorrect design. > > The similar examples are nested classes of the component, eg > JTree.AccessibleJTree > JTable.AccessibleJTable > > In fact there's even already a JList.AccessibleJList ! > > And it seems to have things that look similar to things you say you need > https://docs.oracle.com/en/java/javase/17/docs/api/java.desktop/javax/swing/JList.AccessibleJList.html#isAccessibleChildSelected(int) > > and your API > > + boolean isSelectedIndex(int index); > > === > > and > public int getAccessibleSelectionCount() > Returns the number of items currently selected. If no items are selected, the > return value will be 0. > > === > and you have > > + /** > + * Returns true if no indices are selected. > + * > + * @return {@code true} if no indices are selected. > + */ > + boolean isSelectionEmpty(); > > etc etc ..
> @prrace I acknowledge that this change is not portable. > > The absence of the dedicated AccessibleList interface does not allow setting > selections on lists on MacOS using the accessible shortcuts and external > accessibility devices. The current solution severely limits the ability of > accessibility subsystem to interact with the list component thus it is not > acceptable. Existing implementation uses AccessibleSelection implemented in > the JList but it lacks ability to work with multiple selection intervals and > side effects of setting singular selection with sequential calling of > clearSelection() and addSelection() lead to the the line selection action > being repeated by the VoiceOver indefinitely. > > We need a new accessibility interface that will implement the selection model > for accessibility lists. Also it should provide additional information about > the list, regardless of whether the accessibility list is inherited from > JList or impolemented from scratch. New interface should be able to provide > system with the additional information such as selection mode and should be > flexible enough to allow implementation of both single and multiselection > modes. The AccessibleSelection interface does not allow working with index > intervals, which will prevent the implementation of multiple selection in the > future. This interface is not yet relevant on windows because the most common > readers do not have a screen navigation modes similar to VoiceOver quick > navigation and the current functionality is sufficient. You didn't speak to the duplicated functionality. We should retrofit / add to the existing nested class, if new API is truly needed. "Nothing here is "inherited from JList". AccessibleJList is a nested class, not an inheritance relationship. API mistakes are hard to un-do so it is not possible for me to sign off on this without somehow finding enough time to study this API and come to my own conclusions since what I see now looks so anomalous. Perhaps if you can find someone who knows the A11Y APIs it would go faster, but that isn't me. ------------- PR: https://git.openjdk.org/jdk/pull/8578