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