On Mon, 12 Sep 2022 21:58:47 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.

modules/javafx.controls/src/main/java/javafx/scene/control/TableView.java line 
440:

> 438: 
> 439:     // TODO to be renamed to CONSTRAINED_RESIZE_POLICY
> 440:     public static final Callback<TableView.ResizeFeatures, Boolean> 
> CONSTRAINED_RESIZE_POLICY_SUBSEQUENT_COLUMNS =

Instead of renaming we can also deprecate the 'old' `CONSTRAINED_RESIZE_POLICY` 
?

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

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

Reply via email to