On Thu, 10 Oct 2024 22:48:42 GMT, John Hendrikx <jhendr...@openjdk.org> wrote:

>>> I did my best to actually find some use cases...
>> 
>> Allow me to refer to some of the linked tickets in RFE 
>> https://bugs.openjdk.org/browse/JDK-8090456:
>> 
>> [JDK-8091524](https://bugs.openjdk.org/browse/JDK-8091524)
>> Introduce a "focus container" concept in class Parent
>> 
>> [JDK-8091670](https://bugs.openjdk.org/browse/JDK-8091670)
>> Add API for better control over keyboard focus
>
>> > I did my best to actually find some use cases...
>> 
>> Allow me to refer to some of the linked tickets in RFE 
>> https://bugs.openjdk.org/browse/JDK-8090456:
>> 
>> [JDK-8091524](https://bugs.openjdk.org/browse/JDK-8091524) Introduce a 
>> "focus container" concept in class Parent
>> 
>> [JDK-8091670](https://bugs.openjdk.org/browse/JDK-8091670) Add API for 
>> better control over keyboard focus
> 
> **JDK-8091524** - problem: User wants to create a panel that has its own 
> focus cycle, and focus should not escape to other controls in the same Scene. 
>  I saw this issue and feel that it is a "WON'T FIX" as there are standard 
> solutions for this already.
> 
> It is clearly an X/Y problem.  A common thing that trips up beginning FX 
> developers is that they're unwilling to create a 2nd Scene or a Dialog and 
> prefer to just "add a child somewhere to show some extra controls".  This is 
> not how you do this, and we shouldn't need to cater to something that is 
> basically building a Dialog type infrastructure from scratch.  How would this 
> handle mouse clicks outside the "blessed" panel?  Should that be restricted 
> as well then?
> 
> Possible ways to address this problem: use dialogs, use nested event loops, 
> disable components that should not be part of the focus cycle temporarily, 
> overlay a transparent pane blocking clicks, etc... but best option, just use 
> a dialog...
> 
> **JDK-8091670** - describes the same problem... Ensemble is not using the 
> right tools to restrict focus.  Use dialogs for this purpose.  There is no 
> need to restrict focus on container level.  Again, what happens when focus is 
> restricted to a container, and the user clicks outside it?  What should then 
> happen when I navigate?  Should the restricted container be part of the 
> primary focus cycle, but then capture it with no way to exit it once you get 
> there?
> 
> ## Working example
> 
> Just to show you can easily do this already, below is an example that will 
> show a new pane, with navigation restricted to it, allowing you to select a 
> new name for a button.  Note that you can't click outside it with the mouse 
> (although I'm sure I can add that as well and then "hide" the dialog).  Also 
> note that the Dialog doesn't appear as a dialog (they don't have to) and that 
> no new Window is created on the task bar or whatever.
> 
> 
> package app;
> 
> import javafx.application.Application;
> import javafx.event.ActionEvent;
> import javafx.geometry.Point2D;
> import javafx.scene.Scene;
> import javafx.scene.control.Button;
> import javafx.scene.control.Dialog;
> import javafx....

@hjohn , thank you for the effort digging the tickets and preparing the 
examples!

At the same time, suggesting to use a bunch of event handlers seems less 
optimal to me.

On top of that, at least `four` people (JDK-8090456, JDK-8091670, JDK-8091524, 
and me) are asking for focus traversal policy in JBS and countless others on SO:

https://www.google.com/search?q=site%3Astackoverflow.com+%22javafx%22+%22focus+traversal%22&rlz=1C5GCEA_enUS1028US1030&oq=site%3Astackoverflow.com+%22javafx%22+%22focus+traversal%22&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIGCAEQRRg60gEJMTQzMTBqMGo3qAIAsAIA&sourceid=chrome&ie=UTF-8

I don't think we need to reinvent the wheel here.

-------------

PR Comment: https://git.openjdk.org/jfx/pull/1555#issuecomment-2406191012

Reply via email to