diff --git a/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/DatePickerContent.java b/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/DatePickerContent.java index 761887a16de..a224319a80f 100644 --- a/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/DatePickerContent.java +++ b/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/DatePickerContent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2022, 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 @@ -66,6 +66,7 @@ import com.sun.javafx.scene.control.skin.resources.ControlResources; import com.sun.javafx.scene.traversal.Direction; +import com.sun.javafx.scene.traversal.TraversalMethod; import static com.sun.javafx.PlatformUtil.*; import com.sun.javafx.scene.NodeHelper; @@ -170,7 +171,7 @@ public DatePickerContent(final DatePicker datePicker) { if (newFocusOwner == gridPane) { if (oldFocusOwner instanceof DateCell) { // Backwards traversal, skip gridPane. - NodeHelper.traverse(gridPane, Direction.PREVIOUS); + NodeHelper.traverse(gridPane, Direction.PREVIOUS, TraversalMethod.DEFAULT); } else { // Forwards traversal, pass focus to day cell. if (lastFocusedDayCell != null) { diff --git a/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/ButtonBehavior.java b/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/ButtonBehavior.java index e485c83e539..95898b157be 100644 --- a/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/ButtonBehavior.java +++ b/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/ButtonBehavior.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2022, 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 @@ -178,8 +178,7 @@ protected void keyReleased(KeyEvent e) { * potentially arming the Button, this will transfer focus to the button */ protected void mousePressed(MouseEvent e) { - // if the button is not already focused, then request the focus - if (! getNode().isFocused() && getNode().isFocusTraversable()) { + if (getNode().isFocusTraversable()) { getNode().requestFocus(); } diff --git a/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/FocusTraversalInputMap.java b/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/FocusTraversalInputMap.java index 0ea6bc8907c..afbf06136b3 100644 --- a/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/FocusTraversalInputMap.java +++ b/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/FocusTraversalInputMap.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2022, 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 @@ -26,6 +26,7 @@ import com.sun.javafx.scene.NodeHelper; import com.sun.javafx.scene.traversal.Direction; +import com.sun.javafx.scene.traversal.TraversalMethod; import javafx.event.EventTarget; import javafx.scene.Node; import com.sun.javafx.scene.control.inputmap.InputMap; @@ -86,13 +87,14 @@ public static InputMap createInputMap(N node) { * * @param node The node to traverse on * @param dir The direction to traverse + * @param method The focus traversal method */ - public static void traverse(final Node node, final Direction dir) { + public static void traverse(final Node node, final Direction dir, TraversalMethod method) { if (node == null) { throw new IllegalArgumentException("Attempting to traverse on a null Node. " + "Most probably a KeyEvent has been fired with a null target specified."); } - NodeHelper.traverse(node, dir); + NodeHelper.traverse(node, dir, method); } /** @@ -100,7 +102,7 @@ public static void traverse(final Node node, final Direction dir) { * go the next focusTraversable Node above the current one. */ public static final void traverseUp(KeyEvent e) { - traverse(getNode(e), com.sun.javafx.scene.traversal.Direction.UP); + traverse(getNode(e), com.sun.javafx.scene.traversal.Direction.UP, TraversalMethod.KEY); } /** @@ -108,7 +110,7 @@ public static final void traverseUp(KeyEvent e) { * go the next focusTraversable Node below the current one. */ public static final void traverseDown(KeyEvent e) { - traverse(getNode(e), com.sun.javafx.scene.traversal.Direction.DOWN); + traverse(getNode(e), com.sun.javafx.scene.traversal.Direction.DOWN, TraversalMethod.KEY); } /** @@ -116,7 +118,7 @@ public static final void traverseDown(KeyEvent e) { * go the next focusTraversable Node left of the current one. */ public static final void traverseLeft(KeyEvent e) { - traverse(getNode(e), com.sun.javafx.scene.traversal.Direction.LEFT); + traverse(getNode(e), com.sun.javafx.scene.traversal.Direction.LEFT, TraversalMethod.KEY); } /** @@ -124,7 +126,7 @@ public static final void traverseLeft(KeyEvent e) { * go the next focusTraversable Node right of the current one. */ public static final void traverseRight(KeyEvent e) { - traverse(getNode(e), com.sun.javafx.scene.traversal.Direction.RIGHT); + traverse(getNode(e), com.sun.javafx.scene.traversal.Direction.RIGHT, TraversalMethod.KEY); } /** @@ -132,7 +134,7 @@ public static final void traverseRight(KeyEvent e) { * go the next focusTraversable Node in the focus traversal cycle. */ public static final void traverseNext(KeyEvent e) { - traverse(getNode(e), com.sun.javafx.scene.traversal.Direction.NEXT); + traverse(getNode(e), com.sun.javafx.scene.traversal.Direction.NEXT, TraversalMethod.KEY); } /** @@ -140,7 +142,7 @@ public static final void traverseNext(KeyEvent e) { * go the previous focusTraversable Node in the focus traversal cycle. */ public static final void traversePrevious(KeyEvent e) { - traverse(getNode(e), com.sun.javafx.scene.traversal.Direction.PREVIOUS); + traverse(getNode(e), com.sun.javafx.scene.traversal.Direction.PREVIOUS, TraversalMethod.KEY); } private static Node getNode(KeyEvent e) { diff --git a/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/SliderBehavior.java b/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/SliderBehavior.java index 3d0ea3087fc..45ecc5a763f 100644 --- a/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/SliderBehavior.java +++ b/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/SliderBehavior.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2022, 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 @@ -109,8 +109,7 @@ public void trackPress(MouseEvent e, double position) { // determine the percentage of the way between min and max // represented by this mouse event final Slider slider = getNode(); - // If not already focused, request focus - if (!slider.isFocused()) slider.requestFocus(); + slider.requestFocus(); if (slider.getOrientation().equals(Orientation.HORIZONTAL)) { slider.adjustValue(position * (slider.getMax() - slider.getMin()) + slider.getMin()); } else { @@ -123,9 +122,8 @@ public void trackPress(MouseEvent e, double position) { * track and 1.0 being the end */ public void thumbPressed(MouseEvent e, double position) { - // If not already focused, request focus final Slider slider = getNode(); - if (!slider.isFocused()) slider.requestFocus(); + slider.requestFocus(); slider.setValueChanging(true); } diff --git a/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/TwoLevelFocusBehavior.java b/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/TwoLevelFocusBehavior.java index 89fa52b46f7..d84b9141cbd 100644 --- a/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/TwoLevelFocusBehavior.java +++ b/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/TwoLevelFocusBehavior.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2022, 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 @@ -26,6 +26,7 @@ package com.sun.javafx.scene.control.behavior; import com.sun.javafx.scene.NodeHelper; +import com.sun.javafx.scene.traversal.TraversalMethod; import javafx.css.PseudoClass; import javafx.scene.Node; import javafx.scene.control.Control; @@ -104,27 +105,27 @@ public void dispose() { switch (((KeyEvent)event).getCode()) { case TAB : if (((KeyEvent)event).isShiftDown()) { - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.PREVIOUS); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.PREVIOUS, TraversalMethod.KEY); } else { - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.NEXT); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.NEXT, TraversalMethod.KEY); } event.consume(); break; case UP : - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.UP); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.UP, TraversalMethod.KEY); event.consume(); break; case DOWN : - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.DOWN); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.DOWN, TraversalMethod.KEY); event.consume(); break; case LEFT : - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.LEFT); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.LEFT, TraversalMethod.KEY); event.consume(); break; case RIGHT : - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.RIGHT); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.RIGHT, TraversalMethod.KEY); event.consume(); break; case ENTER : diff --git a/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/TwoLevelFocusComboBehavior.java b/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/TwoLevelFocusComboBehavior.java index fa489275156..11def1aaa90 100644 --- a/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/TwoLevelFocusComboBehavior.java +++ b/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/TwoLevelFocusComboBehavior.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2022, 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 @@ -26,6 +26,7 @@ package com.sun.javafx.scene.control.behavior; import com.sun.javafx.scene.NodeHelper; +import com.sun.javafx.scene.traversal.TraversalMethod; import javafx.scene.Node; import javafx.scene.Scene; @@ -84,27 +85,27 @@ public void dispose() { switch (((KeyEvent)event).getCode()) { case TAB : if (((KeyEvent)event).isShiftDown()) { - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.PREVIOUS); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.PREVIOUS, TraversalMethod.KEY); } else { - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.NEXT); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.NEXT, TraversalMethod.KEY); } event.consume(); break; case UP : - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.UP); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.UP, TraversalMethod.KEY); event.consume(); break; case DOWN : - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.DOWN); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.DOWN, TraversalMethod.KEY); event.consume(); break; case LEFT : - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.LEFT); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.LEFT, TraversalMethod.KEY); event.consume(); break; case RIGHT : - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.RIGHT); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.RIGHT, TraversalMethod.KEY); event.consume(); break; case ENTER : diff --git a/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/TwoLevelFocusListBehavior.java b/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/TwoLevelFocusListBehavior.java index 50c106a6dce..7ba7b82cf1f 100644 --- a/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/TwoLevelFocusListBehavior.java +++ b/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/TwoLevelFocusListBehavior.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2022, 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 @@ -27,6 +27,7 @@ import com.sun.javafx.scene.NodeHelper; import com.sun.javafx.scene.control.Properties; +import com.sun.javafx.scene.traversal.TraversalMethod; import javafx.scene.Node; import javafx.scene.Parent; @@ -86,27 +87,27 @@ public void dispose() { switch (((KeyEvent)event).getCode()) { case TAB : if (((KeyEvent)event).isShiftDown()) { - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.PREVIOUS); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.PREVIOUS, TraversalMethod.KEY); } else { - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.NEXT); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.NEXT, TraversalMethod.KEY); } event.consume(); break; case UP : - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.UP); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.UP, TraversalMethod.KEY); event.consume(); break; case DOWN : - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.DOWN); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.DOWN, TraversalMethod.KEY); event.consume(); break; case LEFT : - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.LEFT); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.LEFT, TraversalMethod.KEY); event.consume(); break; case RIGHT : - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.RIGHT); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.RIGHT, TraversalMethod.KEY); event.consume(); break; case ENTER : diff --git a/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/TwoLevelFocusPopupBehavior.java b/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/TwoLevelFocusPopupBehavior.java index 8b1b599036b..aae8c731a72 100644 --- a/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/TwoLevelFocusPopupBehavior.java +++ b/modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/behavior/TwoLevelFocusPopupBehavior.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2022, 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 @@ -26,6 +26,7 @@ package com.sun.javafx.scene.control.behavior; import com.sun.javafx.scene.NodeHelper; +import com.sun.javafx.scene.traversal.TraversalMethod; import javafx.scene.Node; import javafx.scene.control.PopupControl; @@ -105,27 +106,27 @@ public void dispose() { switch (((KeyEvent)event).getCode()) { case TAB : if (((KeyEvent)event).isShiftDown()) { - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.PREVIOUS); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.PREVIOUS, TraversalMethod.KEY); } else { - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.NEXT); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.NEXT, TraversalMethod.KEY); } event.consume(); break; case UP : - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.UP); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.UP, TraversalMethod.KEY); event.consume(); break; case DOWN : - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.DOWN); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.DOWN, TraversalMethod.KEY); event.consume(); break; case LEFT : - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.LEFT); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.LEFT, TraversalMethod.KEY); event.consume(); break; case RIGHT : - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.RIGHT); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.RIGHT, TraversalMethod.KEY); event.consume(); break; case ENTER : @@ -165,26 +166,26 @@ public void dispose() { break; case LEFT : if (obj instanceof Node) { - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.LEFT); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.LEFT, TraversalMethod.KEY); event.consume(); } else if (obj instanceof Scene) { Node node = ((Scene)obj).getFocusOwner(); if (node != null) { - NodeHelper.traverse(node, com.sun.javafx.scene.traversal.Direction.LEFT); + NodeHelper.traverse(node, com.sun.javafx.scene.traversal.Direction.LEFT, TraversalMethod.KEY); event.consume(); } } break; case RIGHT : if (obj instanceof Node) { - NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.RIGHT); + NodeHelper.traverse((Node) obj, com.sun.javafx.scene.traversal.Direction.RIGHT, TraversalMethod.KEY); event.consume(); } else if (obj instanceof Scene) { Node node = ((Scene)obj).getFocusOwner(); if (node != null) { - NodeHelper.traverse(node, com.sun.javafx.scene.traversal.Direction.RIGHT); + NodeHelper.traverse(node, com.sun.javafx.scene.traversal.Direction.RIGHT, TraversalMethod.KEY); event.consume(); } } diff --git a/modules/javafx.graphics/src/main/docs/javafx/scene/doc-files/cssref.html b/modules/javafx.graphics/src/main/docs/javafx/scene/doc-files/cssref.html index d6fd0d75a98..77fa51a7425 100644 --- a/modules/javafx.graphics/src/main/docs/javafx/scene/doc-files/cssref.html +++ b/modules/javafx.graphics/src/main/docs/javafx/scene/doc-files/cssref.html @@ -2,7 +2,7 @@