Vi.
Vi.

Reputation: 38762

Both ENTER shortcut and TextArea in Vaadin

TextField f = new TextField();
Button b = new Button("Save");
b.setClickShortcut(KeyCode.ENTER); // For quick saving from text field itself

TextArea longText = new TextArea(); // "Enter" is garbled here

Hot to make the shortcut to work only in the from text field?

Upvotes: 5

Views: 3991

Answers (4)

Brett Sutton
Brett Sutton

Reputation: 4584

As of Vaadin 23 (and probably for sometime before) the requirements have changed again.


private ShortcutRegistration primaryShortCut;

void customShortCutHandling()
    {
        myTextAreaField.addFocusListener((e) ->
            {
                System.out.println("disable");
                primaryShortCut = primaryButton.addClickShortcut(Key.ENTER);
            });

        myTextAreaField.addBlurListener((e) ->
            {
                System.out.println("enable");
                primaryShortCut.remove();
            });
    }
}

This code assumes that primaryShortCut was set when the form is created.

Upvotes: 0

Vipul Jain
Vipul Jain

Reputation: 1515

Talking in terms of Vaadin 14, I was looking for the answer and for me, this worked well

  Button search = new Button("Search");
  search.addClickShortcut(Key.ENTER);

Upvotes: 0

Henri Kerola
Henri Kerola

Reputation: 4967

Use focus and blur listeners to remove and add the shortcut key:

    f.addFocusListener(new FocusListener() {
        @Override
        public void focus(FocusEvent event) {
            b.setClickShortcut(KeyCode.ENTER);
        }
    });
    f.addBlurListener(new BlurListener() {
        @Override
        public void blur(BlurEvent event) {
            b.removeClickShortcut();
        }
    });

Upvotes: 10

Mirko Seifert
Mirko Seifert

Reputation: 542

Newer versions of Vaadin require the following code as addListener() is deprecated now.

    f.addFocusListener(new FocusListener() {

        private static final long serialVersionUID = -6733373447805994139L;

        @Override
        public void focus(FocusEvent event) {
            b.setClickShortcut(KeyCode.ENTER);
        }
    });

    f.addBlurListener(new BlurListener() {

        private static final long serialVersionUID = -3673311830300629513L;

        @Override
        public void blur(BlurEvent event) {
            b.removeClickShortcut();
        }
    });

Upvotes: 2

Related Questions