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.

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

Commit messages:
 - 8293119: javadoc
 - Merge remote-tracking branch 'origin/master' into 8293119.constrained
 - 8293119: whitespace + javadoc
 - 8293119: show right boundary when needed
 - 8293119: not abstract
 - 8293119: whitespace
 - 8293119: cleanup
 - 8293119: cleanup
 - 8293119: test
 - 8293119: tester
 - ... and 37 more: https://git.openjdk.org/jfx/compare/9768b5e4...ec8ca564

Changes: https://git.openjdk.org/jfx/pull/897/files
 Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=897&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8293119
  Stats: 2094 lines in 10 files changed: 1824 ins; 260 del; 10 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

Reply via email to