<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    Andy, thank you for your reply. <br>
    <br>
    I have already provided some examples, but I’ll give one more very
    simple example that clearly illustrates the problem.<br>
    <br>
    I have a library that uses JFX CodeArea. Naturally, all styles are
    stored in a CSS file. Users of this library can customize <br>
    how the code is displayed by modifying the styles in the CSS file.
    Let’s take the search feature as an example. In the <br>
    CSS file, there is a class:<br>
    <br>
    .search-match {<br>
        -fx-background-color: orange;<br>
    }<br>
    <br>
    But the user wants to change not the background color, but the
    foreground color and font weight. So they write:<br>
    <br>
    .search-match {<br>
        -fx-fill: orange;<br>
        -fx-font-weight: bold;<br>
    }<br>
    <br>
    And this should work. If it doesn’t, then it’s no longer CSS-based
    styling.<br>
    <br>
    If, for some reason, the -fx-background-color property cannot be
    used, an alternative property can be introduced, <br>
    such as -fx-highlight-color. However, everything else in the example
    should work as described.<br>
    <br>
    Best regards, Pavel<br>
    <br>
    <div class="moz-cite-prefix">On 5/8/25 21:25, Andy Goryachev wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:BYAPR10MB3013BDC6A4D8DA7106D51B45E58BA@BYAPR10MB3013.namprd10.prod.outlook.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <meta name="Generator"
        content="Microsoft Word 15 (filtered medium)">
      <style>@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}@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;}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;}span.EmailStyle19
        {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;}div.WordSection1
        {page:WordSection1;}</style>
      <div class="WordSection1">
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Iosevka Fixed SS16"">Pavel:<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"">I
            think your comments in the ticket are still invisible to me,
            so I can't comment.<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"">About
            your recent comment in the PR - I have difficulty
            understanding what you mean.  We are not adding methods to
            "style individual properties".  We are adding methods that
            allow the application to use CSS to style parts of the
            visual representation of the given RichParagraph.<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"">Perhaps
            if you describe what kind of visual representation you have
            in mind, we can show how to achieve that in the code.<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>
        <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
                    <a class="moz-txt-link-rfc2396E" href="mailto:openjfx-dev-retn@openjdk.org"><openjfx-dev-retn@openjdk.org></a> on behalf of
                    PavelTurk <a class="moz-txt-link-rfc2396E" href="mailto:pavelturk2000@gmail.com"><pavelturk2000@gmail.com></a><br>
                    <b>Date: </b>Thursday, May 8, 2025 at 11:04<br>
                    <b>To: </b><a class="moz-txt-link-abbreviated" href="mailto:openjfx-dev@openjdk.org">openjfx-dev@openjdk.org</a>
                    <a class="moz-txt-link-rfc2396E" href="mailto:openjfx-dev@openjdk.org"><openjfx-dev@openjdk.org></a><br>
                    <b>Subject: </b>Re: RFR: 8355774: RichTextArea:
                    provide mechanism for CSS styling of highlights<o:p></o:p></span></p>
              </div>
              <div>
                <p class="MsoNormal" style="margin-bottom:12.0pt"><span
                    style="font-size:11.0pt">I am not a member of the
                    JavaFX team, but if I may, I’d like to express my
                    opinion. I believe that creating separate<br>
                    methods for styling individual properties is a very
                    problematic and dangerous decision.<br>
                    <br>
                    First, the usefulness of such methods is minimal
                    because when styling is done via CSS, the assumption
                    is that<br>
                    adjusting the CSS file should be
                    sufficient—something that won’t work in this case.
                    For example one user for search<br>
                    result wants to set background color for matches but
                    another one wants to set foreground color + weight.<br>
                    Second, it violates fundamental CSS principles.
                    Third, if these methods are added to the API, they
                    cannot later<br>
                    be removed without breaking backward compatibility.<br>
                    <br>
                    I wrote about this in detail in the additional
                    information for JDK-8356436, but my comment has not
                    yet been approved<br>
                    by a moderator.<br>
                    <br>
                    When in doubt, it’s very helpful to see how others
                    are doing it. In RichTextFX, special CSS properties
                    were introduced,<br>
                    which resulted in a consistent standard for applying
                    CSS styles to all properties—fully aligned with
                    established CSS norms.<br>
                    <br>
                    This is my personal opinion, which, of course, can
                    be wrong.<br>
                    <br>
                    Best regards, Pavel<br>
                    <br>
                    On 5/8/25 20:46, Andy Goryachev wrote:<br>
                    > Adding missing APIs related to styling the
                    highlights with CSS:<br>
                    ><br>
                    > ![Screenshot 2025-05-07 at 15 08 53](<a
href="https://github.com/user-attachments/assets/e37062b4-9804-40a7-872d-830fe0f584c1"
                      moz-do-not-send="true"
                      class="moz-txt-link-freetext">https://github.com/user-attachments/assets/e37062b4-9804-40a7-872d-830fe0f584c1</a>)<br>
                    ><br>
                    ><br>
                    ><br>
                    > Adds methods to the `RichParagraph.Builder`:<br>
                    ><br>
                    ><br>
                    >          /**<br>
                    >           * Adds a wavy underline (typically
                    used as a spell checker indicator) with the
                    specified style name(s).<br>
                    >           * <p><br>
                    >           * The corresponding styles should
                    define CSS properties applicable to {@link
                    javafx.scene.shape.Path}.<br>
                    >           *<br>
                    >           * @param start the start offset<br>
                    >           * @param length the end offset<br>
                    >           * @param css the style name(s)<br>
                    >           * @return this {@code Builder}
                    instance<br>
                    >           * @since 25<br>
                    >           */<br>
                    >          public Builder addWavyUnderline(int
                    start, int length, String ... css) {<br>
                    ><br>
                    ><br>
                    ><br>
                    >          /**<br>
                    >           * Adds a highlight with the specified
                    style name(s).<br>
                    >           * Use translucent colors to enable
                    multiple highlights in the same region of text.<br>
                    >           * <p><br>
                    >           * The corresponding styles should
                    define CSS properties applicable to {@link
                    javafx.scene.shape.Path}.<br>
                    >           *<br>
                    >           * @param start the start offset<br>
                    >           * @param length the end offset<br>
                    >           * @param css the style name(s)<br>
                    >           * @return this {@code Builder}
                    instance<br>
                    >           * @since 25<br>
                    >           */<br>
                    >          public Builder addHighlight(int start,
                    int length, String ... css) {<br>
                    ><br>
                    ><br>
                    ><br>
                    > Also adding similar methods to the
                    `SimpleViewOnlyStyledModel` class:<br>
                    ><br>
                    ><br>
                    >      /**<br>
                    >       * Adds a highlight of the given color to
                    the specified range within the last paragraph,<br>
                    >       * with the specified style name(s).<br>
                    >       *<br>
                    >       * @param start the start offset<br>
                    >       * @param length the length of the
                    highlight<br>
                    >       * @param css the highlight style name(s)<br>
                    >       * @return this model instance<br>
                    >       * @since 25<br>
                    >       */<br>
                    >      public SimpleViewOnlyStyledModel
                    highlight(int start, int length, String ... css) {<br>
                    ><br>
                    ><br>
                    >      /**<br>
                    >       * Adds a wavy underline (typically used
                    as a spell checker indicator)<br>
                    >       * to the specified range within the last
                    paragraph, with the specified style name(s).<br>
                    >       *<br>
                    >       * @param start the start offset<br>
                    >       * @param length the length of the
                    highlight<br>
                    >       * @param css the highlight style name(s)<br>
                    >       * @return this model instance<br>
                    >       * @since 25<br>
                    >       */<br>
                    >      public SimpleViewOnlyStyledModel
                    addWavyUnderline(int start, int length, String ...
                    css) {<br>
                    ><br>
                    > -------------<br>
                    ><br>
                    > Commit messages:<br>
                    >   - tab<br>
                    >   - css<br>
                    ><br>
                    > Changes: <a
                      href="https://git.openjdk.org/jfx/pull/1802/files"
                      moz-do-not-send="true"
                      class="moz-txt-link-freetext">https://git.openjdk.org/jfx/pull/1802/files</a><br>
                    >    Webrev: <a
href="https://webrevs.openjdk.org/?repo=jfx&pr=1802&range=00"
                      moz-do-not-send="true">https://webrevs.openjdk.org/?repo=jfx&pr=1802&range=00</a><br>
                    >    Issue: <a
                      href="https://bugs.openjdk.org/browse/JDK-8355774"
                      moz-do-not-send="true"
                      class="moz-txt-link-freetext">https://bugs.openjdk.org/browse/JDK-8355774</a><br>
                    >    Stats: 128 lines in 4 files changed: 110
                    ins; 8 del; 10 mod<br>
                    >    Patch: <a
                      href="https://git.openjdk.org/jfx/pull/1802.diff"
                      moz-do-not-send="true"
                      class="moz-txt-link-freetext">https://git.openjdk.org/jfx/pull/1802.diff</a><br>
                    >    Fetch: git fetch <a
                      href="https://git.openjdk.org/jfx.git"
                      moz-do-not-send="true"
                      class="moz-txt-link-freetext">https://git.openjdk.org/jfx.git</a>
                    pull/1802/head:pull/1802<br>
                    ><br>
                    > PR: <a
                      href="https://git.openjdk.org/jfx/pull/1802"
                      moz-do-not-send="true"
                      class="moz-txt-link-freetext">https://git.openjdk.org/jfx/pull/1802</a><o:p></o:p></span></p>
              </div>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>