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.hendr...@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