RFC: new property in ToggleGroup

Michael Strauß michaelstrau2 at gmail.com
Sat Jan 21 19:26:36 UTC 2023


Sure, checkboxes allow multiple selection in general, but as I've
said, I've come across lots of examples where applications use
radio-like checkboxes to do precisely what Andy proposed: create a
group of toggles where either one toggle or no toggle can be selected
at any given time. I'm not saying that this is a great UX, I'm saying
that this is a common thing in many applications. That's in stark
contrast to a deselectable group of RadioButtons, which I haven't come
across in any application that I know.

While one could use ToggleButtons for that, ToggleButtons are not
CheckBoxes. They look different out of the box, and require
unintuitive re-styling to make them look like CheckBoxes.
My point is this: if it looks like a CheckBox, it should also _be_ a
CheckBox. In this case, that's as easy as acknowledging that a
CheckBox is, indeed, a Toggle.

I don't think that the indeterminate state is a problem here. For the
"group of one or zero toggles" scenario, one would simply disallow the
indeterminate state.
If the indeterminate state is allowed, no conflict occurs: upon
automatic deselection, the ToggleGroup would set
CheckBox.selected=false, while CheckBox.indeterminate would remain
true.
That doesn't make a lot of sense from a UI perspective, but it's not
something that would happen by accident. After all,
CheckBox.allowIndeterminate is false by default.

On Sat, Jan 21, 2023 at 7:19 PM Nir Lisker <nlisker at gmail.com> wrote:
>
> We already have ToggleButton:
>
>> Unlike RadioButtons, ToggleButtons in a ToggleGroup do not attempt to force at least one selected ToggleButton in the group.
>>
>> That is, if a ToggleButton is selected, clicking on it will cause it to become unselected.
>>
>> With RadioButton, clicking on the selected button in the group will have no effect.
>
>
> Checkboxes tend to allow multiple selection ("select all items that apply to you"), which means they don't need to toggle each other, they are independent. They also have indeterminate states, which I don't know how to address regarding ToggleGroup selection policies.
>
> On Sat, Jan 21, 2023 at 6:33 PM Michael Strauß <michaelstrau2 at gmail.com> wrote:
>>
>> My expectation with radio groups is that they may start out initially
>> unselected, but once a selection has been made, no user interaction
>> can unselect all toggles again.
>> I don't see any compelling reason to change that. If the group needs
>> to be reset to its initial state, that's as easy as calling
>> `toggleGroup.selectToggle(null)`.
>>
>> However, what you're describing sounds to me like a group of
>> checkboxes. I've seen this type of grouping many times in various
>> applications, and checkboxes are generally understood to be
>> deselectable.
>> So my question is: why don't we instead have CheckBox implement
>> Toggle, allowing it to be used with ToggleGroup? That would make it
>> possible to create a deselectable group of toggles.
>>
>> On Fri, Jan 20, 2023 at 8:31 PM Andy Goryachev
>> <andy.goryachev at oracle.com> 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


More information about the openjfx-dev mailing list