<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <div class="moz-cite-prefix">insertHTML has the same peculiar
      behavior. </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">I've added a button to the toolbar that
      calls insertHTML/insertImage with an embedded image.</div>
    <div class="moz-cite-prefix">- click at the end of the html, click
      button: call is unsuccessful (returns false)</div>
    <div class="moz-cite-prefix">- click at the end of the html, click
      button: call is successful (returns true, image is added)</div>
    <div class="moz-cite-prefix">
      <div class="moz-cite-prefix">- click at the end of the html, click
        button: call is unsuccessful (returns false)</div>
      <div class="moz-cite-prefix">- click at the end of the html, click
        button: call is successful (returns true, image is added)</div>
      ...
      <div class="moz-cite-prefix"><br>
      </div>
      <div class="moz-cite-prefix">It does not matter if it is an
        img-tag or a p-tag or whatever, the alternating behavior is the
        same. Also multiple clicks make no difference, all of them
        either fail or succeed, it is the regaining of the focus of the
        WebPage that makes the difference. It can be any component that
        the focus is lost to, but webview.requestFocus is not enough (it
        does not really place the focus back to the webpage, e.g. the
        toolbar buttons stay disabled).</div>
      <div class="moz-cite-prefix"><br>
      </div>
      <div class="moz-cite-prefix">Interestingly, when the
        insert*-commands succeed, the webpage.getHtml call returns an
        empty string, and when they fail you get the actual HTML. But
        for the rest none of the webPage methods make a difference.<br>
      </div>
      <div class="moz-cite-prefix"><br>
      </div>
      <div class="moz-cite-prefix">It would be nice to understand why the
        wrapped browser alternates between two states.<br>
      </div>
      <div class="moz-cite-prefix"><br>
      </div>
      <div class="moz-cite-prefix"><br>
      </div>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">On 2024-07-24 09:15, Tom Eugelink
      wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:21dae80e-fa50-422f-a6e6-000894a32057@tbee.org">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <div class="moz-cite-prefix">Apparently I had checked out an old
        repository where that code was missing. Should have looked again
        in the URL before posting.</div>
      <div class="moz-cite-prefix"><br>
      </div>
      <div class="moz-cite-prefix">Anyhow, I've progressed to the point
        where I can insert an image using the W3C insertImage command.
        Works fine, but it is picky when it can be executed. However,
        the queryCommandEnabled does not return a correct value; the
        true or false does not actually match whether the insertImage
        command will succeed. The value is only correct after focus is
        moved out of the WebView, but that doesn't work practically (you
        can hardly bounce the focus after every keystroke). <br>
      </div>
      <div class="moz-cite-prefix"><br>
      </div>
      <div class="moz-cite-prefix">I'll give the insertHtml command a
        try.<br>
      </div>
      <div class="moz-cite-prefix"><br>
      </div>
      <div class="moz-cite-prefix"><br>
      </div>
      <div class="moz-cite-prefix">On 2024-07-22 17:27, Andy Goryachev
        wrote:<br>
      </div>
      <blockquote type="cite"
cite="mid:BL3PR10MB6185CDBC1AF002494B8CCA25E5A82@BL3PR10MB6185.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 style="margin:0in;background:white"><span
style="font-family:"Iosevka Fixed SS16";color:black">    </span><span
style="font-family:"Iosevka Fixed SS16";color:#FF2600">/**</span><span
style="font-family:"Iosevka Fixed SS16";color:black"><o:p></o:p></span></p>
          <p style="margin:0in;background:white"><span
style="font-family:"Iosevka Fixed SS16";color:#FF2600">     *
              Represents commands that can be passed into the HTMLEditor
              web engine.</span><span
style="font-family:"Iosevka Fixed SS16";color:black"><o:p></o:p></span></p>
          <p style="margin:0in;background:white"><span
style="font-family:"Iosevka Fixed SS16";color:#FF2600">     */</span><span
style="font-family:"Iosevka Fixed SS16";color:black"><o:p></o:p></span></p>
          <p style="margin:0in;background:white"><span
style="font-family:"Iosevka Fixed SS16";color:black">    </span><span
style="font-family:"Iosevka Fixed SS16";color:#4E8F00">public</span><span
style="font-family:"Iosevka Fixed SS16";color:black"> </span><span
style="font-family:"Iosevka Fixed SS16";color:#4E8F00">enum</span><span
style="font-family:"Iosevka Fixed SS16";color:black"> <span
                style="background:#D4D4D4">Command</span> {<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"">line
              1167<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
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-discuss
                    <a class="moz-txt-link-rfc2396E"
                      href="mailto:openjfx-discuss-retn@openjdk.org"
                      moz-do-not-send="true"><openjfx-discuss-retn@openjdk.org></a>
                    on behalf of Tom Eugelink <a
                      class="moz-txt-link-rfc2396E"
                      href="mailto:tbee@tbee.org" moz-do-not-send="true"><tbee@tbee.org></a><br>
                    <b>Date: </b>Saturday, July 20, 2024 at 00:21<br>
                    <b>To: </b><a
class="moz-txt-link-abbreviated moz-txt-link-freetext"
                      href="mailto:openjfx-discuss@openjdk.org"
                      moz-do-not-send="true">openjfx-discuss@openjdk.org</a>
                    <a class="moz-txt-link-rfc2396E"
                      href="mailto:openjfx-discuss@openjdk.org"
                      moz-do-not-send="true"><openjfx-discuss@openjdk.org></a><br>
                    <b>Subject: </b>Re: HTMLEditor customization<o:p></o:p></span></p>
              </div>
              <div>
                <p class="MsoNormal" style="margin-bottom:12.0pt"><span
                    style="font-size:11.0pt">It seems those 10 year old
                    hacks are not working anymore. All of the
                    'selection' objects in javascript appear to be
                    either null, or unwilling to return a range.<br>
                    <br>
                    The other approach would be to extend the HTMLEditor
                    implementation, because why not? While investigating
                    that approach I got confused:<br>
                    <a
href="https://github.com/javafxports/openjdk-jfx/blob/develop/modules/javafx.web/src/main/java/javafx/scene/web/HTMLEditorSkin.java"
                      moz-do-not-send="true"
                      class="moz-txt-link-freetext">https://github.com/javafxports/openjdk-jfx/blob/develop/modules/javafx.web/src/main/java/javafx/scene/web/HTMLEditorSkin.java</a><br>
                    import static
                    javafx.scene.web.HTMLEditorSkin.Command.*;<br>
                    <br>
                    Where did the Command enum hide? It should be in the
                    HTMLEditorSkin class?<br>
                    <br>
                    <br>
                    On 2024-07-19 07:37, Tom Eugelink wrote:<br>
                    > I was wondering; is the HTML editor still at
                    the point where any customization is done by
                    executing javascript code via the WebEngine? I find
                    some 10 year old or so articles on how to insert
                    things at the cursor position using that approach.
                    And inserting additional buttons in the toolbar by
                    finding it via its CSS class?<br>
                    ><br>
                    > Because the vanilla version of the HTML editor
                    is limited; no image support and all.<br>
                    ><br>
                    > Regards, Tom<br>
                    ><br>
                    ><o:p></o:p></span></p>
              </div>
            </div>
          </div>
        </div>
      </blockquote>
      <p><br>
      </p>
    </blockquote>
    <p><br>
    </p>
  </body>
</html>