On 1/20/2023 2:57 PM, Andy Goryachev wrote:
I just want to add one thing - the initial state of RadioMenuItems
added to a menu is unselected, even if they belong to a ToggleGroup.
One can say that having all unselected radio buttons in a toggle group
makes no sense, or perhaps it depends on the application requirements
- though I cannot find an example where it might be needed.
Yes, it's initially unselected unless the app makes an explicit
selection. HTML radio buttons work the same way [1]. Some apps use that
to indicate that nothing was selected, but then once you select it there
will always be something selected.
So either we allow two different policies by adding a property to the
ToggleGroup, or we proclaim that adding a radio button to a toggle
group must have a side effect of one (first) button to be
automatically selected, otherwise the whole group is in inconsistent
state (or the app developer must write some code to select one).
I wouldn't want to change the default behavior, since I can imagine some
apps relying on being able to tell if the user has ever selected any of
the choices.
Having two properties would be one solution, presuming we think that we
need to provide a way for the app to indicate that it wants us to
enforce the invariant of ensuring that the app can't ever get the
control in a state where nothing is selected. Although, since it would
be an opt-in, the app could just as easily set the default itself as
opposed to setting this new property.
-- Kevin
[1]
https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_input_type_radio
-andy
*From: *openjfx-dev <openjfx-dev-r...@openjdk.org> on behalf of Kevin
Rushforth <kevin.rushfo...@oracle.com>
*Date: *Friday, 2023/01/20 at 12:27
*To: *openjfx-dev@openjdk.org <openjfx-dev@openjdk.org>
*Subject: *Re: RFC: new property in ToggleGroup
How common a UI feature is being able to deselect the selected item in
a ToggleGroup via the UI such that no item is selected? I don't
normally see that in various apps or toolkits that I am familiar with.
What I do see is that either a default item is selected or no item is
selected initially (which is the one and only time that there will be
no item selected), but in both case, once you make a selection, there
is no way via the UI to deselect the current item. Absent a compelling
need, I think the current behavior (once the fix for JDK-8237505 is
integrated) is sufficient.
What do other developers think?
-- Kevin
On 1/20/2023 11:31 AM, Andy Goryachev wrote:
Dear colleagues:
In the context of a recent PR
https://bugs.openjdk.org/browse/JDK-8237505
https://github.com/openjdk/jfx/pull/1002
https://stackoverflow.com/questions/57911107/javafx-togglegroup-not-functioning-properly-with-accelerators-radiomenuitem
where a number of RadioMenuItems belonging to a toggle group are
added to the menu, we might want to add a new property to the
ToggleGroup which controls whether all items in a group can be
deselected.
If this property is set, a selected radio menu item can be
deselected via either keyboard accelerator or a mouse click. If
not, then not only this operation cannot be performed, but also
the first item added to said ToggleGroup gets automatically selected.
This should allow for more flexibility in creating menus with
RadioMenuItems, but eliminate some boilerplate code required in
such cases.
The new logic would also affect any Toggle, such as ToggleButton.
What do you think? Thank you.
-andy