<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:"Yu Gothic";
        panose-1:2 11 4 0 0 0 0 0 0 0;}
@font-face
        {font-family:Aptos;
        panose-1:2 11 0 4 2 2 2 2 2 4;}
@font-face
        {font-family:"Iosevka Fixed SS16";
        panose-1:2 0 5 9 3 0 0 0 0 4;}
@font-face
        {font-family:"Times New Roman \(Body CS\)";
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:"\@Yu Gothic";
        panose-1:2 11 4 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:10.0pt;
        font-family:"Aptos",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
p.m-3454092310103602811p1, li.m-3454092310103602811p1, div.m-3454092310103602811p1
        {mso-style-name:m_-3454092310103602811p1;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Aptos",sans-serif;}
p.m-3454092310103602811p2, li.m-3454092310103602811p2, div.m-3454092310103602811p2
        {mso-style-name:m_-3454092310103602811p2;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Aptos",sans-serif;}
span.m-3454092310103602811apple-converted-space
        {mso-style-name:m_-3454092310103602811apple-converted-space;}
span.EmailStyle22
        {mso-style-type:personal-reply;
        font-family:"Iosevka Fixed SS16";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        mso-ligatures:none;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">Thank you for offering your perspective!<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">Just wanted to add that one of the design goals of CodeArea is to enable the app or third party devs to implement the functionality found in CodeMirror or a similar code editor.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">-andy<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
<div id="mail-editor-reference-message-container">
<div>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">openjfx-dev <openjfx-dev-retn@openjdk.org> on behalf of quizynox <quizynox@gmail.com><br>
<b>Date: </b>Wednesday, August 14, 2024 at 06:35<br>
<b>To: </b>openjfx-dev@openjdk.org <openjfx-dev@openjdk.org><br>
<b>Subject: </b>Re: RichTextArea: API Review<o:p></o:p></span></p>
</div>
<p>Hello,<o:p></o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal"><span style="font-size:12.0pt">As also mentioned in the proposal, there are already 3rd party RTAs - RichTextFX and Gluon's. Does the proposed RTA offer more than these (besides the ease of use by being in JavaFX)? Do the building blocks
 of these offer advantages that the proposed building blocks don't? An abstract test that can be done is to see if these controls can be "retrofitted" with the proposed new building blocks (no need to actually rewrite the code). If not, it could hint to an
 incompatibility or a limit of the proposal that makes it less appealing.<o:p></o:p></span></p>
</blockquote>
<p>- Gluon's RTA is dual-licensed, so unlike OpenJFX, it is not free for commercial projects (even internal non-profit projects). It can't be an alternative, because of this alone.<br>
- RichTextFX depends on several long-unmaintained libraries, namely ReactFX. There is nothing that can be done from the OpenJFX side, as it would require rewriting RichTextFX from scratch.<br>
<br>
I don't think anyone expects OpenJFX to provide something as complex as CodeMirror. However, having a basic rich text control with reasonable extension points would already be a significant improvement.<o:p></o:p></p>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">On 14/08/2024 16.03, Nir Lisker wrote:<o:p></o:p></span></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">My questions are similar to the ones in the previous discussion, but now I can be more specific.
<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">I see a list of "building blocks" in
<a href="https://bugs.openjdk.org/browse/JDK-8300569">https://bugs.openjdk.org/browse/JDK-8300569</a>, which I like. Specifically, two types of building blocks additions are important as I see it: rich text-specific ones like document models and a way to add
 decorations/colors etc., and the split of controls in general into skin/input/behavior (on which there has been a long discussion). My questions are:<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">1. If these are provided to the user, how difficult is it for them to compose a RTA? JavaFX doesn't provide some somewhat-common controls that you see in various other libraries with the reasoning that the
 library should give the user the ability to create their own controls (which is not so easy right now). Is RTA an exception, like ColorPicker and DatePicker?<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">2. Can these building blocks be used to enhance existing controls? For example, to help with TextArea's performance with long texts, or allow rich text-like features in other controls, like the squiggly red
 line under the text in a TextField?<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">3. As also mentioned in the proposal, there are already 3rd party RTAs - RichTextFX and Gluon's. Does the proposed RTA offer more than these (besides the ease of use by being in JavaFX)? Do the building blocks
 of these offer advantages that the proposed building blocks don't? An abstract test that can be done is to see if these controls can be "retrofitted" with the proposed new building blocks (no need to actually rewrite the code). If not, it could hint to an
 incompatibility or a limit of the proposal that makes it less appealing.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">Thanks,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">Nir<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
</div>
</div>
</div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">On Fri, Aug 2, 2024 at 10:41</span><span style="font-size:12.0pt;font-family:"Arial",sans-serif"> </span><span style="font-size:12.0pt">PM Andy Goryachev <<a href="mailto:andy.goryachev@oracle.com">andy.goryachev@oracle.com</a>>
 wrote:<o:p></o:p></span></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<div>
<div>
<p class="m-3454092310103602811p1">Dear fellow developers:<o:p></o:p></p>
<p class="m-3454092310103602811p2"> <o:p></o:p></p>
<p class="m-3454092310103602811p1">Thank you for the early feedback on the RichTextArea proposal [0].<o:p></o:p></p>
<p class="m-3454092310103602811p2"> <o:p></o:p></p>
<p class="m-3454092310103602811p1">We are moving to the next phase by submitting the public pull request [1].<span class="m-3454092310103602811apple-converted-space"> 
</span>The main goal is to include the new control in an incubating module [8], hopefully in jfx24, as a means of putting non-final API in the hands of developers while the API and implementation progress towards either finalization or removal in a future release.<o:p></o:p></p>
<p class="m-3454092310103602811p2"> <o:p></o:p></p>
<p class="m-3454092310103602811p1">For your convenience, two test applications are provided -
<b>RichTextAreaDemoApp</b> and <b>CodeAreaDemoApp</b> which demonstrate the new controls with a number of different models.<span class="m-3454092310103602811apple-converted-space"> 
</span>In addition to these two testers, please check out a simple standalone rich text editor application,
<b>RichEditorDemoApp</b>,<span class="m-3454092310103602811apple-converted-space"> </span><o:p></o:p></p>
<p class="m-3454092310103602811p2"> <o:p></o:p></p>
<p class="m-3454092310103602811p1">We would encourage anyone - the javafx developers, and especially the application developers, to take a look at the public API [3].<span class="m-3454092310103602811apple-converted-space"> 
</span>It's probably less important at this stage to do a deep code review of the implementation, but we would certainly appreciate and welcome your code review comments.<o:p></o:p></p>
<p class="m-3454092310103602811p2"> <o:p></o:p></p>
<p class="m-3454092310103602811p1">Thank you in advance,<o:p></o:p></p>
<p class="m-3454092310103602811p1">-andy<o:p></o:p></p>
<p class="m-3454092310103602811p2"> <o:p></o:p></p>
<p class="m-3454092310103602811p2"> <o:p></o:p></p>
<p class="m-3454092310103602811p1">[0] Proposal: <a href="https://github.com/andy-goryachev-oracle/Test/blob/main/doc/RichTextArea/RichTextArea.md" target="_blank">
https://github.com/andy-goryachev-oracle/Test/blob/main/doc/RichTextArea/RichTextArea.md</a><o:p></o:p></p>
<p class="m-3454092310103602811p1">[1] Pull request: <a href="https://github.com/openjdk/jfx/pull/1524" target="_blank">
https://github.com/openjdk/jfx/pull/1524</a><o:p></o:p></p>
<p class="m-3454092310103602811p1">[2] Discussion points: <a href="https://github.com/andy-goryachev-oracle/Test/blob/main/doc/RichTextArea/RichTextAreaDiscussion.md" target="_blank">
https://github.com/andy-goryachev-oracle/Test/blob/main/doc/RichTextArea/RichTextAreaDiscussion.md</a><o:p></o:p></p>
<p class="m-3454092310103602811p1">[3] API specification (javadoc): <a href="https://cr.openjdk.org/~angorya/RichTextArea/javadoc" target="_blank">
https://cr.openjdk.org/~angorya/RichTextArea/javadoc</a><o:p></o:p></p>
<p class="m-3454092310103602811p1">[4] CSS Reference: <a href="https://cr.openjdk.org/~angorya/RichTextArea/javadoc/javafx.graphics/javafx/scene/doc-files/cssref.html" target="_blank">
https://cr.openjdk.org/~angorya/RichTextArea/javadoc/javafx.graphics/javafx/scene/doc-files/cssref.html</a><o:p></o:p></p>
<p class="m-3454092310103602811p1">[5] Behavior doc: <a href="https://github.com/andy-goryachev-oracle/jfx/blob/8301121.RichTextArea/doc-files/behavior/RichTextAreaBehavior.md" target="_blank">
https://github.com/andy-goryachev-oracle/jfx/blob/8301121.RichTextArea/doc-files/behavior/RichTextAreaBehavior.md</a><o:p></o:p></p>
<p class="m-3454092310103602811p1"><span lang="DE">[6] RichTextArea RFE: </span><a href="https://bugs.openjdk.org/browse/JDK-8301121" target="_blank"><span lang="DE">https://bugs.openjdk.org/browse/JDK-8301121</span></a><o:p></o:p></p>
<p class="m-3454092310103602811p1">[7] Previous (now obsolete) draft pull request:
<a href="https://github.com/openjdk/jfx/pull/1374" target="_blank">https://github.com/openjdk/jfx/pull/1374</a><o:p></o:p></p>
<p class="m-3454092310103602811p1">[8] Incubator module JEP: <a href="https://github.com/kevinrushforth/jfx/blob/javafx.incubator/INCUBATOR-MODULES.md" target="_blank">
https://github.com/kevinrushforth/jfx/blob/javafx.incubator/INCUBATOR-MODULES.md</a><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:12.0pt"> <o:p></o:p></span></p>
</div>
</div>
</div>
</blockquote>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</body>
</html>