<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p><br>
</p>
<div class="moz-cite-prefix">On 06/11/2023 20:54, Andy Goryachev
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:DM5PR1001MB2172C168F0849231D443A4E8E5AAA@DM5PR1001MB2172.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:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}@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:Calibri;
panose-1:2 15 5 2 2 2 4 3 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;}@font-face
{font-family:"Segoe UI";
panose-1:2 11 5 2 4 2 4 2 2 3;}@font-face
{font-family:Menlo;
panose-1:2 11 6 9 3 8 4 2 2 4;}@font-face
{font-family:"Segoe UI Emoji";
panose-1:2 11 5 2 4 2 4 2 2 3;}p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:10.0pt;
font-family:"Calibri",sans-serif;}a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}code
{mso-style-priority:99;
font-family:"Courier New";}p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
font-size:10.0pt;
font-family:"Calibri",sans-serif;}span.EmailStyle20
{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;}ol
{margin-bottom:0in;}ul
{margin-bottom:0in;}</style>
<div class="WordSection1">
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Iosevka Fixed
SS16"">Dear John:<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"">Thank you again for submitting a separate
KeyBinding proposal. Ignoring my objection for its sibling,
I just wanted to point to these two items in Goals and
Non-Goals:<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>
<ul style="margin-top:0in" type="disc">
<li class="MsoNormal"
style="color:#1F2328;mso-margin-bottom-alt:auto;mso-list:l0
level1 lfo2;background:white">
<span style="font-size:12.0pt;font-family:"Segoe
UI",sans-serif">Keep internal details of </span><span
style="font-family:Menlo">InputMap</span><span
style="font-size:12.0pt;font-family:"Segoe
UI",sans-serif"> implementation hidden (it is too
complex, and consumes far too much resources)<o:p></o:p></span></li>
</ul>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Iosevka Fixed
SS16"">I object to this on two fronts:<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Iosevka Fixed
SS16"">1. by trying to go around the InputMap,
something that many developers find easy to understand, you
invented a bunch of weird things like InputContext, Actions
(not those Actions that we are used to!), and States. Why?
What is the problem? How is what you propose is NOT “too
complex” but an InputMap is?<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Iosevka Fixed
SS16"">2. You still need to add a listeners on each
control instance, right?<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"">But the main objection comes from<o:p></o:p></span></p>
<ul style="margin-top:0in" type="disc">
<li class="MsoListParagraph"
style="color:#1F2328;margin-top:12.0pt;margin-bottom:12.0pt;margin-left:0in;mso-list:l1
level1 lfo3;background:white">
<span style="font-size:12.0pt;font-family:"Segoe
UI",sans-serif">Runtime modification of key bindings
on a per control basis</span></li>
</ul>
</div>
</blockquote>
<p>Before I reply further, where is the use case for this? I don't
see it in any of the earlier linked tickets. All those tickets
want Behaviors opened up to ease Skin subclassing, but that's not
addressed in any way.</p>
<p><a class="moz-txt-link-freetext" href="https://bugs.openjdk.org/browse/JDK-8092211">https://bugs.openjdk.org/browse/JDK-8092211</a></p>
<p><a class="moz-txt-link-freetext" href="https://bugs.openjdk.org/browse/JDK-8091189">https://bugs.openjdk.org/browse/JDK-8091189</a></p>
<p><a class="moz-txt-link-freetext" href="https://bugs.openjdk.org/browse/JDK-8186137">https://bugs.openjdk.org/browse/JDK-8186137</a><br>
</p>
<p>Especially runtime modification of default key bindings (ie. ones
like Ctrl-A, cut, copy, paste, cursor key based navigation, etc)
seems entirely out of scope to be able to modify at runtime as
that would be way too confusing for users. I'd expect these at
most to be modified once (immediately after control construction,
or simply as part of a Behavior) when preferences change or the
application is restarted. <br>
</p>
<p>Note that I also don't think the key bindings should serve as an
alternative mechanism to define keys tied to custom functions (ie,
functions not supplied by FX). That's what KeyEvents are for.
The mapping system allows changing of internal key choices, but
how these are used exactly (react on pressed or released, on hold
duration, etc) is NOT configurable and so should not be seen as an
alternative for using KeyEvents.<br>
</p>
<p><span style="font-size:12.0pt;font-family:"Segoe
UI",sans-serif;color:#1F2328;background:white">--John<br>
</span><o:p></o:p></p>
<blockquote type="cite"
cite="mid:DM5PR1001MB2172C168F0849231D443A4E8E5AAA@DM5PR1001MB2172.namprd10.prod.outlook.com">
<div class="WordSection1">
<div id="mail-editor-reference-message-container">
<div>
</div>
</div>
</div>
</blockquote>
</body>
</html>