<!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>