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