RFR: 8284542: [Accessibility] [Win] Missing attribute for toggle state of CheckBox in CheckBoxTreeItem [v3]
Kevin Rushforth
kcr at openjdk.org
Fri May 12 21:38:54 UTC 2023
On Fri, 12 May 2023 18:24:29 GMT, Andy Goryachev <angorya at openjdk.org> wrote:
>> Ambarish Rapte has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains three additional commits since the last revision:
>>
>> - Merge branch 'master' into a11y-8284542-CheckBoxTreeItem
>> - Review Comment: Add enum ToggleState
>> - Add CheckBoxTreeItem role and TOGGLE_STATE attribute
>
> modules/javafx.graphics/src/main/java/com/sun/glass/ui/win/WinAccessible.java line 303:
>
>> 301: case INDETERMINATE: {
>> 302: if (getAttribute(ROLE) == AccessibleRole.CHECK_BOX
>> 303: || getAttribute(ROLE) == AccessibleRole.CHECK_BOX_TREE_ITEM) {
>
> same Q.: could we use a `switch` statement to avoid double getter call? (I don't know if JVM will optimize that away anyway, but `switch` makes a cleaner code, in my opinion)
I think the proposed change is less intrusive than a switch, but I don't mind either way. It might make sense to use a local variable to avoid calling `getAttribute` twice.
> modules/javafx.graphics/src/main/java/com/sun/glass/ui/win/WinAccessible.java line 310:
>
>> 308: case SELECTED: {
>> 309: Object role = getAttribute(ROLE);
>> 310: if (role == AccessibleRole.CHECK_BOX || role == AccessibleRole.TOGGLE_BUTTON
>
> switch?
I wouldn't bother.
> modules/javafx.graphics/src/main/java/com/sun/glass/ui/win/WinAccessible.java line 436:
>
>> 434: case TAB_ITEM: return getContainerAccessible(AccessibleRole.TAB_PANE);
>> 435: case PAGE_ITEM: return getContainerAccessible(AccessibleRole.PAGINATION);
>> 436: case CHECK_BOX_TREE_ITEM:
>
> I would recommend reformatting the switch cases here for clarity:
>
>
> private Accessible getContainer() {
> if (isDisposed()) {
> return null;
> }
> AccessibleRole role = (AccessibleRole)getAttribute(ROLE);
> if (role != null) {
> switch (role) {
> case TABLE_ROW:
> case TABLE_CELL:
> return getContainerAccessible(AccessibleRole.TABLE_VIEW);
> case LIST_ITEM:
> return getContainerAccessible(AccessibleRole.LIST_VIEW);
> case TAB_ITEM:
> return getContainerAccessible(AccessibleRole.TAB_PANE);
> case PAGE_ITEM:
> return getContainerAccessible(AccessibleRole.PAGINATION);
> case CHECK_BOX_TREE_ITEM:
> case TREE_ITEM:
> return getContainerAccessible(AccessibleRole.TREE_VIEW);
> case TREE_TABLE_ROW:
> case TREE_TABLE_CELL:
> return getContainerAccessible(AccessibleRole.TREE_TABLE_VIEW);
> }
> }
> return null;
> }
>
> (and below also. but again, this is just my preference)
I usually prefer to avoid these sort of unrelated changes to minimize the diffs. Either way is fine.
> modules/javafx.graphics/src/main/java/javafx/scene/AccessibleAttribute.java line 828:
>
>> 826: * This enum describes the values for TOGGLE_STATE attribute.
>> 827: *
>> 828: * @see TOGGLE_STATE
>
> this might be Eclipse limitation, but this link does not resolve (in Eclipse javadoc widget). should it?
Hopefully, this is just an Eclipse limitation. I'll check the actual javadoc (which I was planning to do anyway).
> modules/javafx.graphics/src/main/java/javafx/scene/AccessibleAttribute.java line 846:
>
>> 844: */
>> 845: INDETERMINATE
>> 846: }
>
> is this the right place for ToggleState?
> looks like the right place, just want to confirm.
Yes, this is where I would recommend putting it.
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/1088#discussion_r1192809729
PR Review Comment: https://git.openjdk.org/jfx/pull/1088#discussion_r1192811319
PR Review Comment: https://git.openjdk.org/jfx/pull/1088#discussion_r1192812188
PR Review Comment: https://git.openjdk.org/jfx/pull/1088#discussion_r1192812665
PR Review Comment: https://git.openjdk.org/jfx/pull/1088#discussion_r1192812774
More information about the openjfx-dev
mailing list