Proposal: RichTextArea Control (Incubator)

mkpaz quizynox at gmail.com
Fri Feb 23 11:26:42 UTC 2024


Hello,

 >> A 3rd party control, RichTextFX already exists -- what is this new 
proposal adding that RichTextFX does not have?

It uses the standard JavaFX VirtualFlow API and and does not need to 
work with reactive streams. RichtextFX depends on several long 
unmaintained libs: ReactFX (last commit 8 years ago), WellBehavedFX 
(last commit 6 years ago), UndoFX (last commit 3 years ago). To say it's 
actively maintained is a big exaggeration.

 >> What (if anything) is stopping a 3rd party from building a 
RichTextArea themselves?

- The lack of a standard API. The Behavior API has been discussed for 
ages, but is still not implemented. Moreover, WellBehavedFX is literally 
a rejected JEP/CSR implementation.
- The closedness of JavaFX in general. All internals are explicitly 
private and final. A few simple examples. The date picker popup uses a 
private API to calculate its width based on text size, but you're 
forbidden to do the same thing. All i18n resources are not exported, 
you're forbidden to use them to create a context menu. You're not 
encouraging 3rd party libs, you're going in the opposite direction (for 
the sake of stability of course).
- The JavaFX community is very small. The "tens of thousands of 
developers" you talk about don't exist. Even famous projects are poorly 
maintained or not maintained at all, including ControlsFX and 
ScenicView. You have fewer features -> you have fewer users/market share 
-> you have less promotion -> you have fewer committers -> you have 
fewer features. It's that simple.
- There's literally no docs about creating new controls. Even Skin API 
is badly documented. You can only learn from existing control libs.

This particular feature would be a HUGE step forward. I'm really glad to 
see it. Hopefully it won't get buried under a bunch of pointless 
abstract discussions like the CSS theme CSR. Just get some feedback and 
implement it the way you want. It's a million times better than doing 
nothing.

On 23/02/2024 14.45, Johan Vos wrote:
> I fully agree with John on this.
>
> A RichTextArea is something that can "easily" be developed outside 
> OpenJFX .
> There are a number of examples already, e.g. RichTextFX, and our 
> (Gluon) RichTextArea at
> https://github.com/gluonhq/rich-text-area
>
> In the past, we clearly said that this was not a focus for OpenJFX.
>
> There are a huge amount of outstanding issues in JBS that can only be 
> fixed in the OpenJFX "core". Developers (of custom 
> components/controls) rely on the core OpenJFX development to address 
> those issues. That is what this group (the openjfx-dev list) is 
> supposed to do.
>
> I highly encourage developers to create custom components and 
> controls, but not as part of OpenJFX. As others noted as well, we have 
> many other things to fix that can only be fixed in OpenJFX, and that 
> is where the priorities of OpenJFX should be, imho.
>
> - Johan
>
> On Fri, Feb 23, 2024 at 2:48 AM John Hendrikx 
> <john.hendrikx at gmail.com> wrote:
>
>     Hi,
>
>     Far be it from me to tell the FX team what it should do, I am
>     still wondering the following:
>
>     - A 3rd party control, RichTextFX already exists -- what is this
>     new proposal adding that RichTextFX does not have?
>     - What (if anything) is stopping a 3rd party from building a
>     RichTextArea themselves?
>
>     In other words, I think the FX team ought to focus on
>     **facilitating** the building of complex controls like
>     RichTextArea, by identifying gaps in the current Control API that
>     is **stopping** 3rd parties from doing this themselves in the same
>     integrated manner as a "native" FX control.
>
>     Enabling thousands or tens of thousand of developers to build more
>     complicated controls seems to me like a much better investment
>     than what I think will be a significant investment in one of the
>     most complex controls imaginable.  RichTextFX was actively
>     developed over a 4 year period, with 45 contributors and over 1400
>     commits (for comparison, JavaFX had 250 commits in the past
>     year).  If it will be significantly less complicated, then what
>     does it offer over RichTextFX?
>
>     --John
>
>     On 21/02/2024 19:07, Andy Goryachev wrote:
>>
>>     Dear JavaFX developers:
>>
>>     We would like to propose a new feature - rich text control,
>>     RichTextArea, intended to bridge the functional gap with Swing
>>     and its StyledEditorKit/JEditorPane.  The main design goal is to
>>     provide a control that is complete enough to be useful out-of-the
>>     box, as well as open to extension by the application developers.
>>
>>     This is a complex feature with a large API surface that would be
>>     nearly impossible to get right the first time, even after an
>>     extensive review.  We are, therefore, introducing this in an
>>     incubating module, *javafx.incubator.richtext*. This will allow
>>     us to evolve the API in future releases without the strict
>>     compatibility constraints that other JavaFX modules have.
>>
>>     Please take a look at the proposal [0], a list of discussion
>>     points [1], and the API Specification (javadoc) [2]. While the
>>     proposed API is ready for review, it isn't complete nor set in
>>     stone. We are looking for feedback, and will update the proposal
>>     based on the suggestions we receive from the community.  We
>>     encourage you to comment either in the mailing list, or by
>>     leaving comments inline in a draft pull request [3].  For
>>     context, the links to the original RFE [4] and a list of missing
>>     APIs related to rich text [5] are provided below.
>>
>>     Sincerely,
>>
>>     Your friendly JavaFX development team.
>>
>>     References
>>
>>     [0] Proposal:
>>     https://github.com/andy-goryachev-oracle/Test/blob/rich.jep.review/doc/RichTextArea/RichTextArea.md
>>
>>     [1] Discussion points:
>>     https://github.com/andy-goryachev-oracle/Test/blob/rich.jep.review/doc/RichTextArea/RichTextAreaDiscussion.md
>>
>>     [2] API specification (javadoc):
>>     https://cr.openjdk.org/~angorya/RichTextArea/javadoc
>>
>>     [3] Draft Pull Request for API comments and feedback:
>>     https://github.com/openjdk/jfx/pull/1374
>>
>>     [4] RichTextArea RFE: https://bugs.openjdk.org/browse/JDK-8301121
>>
>>     [5] Missing APIs related to rich text control:
>>     https://bugs.openjdk.org/browse/JDK-8300569
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20240223/0e24d123/attachment-0001.htm>


More information about the openjfx-dev mailing list