On Wed, 14 Dec 2022 17:56:00 GMT, Andy Goryachev <ango...@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 with a new target base due to a 
> merge or a rebase. The pull request now contains 77 commits:
> 
>  - Merge remote-tracking branch 'origin/master' into 8293119.constrained
>  - 8293119: review comments
>  - 8293119: abstract
>  - 8293119: <p>
>  - 8293119: review comments
>  - Merge remote-tracking branch 'origin/master' into 8293119.constrained
>  - Merge remote-tracking branch 'origin/master' into 8293119.constrained
>  - 8293119: small delta
>  - Merge remote-tracking branch 'origin/master' into 8293119.constrained
>  - 8293119: pref
>  - ... and 67 more: https://git.openjdk.org/jfx/compare/8763e8b0...8bdae30e

I noticed one additional issue with the API (a missing default no-arg 
constructor in the newly added `ConstrainedColumnResizeBase` class). See below.

I'll do some additional testing on the implementation.

modules/javafx.controls/src/main/java/javafx/scene/control/ConstrainedColumnResizeBase.java
 line 38:

> 36:  * @since 20
> 37:  */
> 38: public abstract class ConstrainedColumnResizeBase {

This class produces the following javadoc warning:


modules/javafx.controls/src/main/java/javafx/scene/control/ConstrainedColumnResizeBase.java:38:
warning: use of default constructor, which does not provide a comment


You will need to add an explicit no-arg constructor with a javadoc comment 
block like this: 


    /**
     * Constructor for subclasses to call.
     */
    public ConstrainedColumnResizeBase() {
    }


See [JDK-8251353](https://bugs.openjdk.java.net/browse/JDK-8251353).

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

PR: https://git.openjdk.org/jfx/pull/897

Reply via email to