RFR: 8092102: Labeled: truncated property [v4]

Marius Hanl mhanl at openjdk.org
Mon Mar 11 22:06:17 UTC 2024


On Fri, 8 Mar 2024 21:08:25 GMT, Andy Goryachev <angorya at openjdk.org> wrote:

>> Adds **Labeled.textTruncated** property which indicates when the text is visually truncated (and the ellipsis string is inserted) in order to fit the available width.
>> 
>> The new property reacts to changes in the following properties:
>> - ellipsisString
>> - font
>> - height
>> - text
>> - width
>> - wrapText
>> 
>> I don't think it's worth creating a headful test (headless won't work) due to relative simplicity of the code.
>> 
>> **Alternative**
>> 
>> The desired functionality can be just as easily achieved on an application level, by adding a similar property to a subclass.  What is the benefit of adding this functionality to the core?
>> 
>> UPDATE 2024/03/07: turns out Labeled in a TableView (in a TreeTableView as well) lives by different rules (TableCellSkinBase:152, TreeTableCellSkin:126).  The consequence of this is that the new functionality **cannot** be fully implemented with the public APIs alone.
>> 
>> **See Also**
>> 
>> * [JDK-8091891](https://bugs.openjdk.org/browse/JDK-8091891) TreeView: There is no tooltip available on truncated node
>> * [JDK-8205211](https://bugs.openjdk.org/browse/JDK-8205211) Ability to show Tooltip only when text is shown with ellipsis (...)
>
> Andy Goryachev has updated the pull request incrementally with one additional commit since the last revision:
> 
>   labeled helper

Changes requested by mhanl (Committer).

modules/javafx.controls/src/main/java/javafx/scene/control/skin/TreeTableCellSkin.java line 133:

> 131:     protected double computePrefWidth(double height, double topInset, double rightInset, double bottomInset,
> 132:             double leftInset) {
> 133:         if (LabeledHelper.isUseContentWidth() || isDeferToParentForPrefWidth) {

I'm not conviced that this is the correct solution here. 
First of all I would keep this PR simple and ONLY add the truncated Property.
Second, I would rather want to see if this can be changed without adding some flags which once again will not help application developers that may want to extend something like this.

IMO, the separation of concern is wrong. A Cell should always give back the prefWidth, other callers should think if they want to use the pref width or the table column width.

In order to move this forward, I would like to see only the necessary changes, which is the truncated property. Some tests for it would be good as well.

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

PR Review: https://git.openjdk.org/jfx/pull/1389#pullrequestreview-1929489141
PR Review Comment: https://git.openjdk.org/jfx/pull/1389#discussion_r1520481720


More information about the openjfx-dev mailing list