Tomas Mikula wrote:


On Tue, Jun 7, 2016 at 6:33 PM, Stefan Fuchs <snfu...@gmx.de <mailto:snfu...@gmx.de>> wrote:

    Hi,

    well, if my dialog would include  a TextField, an cancel- and an
    ok-button, I would obviously want to have the TextField the
    initial focus.

    Once the dialog opens I can immediately type some text.
    When I'm done, I hit enter to confirm the dialog.
    To cancel the dialog i would hit escape.

    Therefor I would prefer the following behavior.

    If the focused control has an action handler attached
    (cancel-Button and ok-Button), enter should trigger its action.
    If the focused control has no action handler attached (TextField),
    the action of the default button should be triggered.


This would be very confusing if you had two TextFields and after entering text into the first one the user hits Enter and the form gets submitted with empty second field.
Well it might be confusing, but that's how traditional Windows dialogs work. You press tab to reach the second textfield. If the second textfield is required, the dialog should refuse to close.

See Windows 7 Taskbar properties dialog as an example.

    Escape always triggers the action of the cancel-Button.

    Stefan



        What about forgetting the whole notion of a "default button"
        and the only
        effect of setting the default property to true being that the
        button will
        start as focused?

        So I add a question:

        3) Would anyone miss the "default button"?

        Tomas

        On Tue, Jun 7, 2016 at 5:47 PM, Jonathan Giles
        <jonathan.gi...@oracle.com <mailto:jonathan.gi...@oracle.com>>
        wrote:

            Hi all,

            One thing I've been looking into recently is the issue of
            what the Enter
            key should do when it is pushed with regards to buttons in
            a UI where one
            of those buttons is a 'default' button. There are number
            of Jira issues on
            this topic, and I wanted to poll the community to
            understand its opinions.

            The current situation is that the Enter key does not fire
            the focused
            Button. The Enter key is reserved for firing the 'default'
            Button in the UI
            (i.e. if someone has created a Button instance with the
            default property
            set to true). A default button is rendered slightly
            differently (in Modena
            it is blue for example). To fire the focused Button, the
            user must press
            the Space key.

            Tom Schindl filed a bug (JDK-8139510) that is a good
            example of the
            'problem' this creates. In the bug report, a dialog is
            shown to the user.
            In the dialog is an OK button and a Cancel button. The OK
            button has been
            made the 'default' button. Regardless of which button has
            focus, the Enter
            key always fires the OK button. The only way to fire the
            Cancel button is
            via the Space key. This can be very confusing for users
            who have tabbed
            specifically to the 'Cancel' button and then pressed the
            Enter key, only to
            find they unwittingly fired the 'OK' action.

            To me this has always been a little counter-intuitive,
            because of my
            heritage as a long-time Windows user. I believe Linux is
            much the same as
            Windows. For others who grew up on Mac, I'm less sure on
            what people expect
            (but it seems to be that the Enter key fires the default
            button, not the
            focused button, i.e. JavaFX current behavior matches what
            is expected on OS
            X).

            What I'm proposing we do is to change the behavior as follows:

            1) On OS X we do not change behavior at all - we keep the
            current 'Enter
            means default' and 'Space means focus' semantics.

            2) On non-OS X platforms, we change the behavior so that
            Enter (and Space)
            will fire the _focused_ key, if one is focused. If no
            Button is focused
            (e.g. focus is in a TextField, etc), then Enter will work
            as it currently
            does and fire the default button, if one is specified. In
            short, default
            buttons will still be rendered blue to hint to the user
            that they are the
            default button, but they will be less prevalently fired by
            Enter key
            presses - only when they also have focus.

            The two questions that I have are:

            1) Will this confuse users when there is a behavior change
            (and
            presumably, this change will be made in JDK 9 and not
            backported to JDK 8).
            If it will confuse users, is it still the right thing to do?

            2) Do we want to have different behaviors for OS X and
            non-OS X? I'm a
            newly inducted member into the cult of Mac, and I don't
            yet have all my
            bearings sorted out, so I don't have a strong opinion here.

            Your thoughts, as always, are appreciated.
            -- Jonathan




Reply via email to