TextField Document model

steve.x.northover at oracle.com steve.x.northover at oracle.com
Mon Oct 22 06:21:07 PDT 2012


Another idea is to have a TextField that validates using a RegEx.  I 
expect that this would augment (not replace) the need for specific 
Date/Time validation classes etc.

Steve

On 20/10/2012 11:30 PM, Jonathan Giles wrote:
> I'm coming into this discussion really late, but I've been sick, so 
> that's my excuse, and I'm sticking to it :-)
>
> Firstly, regarding the options Richard sets out below, my strong 
> preference is for option a (introduce a callback). It seems that it 
> supports the use cases that have been raised, and it does so without 
> introducing concerns around having a mutable Content. I think I would 
> only sway from this position if there is a use case that just can't be 
> done with this approach (which I'm totally willing to do if someone 
> has one).
>
> Secondly, Richard mentions an important point here: one of the things 
> that has been on the controls team backlog for way too long is support 
> for a FormattedTextField control, and important subclasses thereof 
> (e.g. Date/Time, Money, Zip code, etc). An ideal situation would be 
> (in my humble opinion) for JavaFX to ship with FormattedTextField and 
> the most critical subclasses, and for 3rd party projects such as 
> JFXtras / JIDE to bring out all the rest.
>
> This approach of shipping 'simple' controls is what we did with Button 
> / Hyperlink and RadioButton / ToggleButton - in many cases the 
> difference in code between these classes is minimal, but it allows for 
> way better discoverability of controls and functionality - rather than 
> having an uber control with miles of API to toggle state / features. 
> This approach works well, and it also looks great on our 'number of 
> controls' fact sheet :-)
>
> Zooming out even further, we need to expand this discussion in one 
> very important way: validation support. I don't have an answer for 
> validation yet (it is certainly not a JavaFX 8.0 feature), but we have 
> to keep it in the back of our minds lest we regret it later (ah, the 
> joys of API development!).
>
> Finally, FormattedTextField is _not_ planned for JavaFX 8.0. However, 
> I would love to have someone submit a FormattedTextField control via 
> OpenJFX. I am more than happy to work with anyone interested in doing 
> so, and from my perspective this would seem to be an easy control to 
> develop - so it would be ideal for someone to get up to speed with 
> JavaFX controls development. If anyone is interested please join the 
> discussion and let me know.
>
> Thanks,
> -- Jonathan
>
> On 20/10/2012 6:05 a.m., Richard Bair wrote:
>>> I did not have time to look at the Skin and Behavior paradigms yet, 
>>> so I
>>> can't speak to the impact on them.  I will try to brush up on those 
>>> this
>>> weekend.  However, if this subclassing to delegate becomes relatively
>>> common, then it seems that whatever Skin and Behavior issues might 
>>> arise
>>> would still need to be addressed.  However now they would need to be
>>> addressed by application designers instead of by the platform.
>> In general, I'm not a fan of subclass to delegate (AWT required 
>> subclassing for all event handling. Whoops!). The question in this 
>> case however is, what are the use cases and what is the best way to 
>> expose support for those such that the API is consistent and doesn't 
>> have any odd corners or gotchas. Sometimes the only way to expose the 
>> required functionality is to create such gotchas. Other times we can 
>> do something simpler, although more constraining, that covers 95% of 
>> the usages, and then subclassing allows power users to squeeze out 
>> the extra 5%.
>>
>> So for example, I would expect people would prefer to have a 
>> SearchField, DateField, MoneyField, and TextField with a maxLength 
>> property, rather than having to use callbacks or having to configure 
>> a TextField with all the right properties. It is easier to pick a 
>> DateField from a palette and just use it than it is to setup custom 
>> Content or even using off-the-shelf Content but having to plug it 
>> into a TextField (since doing this requires a little more thought and 
>> understanding of the architecture). On the other hand, being able to 
>> plug in the content is more natural than having to subclass in order 
>> to plug in the content.
>>
>> My feeling on it has been, we ought to add (or JFXtras, or JIDE ought 
>> to add) SearchField, MoneyField, etc as Controls and we ought to give 
>> TextField a maxLength, and we ought to have a more general purpose 
>> FormattedTextField. Of course, that doesn't help address some of the 
>> other odd use cases like an all-caps field, so the question is, for 
>> such a use case, is it better to:
>>
>>     a) Add some callbacks to all TextInputControl's that let you 
>> filter / modify changes to the text or
>>     b) Allow Content to be replaced or
>>     c) Restrict such features to sub classes
>>
>> Of these, my feeling was that (a) was the most useful in connection 
>> with built-in DateField, MoneyField, etc. I worry that by making 
>> Content mutable, we make it very easy for people to naively replace 
>> the Content with their own, rather than wrapping the existing 
>> Content, and thus adding bugs into their software such as what 
>> happens when you paste a \n into a TextField. That just isn't one of 
>> those things that people think about the first time around. That's 
>> why I liked (a) better, where Content was basically under the control 
>> of the Text control implementation, but developers had an easy way to 
>> insert code into the process and filter / reject / etc changes to the 
>> Content model.
>>
>> Richard
>


More information about the openjfx-dev mailing list