RFR: 8293119: Additional constrained resize policies for Tree/TableView [v32]
Kevin Rushforth
kcr at openjdk.org
Mon Jan 9 22:57:04 UTC 2023
On Mon, 9 Jan 2023 17:55:53 GMT, Andy Goryachev <angorya at openjdk.org> wrote:
>> 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 two additional commits since the last revision:
>
> - 8293119: added tree table view tests
> - 8293119: review comments
Looks good with one minor formatting comment inline. I'll reapprove if you fix it.
modules/javafx.controls/src/test/java/test/javafx/scene/control/ResizeHelperTestBase.java line 27:
> 25:
> 26: package test.javafx.scene.control;
> 27: import static org.junit.Assert.assertTrue;
Minor: add blank like before this line (to separate it from `package` statement).
-------------
Marked as reviewed by kcr (Lead).
PR: https://git.openjdk.org/jfx/pull/897
More information about the openjfx-dev
mailing list