<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    I've mostly caught up on the (lively) discussion surrounding this
    feature request.<br>
    <br>
    It is clear that we do not yet have general agreement on the
    direction this proposal should take, so let's continue to discuss
    the proposal, its shortcomings, and any alternative approaches.<br>
    <br>
    We should start by making sure that the motivation for doing this --
    what problem is being solved -- is well understood. Andy will rework
    the initial sections of the proposal to make it more clear.<br>
    <br>
    If I can summarize what I see are the main concerns that have been
    raised:<br>
    <br>
    * We should not make anything related to Behaviors public without a
    full design of how Behaviors should work, what their
    responsibilities are, how they interact with Skins<br>
    <br>
    * This proposal doesn't solve the coupling of Skins and behaviors<br>
    <br>
    * Function tags are defined in control class, but don't match the
    functionality of control class<br>
    NOTE: this begs the question of whether there should always be a
    method on control for each such function (even if the implementation
    just delegates to the behavior<br>
    <br>
    * An input map should not refer to the node and be stateless and
    sharable among all (or some) instances of the same class; this would
    mean mapping input events to Control::method rather than to
    instance::method or to some arbitrary lambda<br>
    NOTE: this would depend on the previous being resolved<br>
    <br>
    * Arbitrary key mapping seems out of scope for the core of JavaFX;
    this sort of mapping could be done by the application if the event
    order problem was solved, and if we had public API on control for
    all functions that are called by the behavior.<br>
    <br>
    * Should Input map be immutable?<br>
    <br>
    * Changes to the Behavior system should focus on replacing complete
    behaviors, and being able to use these by default for a certain
    subset of controls (like -fx-skin provide in CSS)<br>
    <br>
    There are probably other concerns as well.<br>
    <br>
    Finally, one of the comments made, which I completely agree with, is
    that API design needs to come first. It needs to be fully fleshed
    out, and needs to be forward-looking. We should only expose as
    public API what is needed to solve the problem and no more.<br>
    <br>
    Let's continue the discussion with this in mind.<br>
    <br>
    -- Kevin<br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 9/29/2023 3:44 PM, Andy Goryachev
      wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:DM5PR1001MB217215F738164DBF5FC16EF0E5C0A@DM5PR1001MB2172.namprd10.prod.outlook.com">
      
      <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:"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;}p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-ligatures:standardcontextual;}a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Iosevka Fixed SS16";
        color:windowtext;}span.apple-converted-space
        {mso-style-name:apple-converted-space;}.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}div.WordSection1
        {page:WordSection1;}</style>
      <div class="WordSection1">
        <p class="MsoNormal"><span style="font-family:"Iosevka Fixed SS16";color:#212121">Dear
            fellow JavaFX developers:</span><span style="color:#212121"><o:p></o:p></span></p>
        <p class="MsoNormal" style="caret-color: rgb(33, 33, 33);font-variant-caps: normal;orphans: auto;text-align:start;widows: auto;-webkit-text-stroke-width: 0px;word-spacing:0px">
          <span style="font-family:"Iosevka Fixed SS16";color:#212121"> </span><span style="color:#212121"><o:p></o:p></span></p>
        <p class="MsoNormal" style="caret-color: rgb(33, 33, 33);font-variant-caps: normal;orphans: auto;text-align:start;widows: auto;-webkit-text-stroke-width: 0px;word-spacing:0px">
          <span style="font-family:"Iosevka Fixed SS16";color:#212121">For
            some time now, we’ve been working to identify missing
            features in JavaFX that hinder application development. 
            We’ve been working on adding some of the missing features
            (for which we’ll have a separate announcement), but I feel
            that engaging wider community is a rather important part of
            the process.</span><span style="color:#212121"><o:p></o:p></span></p>
        <p class="MsoNormal" style="caret-color: rgb(33, 33, 33);font-variant-caps: normal;orphans: auto;text-align:start;widows: auto;-webkit-text-stroke-width: 0px;word-spacing:0px">
          <span style="font-family:"Iosevka Fixed SS16";color:#212121"> </span><span style="color:#212121"><o:p></o:p></span></p>
        <p class="MsoNormal" style="caret-color: rgb(33, 33, 33);font-variant-caps: normal;orphans: auto;text-align:start;widows: auto;-webkit-text-stroke-width: 0px;word-spacing:0px">
          <span style="font-family:"Iosevka Fixed SS16";color:#212121">I would
            like to share with you one such missing feature - ability to
            extend behavior of the existing components (and make the
            task of creating new components easier) by adding a public
            InputMap and BehaviorBase. <span class="apple-converted-space"> </span></span><span style="color:#212121"><o:p></o:p></span></p>
        <p class="MsoNormal" style="caret-color: rgb(33, 33, 33);font-variant-caps: normal;orphans: auto;text-align:start;widows: auto;-webkit-text-stroke-width: 0px;word-spacing:0px">
          <span style="font-family:"Iosevka Fixed SS16";color:#212121"> </span><span style="color:#212121"><o:p></o:p></span></p>
        <p class="MsoNormal" style="caret-color: rgb(33, 33, 33);font-variant-caps: normal;orphans: auto;text-align:start;widows: auto;-webkit-text-stroke-width: 0px;word-spacing:0px">
          <span style="font-family:"Iosevka Fixed SS16";color:#212121">Please
            find the actual proposal here</span><span style="color:#212121"><o:p></o:p></span></p>
        <p class="MsoNormal" style="caret-color: rgb(33, 33, 33);font-variant-caps: normal;orphans: auto;text-align:start;widows: auto;-webkit-text-stroke-width: 0px;word-spacing:0px">
          <span style="font-family:"Iosevka Fixed SS16";color:#212121"><a href="https://gist.github.com/andy-goryachev-oracle/294d8e4b3094fe16f8d55f6dd8b21c09" moz-do-not-send="true" class="moz-txt-link-freetext">https://gist.github.com/andy-goryachev-oracle/294d8e4b3094fe16f8d55f6dd8b21c09</a><o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-family:"Iosevka Fixed SS16";color:#212121"> </span><span style="color:#212121"><o:p></o:p></span></p>
        <p class="MsoNormal" style="caret-color: rgb(33, 33, 33);font-variant-caps: normal;orphans: auto;text-align:start;widows: auto;-webkit-text-stroke-width: 0px;word-spacing:0px">
          <span style="font-family:"Iosevka Fixed SS16";color:#212121">We are
            very much interested in your feedback.  Thank you in
            advance.</span><span style="color:#212121"><o:p></o:p></span></p>
        <p class="MsoNormal" style="caret-color: rgb(33, 33, 33);font-variant-caps: normal;orphans: auto;text-align:start;widows: auto;-webkit-text-stroke-width: 0px;word-spacing:0px">
          <span style="font-family:"Iosevka Fixed SS16";color:#212121"> </span><span style="color:#212121"><o:p></o:p></span></p>
        <p class="MsoNormal" style="caret-color: rgb(33, 33, 33);font-variant-caps: normal;orphans: auto;text-align:start;widows: auto;-webkit-text-stroke-width: 0px;word-spacing:0px">
          <span style="font-family:"Iosevka Fixed SS16";color:#212121">-andy</span><span style="color:#212121"><o:p></o:p></span></p>
        <p class="MsoNormal"><span style="font-family:"Iosevka Fixed SS16""><o:p> </o:p></span></p>
      </div>
    </blockquote>
    <br>
  </body>
</html>