PR #575, which implements option 2, is now RFR.
-- Kevin
On 7/13/2021 7:58 AM, Kevin Rushforth wrote:
Here is a Draft PR that implements option 2:
https://github.com/openjdk/jfx/pull/575
It also fixes two additional issues with the properties:
* The docs for each property is on a private property field that does
have tree in the name, which results in no docs being generated for
either the tableRow or tableColumn property.
* The implementation of the tableRowProperty() method returns the
writable property by mistake rather than the read-only property that
is specified by the method's return type.
I will likely make it RFR tomorrow, and plan to target it to jfx17.
-- Kevin
On 7/12/2021 2:55 PM, Kevin Rushforth wrote:
In looking at this more closely, I now think that option 2 is the
better approach for the following reasons:
* TreeTablePosition extends TablePositionBase (which is also extended
by TablePosition), and inherits a getTableColumn() method that is
overridden with a covariant return type (using the type of the
generic "TC" parameter) of TreeTableColumn.
* Although not public API, TreeTableCellBehavior extends
TableCellBehaviorBase ( which is also extended by TableCellBehavior),
and inherits inherits a getTableColumn() method that is overridden
with a covariant return type of TreeTableColumn.
So option 2 is the one that will provide better consistency, in
addition to being less intrusive.
Thus, the only change I am proposing to the public API is:
getTreeTableRow() -> getTableRow() -- which I will do by deprecating
(not for removal) the existing method and adding getTableRow() to
match the property name.
-- Kevin
On 7/12/2021 10:22 AM, Kevin Rushforth wrote:
While evaluating a javadoc fix [1] that removes spurious warnings
for missing comments on JavaFX property methods, I looked at the
remaining warnings, and discovered an inconsistency in the naming of
two of the properties in the TreeTableCell class. I filed
JDK-8270314 [2] to track this.
Before I submit a PR, I wanted to solicit comments.
In TreeTableCell, there is a mismatch between name of the following
property method vs the getter:
tableRowProperty()
getTreeTableRow()
the get method has "Tree" in the name while the property method does
not.
The corresponding methods for column are self-consistent, and are
named without the "tree" in the name:
tableColumnProperty()
getTableColumn()
Given the type of the property -- TreeTableRow and TreeTableColumn,
respectively -- the properties should have "Tree" in the name, but
don't. Somewhat related is that the update methods for both row and
column are updateTreeTableColumn and updateTreeTableRow which do
have "TreeTable" in the name:
There are two possible solutions that seem workable:
Possible solutions:
1. Add Tree to all methods of the row and column properties
tableRowProperty() --> treeTableRowProperty()
tableColumnProperty() --> treeTableColumnProperty()
getTableColumn() --> getTreeTableColumn()
This is the most consistent, but is slightly more intrusive in that
changes 3 of the 4 public methods of the row and column properties.
2. Remove Tree from all methods of these properties
getTreeTableRow() -> getTableRow()
This is a less intrusive change that only affects one method. While
it makes the properties self-consistent and consistent with each
other, the names are not what would be expected given the return
type (TreeTableColumn and TreeTableRow), and are not consistent with
the update methods. Also, for applications that don't use the
property method, and only use the getter, it isn't any less change
than the the first option.
I propose to go with option #1 for maximum consistency and further
propose to deprecate *not for removal* the misnamed methods.
Comments?
-- Kevin
[1] https://github.com/openjdk/jdk/pull/4747
[2] https://bugs.openjdk.java.net/browse/JDK-8270314