RFR: 8235491: Tree/TableView: implementation of isSelected(int) violates contract [v4]
Jeanette Winzenburg
fastegal at openjdk.org
Thu Jul 28 16:03:48 UTC 2022
On Wed, 27 Jul 2022 21:36:10 GMT, Andy Goryachev <angorya at openjdk.org> wrote:
>> 1. reword SelectionModel.isSelected(int) javadoc, removing incorrect statement "Is functionally equivalent to calling <code>getSelectedIndices().contains(index)</code>."
>> 2. reimplement TableView.TableViewSelectionModel.isSelected(int) method to return true when at least one cell in *any* column is selected on the given row (was: *all* columns)
>> 3. change selectRowWhenInSingleCellSelectionMode() and selectRowWhenInSingleCellSelectionMode2() in TableViewSelectionModelImplTest to reflect new reality.
>>
>> NOTE: proposed change alters semantics of isSelected(int) method (in the right direction, in my opinion).
>
> Andy Goryachev 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 seven additional commits since the last revision:
>
> - 8235491: tree table view
> - Merge remote-tracking branch 'origin/master' into 8235491.isselected
> - 8235491: review comments
> - 8235491: whitespace
> - 8235491: javadoc
> - 8235491: 2022
> - 8235491: Tree/TableView: implementation of isSelected(int) violates contract
Basically good fix, left a couple of change suggestions/questions inline :)
forgot: will not be near my IDE until next Monday - then I'll run the tests and see for myself :)
modules/javafx.controls/src/main/java/javafx/scene/control/TableView.java line 2829:
> 2827: return selectedCellsMap.isSelected(index, -1);
> 2828: }
> 2829: }
wondering why you distinguish between not/ cellSelection? This method is all about row selection (that is the dimension available in base/multiple selection) - shouldn't it behave the same way, independent of whether the second - cell - dimension is turned on? If so, we could simply delegate to super - or not override it at all.
modules/javafx.controls/src/main/java/javafx/scene/control/TreeTableView.java line 3181:
> 3179: return selectedCellsMap.isSelected(index, -1);
> 3180: }
> 3181: }
same comment as tableView - just to not forget :)
modules/javafx.controls/src/test/java/test/javafx/scene/control/TableViewSelectionModelImplTest.java line 178:
> 176: assertEquals(1, model.getSelectedCells().size());
> 177: }
> 178:
do we have tests isSelected(index) for all combinations of single/multiple/cellSelection? If not, now might be a good time to add them :)
modules/javafx.controls/src/test/java/test/javafx/scene/control/TreeTableViewSelectionModelImplTest.java line 139:
> 137: assertTrue(model.isSelected(3));
> 138: assertEquals(1, model.getSelectedCells().size());
> 139: }
same comment as TableView :)
-------------
Changes requested by fastegal (Reviewer).
PR: https://git.openjdk.org/jfx/pull/839
More information about the openjfx-dev
mailing list