RFR: 8293119: Additional constrained resize policies for Tree/TableView [v25]
Andy Goryachev
angorya at openjdk.org
Fri Dec 23 20:30:20 UTC 2022
> The current CONSTRAINED_RESIZE_POLICY has a number of issues as explained in [JDK-8292810](https://bugs.openjdk.org/browse/JDK-8292810).
>
> We propose to address all these issues by replacing the old column resize algorithm with a different one, which not only honors all the constraints when resizing, but also provides 4 different resize modes similar to JTable's. The new implementation brings changes to the public API for Tree/TableView and ResizeFeaturesBase classes. Specifically:
>
> - create a public abstract javafx.scene.control.ConstrainedColumnResizeBase class
> - provide an out-of-the box implementation via javafx.scene.control.ConstrainedColumnResize class, offeting 4 resize modes: AUTO_RESIZE_NEXT_COLUMN, AUTO_RESIZE_SUBSEQUENT_COLUMNS, AUTO_RESIZE_LAST_COLUMN, AUTO_RESIZE_ALL_COLUMNS
> - add corresponding public static constants to Tree/TableView
> - make Tree/TableView.CONSTRAINED_RESIZE_POLICY an alias to AUTO_RESIZE_SUBSEQUENT_COLUMNS (a slight behavioral change - discuss)
> - add getContentWidth() and setColumnWidth(TableColumnBase<S,?> col, double width) methods to ResizeFeatureBase
> - suppress the horizontal scroll bar when resize policy is instanceof ConstrainedColumnResizeBase
> - update javadoc
>
>
> Notes
>
> 1. The current resize policies' toString() methods return "unconstrained-resize" and "constrained-resize", used by the skin base to set a pseudostate. All constrained policies that extend ConstrainedColumnResizeBase will return "constrained-resize" value.
> 2. The reason an abstract class ( ConstrainedColumnResizeBase) was chosen instead of a marker interface is exactly for its toString() method which supplies "constrained-resize" value. The implementors might choose to use a different value, however they must ensure the stylesheet contains the same adjustments for the new policy as those made in modena.css for "constrained-resize" value.
Andy Goryachev has updated the pull request incrementally with 13 additional commits since the last revision:
- shrink small
- snap after resize
- snap after resizing
- cleanup
- cleanup
- 8293119: small delta
- 8293119: error
- 8293119: fractional
- 8293119: delta less than 1
- 8293119: update title
- ... and 3 more: https://git.openjdk.org/jfx/compare/4391de56...f412294b
-------------
Changes:
- all: https://git.openjdk.org/jfx/pull/897/files
- new: https://git.openjdk.org/jfx/pull/897/files/4391de56..f412294b
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jfx&pr=897&range=24
- incr: https://webrevs.openjdk.org/?repo=jfx&pr=897&range=23-24
Stats: 289 lines in 2 files changed: 150 ins; 51 del; 88 mod
Patch: https://git.openjdk.org/jfx/pull/897.diff
Fetch: git fetch https://git.openjdk.org/jfx pull/897/head:pull/897
PR: https://git.openjdk.org/jfx/pull/897
More information about the openjfx-dev
mailing list