<div dir="auto">Sounds good to me. </div><div dir="auto"><br></div><div dir="auto"><br></div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Kevin Rushforth <<a href="mailto:kevin.rushforth@oracle.com">kevin.rushforth@oracle.com</a>> schrieb am Mi. 23. Okt. 2024 um 20:15:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><u></u>
<div>
I think we just need a good name. I agree that "predict" isn't the
API we want.<br>
<br>
How about "requestFocusTraversal"? It has symmetry with
requestFocus.</div><div><br>
<br>
-- Kevin<br>
<br>
<br>
<div>On 10/23/2024 11:05 AM, Andy Goryachev
wrote:<br>
</div>
<blockquote type="cite">
<div>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16"">I
don't think prediction should be the functionality we want
in the Node. This functionality, in my opinion, belongs to
the traversal policy.<u style="font-family:"Iosevka Fixed SS16""></u><u style="font-family:"Iosevka Fixed SS16""></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16""><u style="font-family:"Iosevka Fixed SS16""></u> <u style="font-family:"Iosevka Fixed SS16""></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16"">All
we want is to navigate away from the specified node.<u style="font-family:"Iosevka Fixed SS16""></u><u style="font-family:"Iosevka Fixed SS16""></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16""><u style="font-family:"Iosevka Fixed SS16""></u> <u style="font-family:"Iosevka Fixed SS16""></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16"">It
might have been easier had we kept the original
FocusTraversal class - not only one can add a bunch of
convenience methods (predict, infer, contemplate, etc.) but
we could have added applicationFocusOwnerProperty() etc.<u style="font-family:"Iosevka Fixed SS16""></u><u style="font-family:"Iosevka Fixed SS16""></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16""><u style="font-family:"Iosevka Fixed SS16""></u> <u style="font-family:"Iosevka Fixed SS16""></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16"">Do
we need another brainstorming round?<u style="font-family:"Iosevka Fixed SS16""></u><u style="font-family:"Iosevka Fixed SS16""></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16""><u style="font-family:"Iosevka Fixed SS16""></u> <u style="font-family:"Iosevka Fixed SS16""></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16"">-andy<u style="font-family:"Iosevka Fixed SS16""></u><u style="font-family:"Iosevka Fixed SS16""></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16""><u style="font-family:"Iosevka Fixed SS16""></u> <u style="font-family:"Iosevka Fixed SS16""></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16""><u style="font-family:"Iosevka Fixed SS16""></u> <u style="font-family:"Iosevka Fixed SS16""></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16""><u style="font-family:"Iosevka Fixed SS16""></u> <u style="font-family:"Iosevka Fixed SS16""></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16""><u style="font-family:"Iosevka Fixed SS16""></u> <u style="font-family:"Iosevka Fixed SS16""></u></span></p>
<div id="m_4428031838034703898mail-editor-reference-message-container">
<div>
<div>
<div style="border-width:1pt medium medium;border-style:solid none none;padding:3pt 0in 0in;border-color:rgb(181,196,223) currentcolor currentcolor">
<p class="MsoNormal" style="margin-bottom:12pt"><b><span style="font-size:12pt;color:black">From:
</span></b><span style="font-size:12pt;color:black">openjfx-dev
<a href="mailto:openjfx-dev-retn@openjdk.org" target="_blank"><openjfx-dev-retn@openjdk.org></a> on behalf of
Michael Strauß <a href="mailto:michaelstrau2@gmail.com" target="_blank"><michaelstrau2@gmail.com></a><br>
<b>Date: </b>Wednesday, October 23, 2024 at 10:58<br>
<b>To: </b><br>
<b>Cc: </b><a href="mailto:openjfx-dev@openjdk.org" target="_blank">openjfx-dev@openjdk.org</a>
<a href="mailto:openjfx-dev@openjdk.org" target="_blank"><openjfx-dev@openjdk.org></a><br>
<b>Subject: </b>Re: Proposal: Focus Traversal API<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12pt">How
about „predictFocus“, which will return a Node
without changing focus?<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12pt"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12pt">This
would give applications even more flexibility,
because they can then decide if they want to go
ahead and actually change focus by calling
predictFocus()?.requestFocus()<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12pt"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12pt"><u></u> <u></u></span></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12pt">Andy
Goryachev <<a href="mailto:andy.goryachev@oracle.com" target="_blank">andy.goryachev@oracle.com</a>>
schrieb am Mi. 23. Okt. 2024 um 19:16:<u></u><u></u></span></p>
</div>
<blockquote style="border-width:medium medium medium 1pt;border-style:none none none solid;padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in;border-color:currentcolor currentcolor currentcolor rgb(204,204,204)">
<div>
<div>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16"">Thank
you for suggestion!</span><span style="font-size:12pt"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16""> </span><span style="font-size:12pt"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16"">My
only problem with a more assertive
“moveFocus” is that it implies a success,
while this API may or may not succeed
(similarly to requestFocus).</span><span style="font-size:12pt"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16""> </span><span style="font-size:12pt"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16"">The
word "shift" in "shiftFocus" might clash
with the "shift" key, don't really like
that.</span><span style="font-size:12pt"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16""> </span><span style="font-size:12pt"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16"">Maybe
"requestTraversal" although it will expand
auto-completion list that has 2 items
already. Welcome any alternative, as long
as it's not creat().</span><span style="font-size:12pt"><u></u><u></u></span></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16""> </span><span style="font-size:12pt"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16"">-andy</span><span style="font-size:12pt"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16""> </span><span style="font-size:12pt"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Iosevka Fixed SS16""> </span><span style="font-size:12pt"><u></u><u></u></span></p>
<div id="m_4428031838034703898m_4184658542356538446mail-editor-reference-message-container">
<div>
<div>
<div style="border-width:1pt medium medium;border-style:solid none none;padding:3pt 0in 0in;border-color:currentcolor">
<p class="MsoNormal" style="margin-bottom:12pt"><b><span style="font-size:12pt;color:black">From:
</span></b><span style="font-size:12pt;color:black">openjfx-dev
<<a href="mailto:openjfx-dev-retn@openjdk.org" target="_blank">openjfx-dev-retn@openjdk.org</a>>
on behalf of Michael Strauß <<a href="mailto:michaelstrau2@gmail.com" target="_blank">michaelstrau2@gmail.com</a>><br>
<b>Date: </b>Wednesday, October 23,
2024 at 10:05<br>
<b>To: </b><br>
<b>Cc: </b><a href="mailto:openjfx-dev@openjdk.org" target="_blank">openjfx-dev@openjdk.org</a>
<<a href="mailto:openjfx-dev@openjdk.org" target="_blank">openjfx-dev@openjdk.org</a>><br>
<b>Subject: </b>Re: Proposal: Focus
Traversal API</span><span style="font-size:12pt"><u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11pt">Maybe we
can polish the naming a bit:<br>
<br>
When used as a transitive verb,
"traverse" means (according to<br>
Merriam-Webster): to go or travel
across or over, to move or pass<br>
along or through.<br>
<br>
MW gives the example: "light rays
traversing a crystal". So one thing<br>
is moving (light rays), while the
other thing is static (a crystal).<br>
Cambridge gives the example "Stanley
traversed the continent from west<br>
to east." Again, "Stanley" is
moving, "the continent" is static.<br>
<br>
Since "traverseFocus" is a
transitive verb followed by a direct
noun,<br>
it sounds to me like "focus" is the
thing that can be traversed over<br>
or across.<br>
As an analogy, let's call the method
"traverseContinent" for a moment.<br>
It becomes obvious that "continent"
is the space which is traveled<br>
across, and not the thing
travelling.<br>
<br>
In our case, "focus" is the moving
thing, not the thing that it is<br>
moved across. I would use something
like "moveFocus", "shiftFocus", or<br>
something along those lines.<br>
<br>
As for "TraversalDirection", I think
it is acceptable, but I'll note<br>
that to me, "direction" implies one
of the four directional modes, not<br>
the two logical modes (previous and
next).</span><span style="font-size:12pt"><u></u><u></u></span></p>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<br>
</div>
</blockquote></div></div>