1 /*
2 * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package com.sun.javafx.scene.control.behavior;
27
28 import javafx.scene.control.SplitMenuButton;
29 import java.util.ArrayList;
30 import java.util.List;
31 import static javafx.scene.input.KeyCode.ENTER;
32 import static javafx.scene.input.KeyCode.SPACE;
33 import static javafx.scene.input.KeyEvent.KEY_PRESSED;
34 import static javafx.scene.input.KeyEvent.KEY_RELEASED;
35
36 /**
37 * Behavior for SplitMenuButton.
38 */
39 public class SplitMenuButtonBehavior extends MenuButtonBehaviorBase<SplitMenuButton> {
40
41 /***************************************************************************
42 * *
43 * Constructors *
44 * *
45 **************************************************************************/
46
47 /**
48 * Creates a new SplitMenuButtonBehavior for the given SplitMenuButton.
49 *
50 * @param splitMenuButton the SplitMenuButton
51 */
52 public SplitMenuButtonBehavior(final SplitMenuButton splitMenuButton) {
53 super(splitMenuButton, SPLIT_MENU_BUTTON_BINDINGS);
54 }
55
56 /***************************************************************************
57 * *
58 * Key event handling *
59 * *
60 **************************************************************************/
61
62 /**
63 * The key bindings for the SplitMenuButton. Sets the Enter key as the means
64 * to open the menu and the space key as the means to activate the action.
65 */
66 protected static final List<KeyBinding> SPLIT_MENU_BUTTON_BINDINGS = new ArrayList<KeyBinding>();
67 static {
68 SPLIT_MENU_BUTTON_BINDINGS.addAll(BASE_MENU_BUTTON_BINDINGS);
69
70 /*
71 * TODO: ButtonBehavior should define "Press" and "Release" in
72 * constants.
73 */
74 SPLIT_MENU_BUTTON_BINDINGS.add(new KeyBinding(SPACE, KEY_PRESSED, "Press"));
75 SPLIT_MENU_BUTTON_BINDINGS.add(new KeyBinding(SPACE, KEY_RELEASED, "Release"));
76
77 SPLIT_MENU_BUTTON_BINDINGS.add(new KeyBinding(ENTER, KEY_PRESSED, "Press"));
78 SPLIT_MENU_BUTTON_BINDINGS.add(new KeyBinding(ENTER, KEY_RELEASED, "Release"));
79 }
80 }
|
1 /*
2 * Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package com.sun.javafx.scene.control.behavior;
27
28 import javafx.scene.control.SplitMenuButton;
29 import com.sun.javafx.scene.control.inputmap.InputMap;
30
31 import static javafx.scene.input.KeyCode.ENTER;
32 import static javafx.scene.input.KeyCode.SPACE;
33 import static javafx.scene.input.KeyEvent.KEY_PRESSED;
34 import static javafx.scene.input.KeyEvent.KEY_RELEASED;
35
36 /**
37 * Behavior for SplitMenuButton.
38 */
39 public class SplitMenuButtonBehavior extends MenuButtonBehaviorBase<SplitMenuButton> {
40
41 /***************************************************************************
42 * *
43 * Constructors *
44 * *
45 **************************************************************************/
46
47 /**
48 * Creates a new SplitMenuButtonBehavior for the given SplitMenuButton.
49 *
50 * @param splitMenuButton the SplitMenuButton
51 */
52 public SplitMenuButtonBehavior(final SplitMenuButton splitMenuButton) {
53 super(splitMenuButton);
54
55 /**
56 * The key bindings for the SplitMenuButton. Sets the Enter key as the means
57 * to open the menu and the space key as the means to activate the action.
58 */
59 addDefaultMapping(new InputMap.KeyMapping(SPACE, KEY_PRESSED, this::keyPressed));
60 addDefaultMapping(new InputMap.KeyMapping(SPACE, KEY_RELEASED, this::keyReleased));
61 addDefaultMapping(new InputMap.KeyMapping(ENTER, KEY_PRESSED, this::keyPressed));
62 addDefaultMapping(new InputMap.KeyMapping(ENTER, KEY_RELEASED, this::keyReleased));
63 }
64
65 /***************************************************************************
66 * *
67 * Key event handling *
68 * *
69 **************************************************************************/
70
71 // /**
72 // * The key bindings for the SplitMenuButton. Sets the Enter key as the means
73 // * to open the menu and the space key as the means to activate the action.
74 // */
75 // protected static final List<KeyBinding> SPLIT_MENU_BUTTON_BINDINGS = new ArrayList<KeyBinding>();
76 // static {
77 // SPLIT_MENU_BUTTON_BINDINGS.addAll(BASE_MENU_BUTTON_BINDINGS);
78 //
79 // SPLIT_MENU_BUTTON_BINDINGS.add(new KeyBinding(SPACE, KEY_PRESSED, "Press"));
80 // SPLIT_MENU_BUTTON_BINDINGS.add(new KeyBinding(SPACE, KEY_RELEASED, "Release"));
81 //
82 // SPLIT_MENU_BUTTON_BINDINGS.add(new KeyBinding(ENTER, KEY_PRESSED, "Press"));
83 // SPLIT_MENU_BUTTON_BINDINGS.add(new KeyBinding(ENTER, KEY_RELEASED, "Release"));
84 // }
85 }
|