[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-openjfx-dev
Subject: Re: Behavior of TitledPane concerning the ENTER key and focus
From: Jonathan Giles <jonathan.giles () oracle ! com>
Date: 2015-03-20 0:30:32
Message-ID: 550B6A28.5060906 () oracle ! com
[Download RAW message or body]
Hi Christoph,
It would be best to repost this into the jira issue (RT-40166), so that
all context is recorded there. If you do that we can carry on the
discussion. In general, I agree with you - we should consider removing
the ENTER key binding, so this should be considered further.
-- Jonathan
On 19/03/2015 9:53 p.m., Keimel, Christoph wrote:
> Hello
>
> I would like to address two difficulties we are having with TitledPane:
> - TitledPaneBehavior sets up a KeyBinding for ENTER to trigger the TitledPane to \
> toggle its expanded property. (Issue A)
> - TitledPane accepts the focus even when is not collapsible (Issue B)
>
>
> *** Why I would like to change this ***
>
> The main issue with (A) is that TitledPane and default buttons don't work well \
> together. Regardless of where the default button is in the scene, it can't be fired \
> by pressing ENTER anymore as soon as the focus is on any control which is a \
> descendent of a TitledPane. A similar bug has been reported concerning the ComboBox \
> [1].
> We are currently migrating a government application to JavaFX (on Windows). The \
> user interface layout has been designed with the tool wxDesigner. These declarative \
> ui design files are currently transformed to FXML on the fly and then loaded. (Once \
> the migration is complete SceneBuilder will be used to work on FXML directly). So \
> we have no control over the layout of the ui. The designers really like to use the \
> windows group box to create labeled sections inside of their (potentially very \
> large and complex) forms to give them a better structure (recommended by the \
> accessibility guidelines). The closest thing to the group box concept in JavaFX is \
> the TitledPane.
> The designers also like to have a default button in every window (a soft \
> requirement of the accessibility guidelines). Since almost all input controls are \
> somehow a descendent of a TitledPane (which are even nested sometimes) the default \
> button is effectively not accessible with ENTER during input. This will be treated \
> as a Regression by our customer, so we somehow have to make it work.
> The fact that TitledPane accepts the focus even when it is not collapsible (B) is a \
> different, minor issue. The problem here is that the focus is not visible when it \
> is on the TitledPane, because the "toggle button" of the TitledPane is not visible. \
> This violates a soft requirement of the accessibility guidelines.
> [1]: [Default Button] Button set to default is not reacting ComboBox enter key - \
> https://javafx-jira.kenai.com/browse/RT-34620
>
> *** My technical understanding of A ***
>
> The ENTER key is registered as a KeyBinding to toggle the expanded property of \
> TitledPane. The key biding is always set in the constructor of TitledPaneBehavior \
> independent of the properties of the TitledPane. If a key binding is registered for \
> a KeyEvent, then this event will be consumed in the bubbling phase (independent of \
> any action actually being executed).
> The default button registers an accelerator for ENTER with the Scene. The \
> accelerator is activated for the KeyEvent ENTER when the event bubbling reaches the \
> scene only if the event has not been consumed during event processing.
>
> *** Considerations to A ***
>
> Looking at it from an "accessibility" point of view, one key binding is enough. \
> TitledPane also registers the SPACE key to toggle its expanded state. This is \
> consistent with other controls like Button, CheckBox, RadioBox. From my point of \
> view, the small triangle on the top left corner of the TitledPane is pretty much \
> like a button, so this makes sense. Do we need the additional ENTER key binding?
> Ok, let's assume we do. In that case the KeyEvent for ENTER should only be \
> consumed, if it is actually handled by the control (when the toggle is performed). \
> This will only be the case if the TitledPane is collapsible and has the focus. \
> Currently the KeyEvent is always consumed when it passes through TitledPane by the \
> default implementation of BehaviourBase.callActionForEvent regardless of whether it \
> actually triggers an action or not.
>
> *** Conclusion ***
>
> The direct approach to (A) could be to override BehaviourBase .callActionForEvent \
> in TitledPaneBehaviour to customize the event consummation. A general approach \
> might be to extend the API of BehaviourBase, so that events are not necessarily \
> consumed when the key binding does not really fire an action. I see that there is \
> some reconstruction underway in this area with RT-21598 [2].
> But from my point of view the simplest thing to do would be to drop the key binding \
> for ENTER in TitledPane all together, which I would like to hereby propose \
> (Solution A-II).
> To fix the minor issue of the hidden focus (B) it should be enough to bind the \
> TitledPane.focusTraversableProperty to TitledPane.collapsibleProperty.
> [2]: Move BehaviorBase into public API - \
> https://javafx-jira.kenai.com/browse/RT-21598
>
> *** Next steps ***
>
> I am unsure of the next steps to take. Does it make sense to create issues for A \
> and B? (Sorry for creating RT-40166 [3] prematurely.)
> Does it make sense to start to work on these issues, or will this be resolved in \
> the course of the work on RT-21598 [2]?
> [3]: https://javafx-jira.kenai.com/browse/RT-40166
>
>
> *** Workaround ***
>
> In the meantime I am using a workaround to customize all TitledPanes after loading \
> the FXML which above.
> The code can be viewed here: TitledPaneCustomizer [4]
> With a small test case here: TitledPaneTest [5]
>
> [4]: https://github.com/ckeimel/fx-utils/blob/master/de.emsw.fx/src/de/emsw/fx/customizer/TitledPaneCustomizer.java
> [5]: https://github.com/ckeimel/fx-utils/blob/master/de.emsw.fx/test/test/de/emsw/fx/customizer/TitledPaneTest.java
>
>
> Thanks for your attention.
>
> Cheers,
> Christoph
> --
> Christoph Keimel
> EM-SOFTWARE GmbH
> Oskar-Messter-Straße 29
> 85737 Ismaning
>
> Tel: 089 / 996547-26
> Fax: 089 / 996547-99
> Internet: http://www.emsw.de
> E-Mail: c.keimel@emsw.de
>
> Geschäftsführer: Dipl.-Inf. (FH) Georg Engl UST-Id-Nr.: DE 131 175 644, HRB 80271 \
> München
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic