--- old/modules/controls/src/main/java/com/sun/javafx/scene/control/behavior/TitledPaneBehavior.java 2015-09-03 14:50:31.785494600 -0700 +++ new/modules/controls/src/main/java/com/sun/javafx/scene/control/behavior/TitledPaneBehavior.java 2015-09-03 14:50:31.147458100 -0700 @@ -26,60 +26,81 @@ package com.sun.javafx.scene.control.behavior; import javafx.scene.control.TitledPane; +import com.sun.javafx.scene.control.inputmap.InputMap; import javafx.scene.input.MouseEvent; -import java.util.ArrayList; -import java.util.List; -import static javafx.scene.input.KeyCode.ENTER; + import static javafx.scene.input.KeyCode.SPACE; public class TitledPaneBehavior extends BehaviorBase { - private TitledPane titledPane; + private final TitledPane titledPane; + private final InputMap inputMap; public TitledPaneBehavior(TitledPane pane) { - super(pane, TITLEDPANE_BINDINGS); + super(pane); this.titledPane = pane; - } - /*************************************************************************** - * * - * Key event handling * - * * - **************************************************************************/ + // create a map for titledPane-specific mappings (this reuses the default + // InputMap installed on the control, if it is non-null, allowing us to pick up any user-specified mappings) + inputMap = createInputMap(); - private static final String PRESS_ACTION = "Press"; + // add focus traversal mappings + addDefaultMapping(inputMap, FocusTraversalInputMap.getFocusTraversalMappings()); - protected static final List TITLEDPANE_BINDINGS = new ArrayList(); - static { // ENTER should not be a key binding for TitledPane, as this is the // key reserved for the default button. See RT-40166 for more detail. - // TITLEDPANE_BINDINGS.add(new KeyBinding(ENTER, PRESS_ACTION)); - TITLEDPANE_BINDINGS.add(new KeyBinding(SPACE, PRESS_ACTION)); + addDefaultMapping( + new InputMap.KeyMapping(SPACE, e -> { + if (titledPane.isCollapsible() && titledPane.isFocused()) { + titledPane.setExpanded(!titledPane.isExpanded()); + titledPane.requestFocus(); + } + }), + new InputMap.MouseMapping(MouseEvent.MOUSE_PRESSED, this::mousePressed) + ); } - @Override protected void callAction(String name) { - switch (name) { - case PRESS_ACTION: - if (titledPane.isCollapsible() && titledPane.isFocused()) { - titledPane.setExpanded(!titledPane.isExpanded()); - titledPane.requestFocus(); - } - break; - default: - super.callAction(name); - } + @Override public InputMap getInputMap() { + return inputMap; } /*************************************************************************** * * + * Key event handling * + * * + **************************************************************************/ + +// private static final String PRESS_ACTION = "Press"; +// +// protected static final List TITLEDPANE_BINDINGS = new ArrayList(); +// static { +// // ENTER should not be a key binding for TitledPane, as this is the +// // key reserved for the default button. See RT-40166 for more detail. +// // TITLEDPANE_BINDINGS.add(new KeyBinding(ENTER, PRESS_ACTION)); +// TITLEDPANE_BINDINGS.add(new KeyBinding(SPACE, PRESS_ACTION)); +// } +// +// @Override protected void callAction(String name) { +// switch (name) { +// case PRESS_ACTION: +// if (titledPane.isCollapsible() && titledPane.isFocused()) { +// titledPane.setExpanded(!titledPane.isExpanded()); +// titledPane.requestFocus(); +// } +// break; +// default: +// super.callAction(name); +// } +// } + + /*************************************************************************** + * * * Mouse event handling * * * **************************************************************************/ - @Override public void mousePressed(MouseEvent e) { - super.mousePressed(e); - TitledPane tp = getControl(); - tp.requestFocus(); + public void mousePressed(MouseEvent e) { + getNode().requestFocus(); } /**************************************************************************