On Thu, 21 Nov 2024 20:15:00 GMT, Andy Goryachev <ango...@openjdk.org> wrote:

>> modules/jfx.incubator.input/src/main/java/jfx/incubator/scene/control/input/FunctionTag.java
>>  line 51:
>> 
>>> 49: public final class FunctionTag {
>>> 50:     /** Constructs the function tag. */
>>> 51:     public FunctionTag() {
>> 
>> Should this be more than a simple "marker" Object with identity, but no 
>> state? There is no way to get the information from a particular function tag 
>> instance as to what it represents, nor is there a useful "toString()" 
>> method. There is also no way to get the set of available FunctionTag objects 
>> from the nested <Control>.Tag class. Perhaps we could be informed by the 
>> Enum class?
>> 
>> If there was value in doing this, maybe it could be a record?
>> 
>> 
>>     public final record FunctionTag(String name) { }
>> 
>> 
>> This would be mostly useful for tooling, since most applications aren't 
>> likely to need it.
>> 
>> It might be worth noting, even if you prefer not to make this change.
>
> The main reason there is no name field in the FunctionTag is to simplify the 
> life of custom components or internal skin developers.  There is just not 
> enough value, in my opinion.
> 
> The argument about tooling is an interesting one.  At first glance, I think 
> it is possible to retrieve both function tag name and the list of tags 
> declared by the control using trivial reflection.
> 
> The other possibility is to forgo FunctionTag completely and just use naked 
> Strings, losing some degree of type clarity.

I don't like the idea of using a raw String at all. Let's leave it as is for 
now and see if we get any requests to add a name.

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1524#discussion_r1861351121

Reply via email to