1 /*
2 * Copyright (c) 2011, 2018, 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
479 return;
480 }
481 spinner = eventToSpinner(e);
482 autoRepeatTimer.start();
483
484 focusSpinnerIfNecessary();
485 }
486
487 @Override
488 public void mouseReleased(final MouseEvent e) {
489 autoRepeatTimer.stop();
490 spinner = null;
491 }
492
493 @Override
494 public void mouseClicked(final MouseEvent e) {
495 }
496
497 @Override
498 public void mouseEntered(final MouseEvent e) {
499 }
500
501 @Override
502 public void mouseExited(final MouseEvent e) {
503 }
504
505 /**
506 * Requests focus on a child of the spinner if the spinner doesn't have
507 * focus.
508 */
509 private void focusSpinnerIfNecessary() {
510 final Component fo = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
511 if (!spinner.isRequestFocusEnabled() || (fo != null && (SwingUtilities.isDescendingFrom(fo, spinner)))) {
512 return;
513 }
514 Container root = spinner;
515
516 if (!root.isFocusCycleRoot()) {
517 root = root.getFocusCycleRootAncestor();
518 }
519
520 if (root == null) {
521 return;
522 }
|
1 /*
2 * Copyright (c) 2011, 2019, 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
479 return;
480 }
481 spinner = eventToSpinner(e);
482 autoRepeatTimer.start();
483
484 focusSpinnerIfNecessary();
485 }
486
487 @Override
488 public void mouseReleased(final MouseEvent e) {
489 autoRepeatTimer.stop();
490 spinner = null;
491 }
492
493 @Override
494 public void mouseClicked(final MouseEvent e) {
495 }
496
497 @Override
498 public void mouseEntered(final MouseEvent e) {
499 if (spinner != null && !autoRepeatTimer.isRunning() && spinner == eventToSpinner(e)) {
500 autoRepeatTimer.start();
501 }
502 }
503
504 @Override
505 public void mouseExited(final MouseEvent e) {
506 if (autoRepeatTimer.isRunning()) {
507 autoRepeatTimer.stop();
508 }
509 }
510
511 /**
512 * Requests focus on a child of the spinner if the spinner doesn't have
513 * focus.
514 */
515 private void focusSpinnerIfNecessary() {
516 final Component fo = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
517 if (!spinner.isRequestFocusEnabled() || (fo != null && (SwingUtilities.isDescendingFrom(fo, spinner)))) {
518 return;
519 }
520 Container root = spinner;
521
522 if (!root.isFocusCycleRoot()) {
523 root = root.getFocusCycleRootAncestor();
524 }
525
526 if (root == null) {
527 return;
528 }
|