On Wed, 11 May 2022 12:49:34 GMT, Artem Semenov <aseme...@openjdk.org> wrote:

>> A11Y implementation on macOS has to directly call the 
>> 'JList.setSelectedIndex' method in order to request selection on an item 
>> (see 'CAccessibility.requestSelection'). The reason is that a11y API lacks 
>> appropriate method.There's only 
>> 'javax.accessibility.AccessibleSelection#addAccessibleSelection' which is 
>> mapped to 'javax.swing.JList#addSelectionInterval', it can not be used to 
>> set selected index.
>> 
>> @forantar @azuev-java @mrserb please review.
>> 
>> Please note that the new API allows you to implement a multiple selection in 
>> lists from the Java side, but I did not succeed in implementing it, because 
>> I could not determine the inclusion of the so-called "VoiceOver multiple 
>> selection mode".
>
> 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 ..

-------------

PR: https://git.openjdk.org/jdk/pull/8578

Reply via email to