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