Hello,

Could you please review the following fix for the bug. The bug consists in the 
fact that When an assistive technology software by means of Java Access Bridge 
API executes "AccessibleAction" "click" on "AccessibleContext" which 
corresponds to "javax.swing.JTable" cell containing "javax.swing.JCheckBox", 
then the cell's value and cell's view represented by "JCheckBox" stay 
unchanged. The issue is a bug in JDK and should be fixed in JDK, because JDK 
informs the assistive technology software through Java Access Bridge API in 
particular through the function

"BOOL getAccessibleActions(long vmID, AccessibleContext accessibleContext, 
AccessibleActions *actions)"

that "AccessibleContext" of the table cell with "JCheckBox" supports one action 
"click", while real execution of this action on this accessible context does 
not lead to any result.

THE ROOT CAUSE OF THE BUG:

The reason of the issue is the fact that when the assistive technology software 
tries to do "AccessibleAction" on "AccessibleContext" associated with a cell 
with boolean data type in "JTable" component through Java Access Bridge (JAB), 
the JDK executes this "AccessibleAction" on "AccessibleContext" of a renderer, 
which is an instance of the class "javax.swing.JTable.BooleanRenderer" which is 
a derivative of "JCheckBox" class, and the instance of this renderer is single 
and common for all cells of boolean data type. Therefore execution of "click" 
"AccessibleAction" on this renderer component which is not permanently bound to 
any particular cell in the table does not lead to update of the table cell 
value.

THE FIX:

The fix implements an approach which guarantees setting of new values to the 
table's cells with boolean data type on each execution of "AccessibleAction" of 
"javax.swing.JTable.BooleanRenderer" instance, when execution of this action 
changes the "selected" state of this "BooleanRenderer" JCheckBox component.

Please take into account that the created automatic regression test simulates 
the issue only with Java Accessibility API what is not fully equal to the 
original test scenario which requires the assistive technology software and 
usage of Java Access Bridge API and which can be tested using the manual test 
case attached to the issue in JBS. However the regression test still allows to 
reproduce the issue and verify that the fix resolves it.

Thank you,
Anton

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

Commit messages:
 - 8277922: Unable to click JCheckBox in JTable through Java Access Bridge

Changes: https://git.openjdk.java.net/jdk/pull/7416/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=7416&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8277922
  Stats: 264 lines in 2 files changed: 263 ins; 0 del; 1 mod
  Patch: https://git.openjdk.java.net/jdk/pull/7416.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/7416/head:pull/7416

PR: https://git.openjdk.java.net/jdk/pull/7416

Reply via email to