modules/controls/src/main/java/com/sun/javafx/scene/control/behavior/SplitMenuButtonBehavior.java

Print this page
rev 9240 : 8076423: JEP 253: Prepare JavaFX UI Controls & CSS APIs for Modularization

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.  Oracle designates this

@@ -24,12 +24,12 @@
  */
 
 package com.sun.javafx.scene.control.behavior;
 
 import javafx.scene.control.SplitMenuButton;
-import java.util.ArrayList;
-import java.util.List;
+import com.sun.javafx.scene.control.inputmap.InputMap;
+
 import static javafx.scene.input.KeyCode.ENTER;
 import static javafx.scene.input.KeyCode.SPACE;
 import static javafx.scene.input.KeyEvent.KEY_PRESSED;
 import static javafx.scene.input.KeyEvent.KEY_RELEASED;
 

@@ -48,33 +48,38 @@
      * Creates a new SplitMenuButtonBehavior for the given SplitMenuButton.
      *
      * @param splitMenuButton the SplitMenuButton
      */
     public SplitMenuButtonBehavior(final SplitMenuButton splitMenuButton) {
-        super(splitMenuButton, SPLIT_MENU_BUTTON_BINDINGS);
+        super(splitMenuButton);
+
+        /**
+         * The key bindings for the SplitMenuButton. Sets the Enter key as the means
+         * to open the menu and the space key as the means to activate the action.
+         */
+        addDefaultMapping(new InputMap.KeyMapping(SPACE, KEY_PRESSED, this::keyPressed));
+        addDefaultMapping(new InputMap.KeyMapping(SPACE, KEY_RELEASED, this::keyReleased));
+        addDefaultMapping(new InputMap.KeyMapping(ENTER, KEY_PRESSED, this::keyPressed));
+        addDefaultMapping(new InputMap.KeyMapping(ENTER, KEY_RELEASED, this::keyReleased));
     }
 
     /***************************************************************************
      *                                                                         *
      * Key event handling                                                      *
      *                                                                         *
      **************************************************************************/
 
-    /**
-     * The key bindings for the SplitMenuButton. Sets the Enter key as the means
-     * to open the menu and the space key as the means to activate the action.
-     */
-    protected static final List<KeyBinding> SPLIT_MENU_BUTTON_BINDINGS = new ArrayList<KeyBinding>();
-    static {
-        SPLIT_MENU_BUTTON_BINDINGS.addAll(BASE_MENU_BUTTON_BINDINGS);
-
-        /*
-         * TODO: ButtonBehavior should define "Press" and "Release" in
-         * constants.
-         */
-        SPLIT_MENU_BUTTON_BINDINGS.add(new KeyBinding(SPACE, KEY_PRESSED, "Press"));
-        SPLIT_MENU_BUTTON_BINDINGS.add(new KeyBinding(SPACE, KEY_RELEASED, "Release"));
-
-        SPLIT_MENU_BUTTON_BINDINGS.add(new KeyBinding(ENTER, KEY_PRESSED,  "Press"));
-        SPLIT_MENU_BUTTON_BINDINGS.add(new KeyBinding(ENTER, KEY_RELEASED, "Release"));
-    }
+//    /**
+//     * The key bindings for the SplitMenuButton. Sets the Enter key as the means
+//     * to open the menu and the space key as the means to activate the action.
+//     */
+//    protected static final List<KeyBinding> SPLIT_MENU_BUTTON_BINDINGS = new ArrayList<KeyBinding>();
+//    static {
+//        SPLIT_MENU_BUTTON_BINDINGS.addAll(BASE_MENU_BUTTON_BINDINGS);
+//
+//        SPLIT_MENU_BUTTON_BINDINGS.add(new KeyBinding(SPACE, KEY_PRESSED, "Press"));
+//        SPLIT_MENU_BUTTON_BINDINGS.add(new KeyBinding(SPACE, KEY_RELEASED, "Release"));
+//
+//        SPLIT_MENU_BUTTON_BINDINGS.add(new KeyBinding(ENTER, KEY_PRESSED,  "Press"));
+//        SPLIT_MENU_BUTTON_BINDINGS.add(new KeyBinding(ENTER, KEY_RELEASED, "Release"));
+//    }
 }