src/java.desktop/macosx/classes/com/apple/laf/AquaButtonRadioUI.java
author kaddepalli
Tue, 14 Aug 2018 12:50:39 -0700
changeset 51454 06417e487a28
parent 47216 71c04702a3d5
permissions -rw-r--r--
8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard. Reviewed-by: prr, serb, psadhukhan, ssadetsky
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12047
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
     1
/*
51454
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
     2
 * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
12047
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
     4
 *
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    10
 *
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    15
 * accompanied this code).
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    16
 *
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    20
 *
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    23
 * questions.
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    24
 */
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    25
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    26
package com.apple.laf;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    27
51454
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    28
import javax.swing.JComponent;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    29
import javax.swing.ImageIcon;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    30
import javax.swing.JRadioButton;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    31
import javax.swing.Icon;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    32
import javax.swing.AbstractButton;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    33
import javax.swing.AbstractAction;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    34
import javax.swing.KeyStroke;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    35
import javax.swing.DefaultButtonModel;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    36
import javax.swing.ButtonGroup;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    37
import javax.swing.ButtonModel;
12047
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    38
import javax.swing.plaf.ComponentUI;
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    39
51454
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    40
import java.awt.Component;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    41
import java.awt.AWTKeyStroke;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    42
import java.awt.KeyboardFocusManager;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    43
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    44
import java.awt.event.ActionEvent;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    45
import java.awt.event.KeyListener;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    46
import java.awt.event.KeyEvent;
12047
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    47
51454
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    48
import apple.laf.JRSUIConstants.Widget;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    49
import com.apple.laf.AquaUtilControlSize.SizeVariant;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    50
import com.apple.laf.AquaUtilControlSize.SizeDescriptor;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    51
import com.apple.laf.AquaUtils.RecyclableSingleton;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    52
import com.apple.laf.AquaUtils.RecyclableSingletonFromDefaultConstructor;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    53
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    54
import java.util.HashSet;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    55
import java.util.Set;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    56
import java.util.Enumeration;
12047
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    57
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    58
public class AquaButtonRadioUI extends AquaButtonLabeledUI {
51454
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    59
    private KeyListener keyListener = null;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    60
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    61
    @SuppressWarnings("serial")
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    62
    private class SelectPreviousBtn extends AbstractAction {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    63
        public SelectPreviousBtn() {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    64
            super("Previous");
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    65
        }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    66
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    67
        @Override
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    68
        public void actionPerformed(ActionEvent e) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    69
            AquaButtonRadioUI.this.selectRadioButton(e, false);
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    70
        }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    71
    }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    72
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    73
    @SuppressWarnings("serial")
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    74
    private class SelectNextBtn extends AbstractAction {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    75
        public SelectNextBtn() {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    76
            super("Next");
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    77
        }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    78
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    79
        @Override
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    80
        public void actionPerformed(ActionEvent e) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    81
            AquaButtonRadioUI.this.selectRadioButton(e, true);
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    82
        }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    83
    }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    84
44351
6bb1d97d5758 8176409: [findbugs] some files under com.apple.laf with variable isn't final but should be
vadim
parents: 25859
diff changeset
    85
    private static final RecyclableSingleton<AquaButtonRadioUI> instance = new RecyclableSingletonFromDefaultConstructor<AquaButtonRadioUI>(AquaButtonRadioUI.class);
6bb1d97d5758 8176409: [findbugs] some files under com.apple.laf with variable isn't final but should be
vadim
parents: 25859
diff changeset
    86
    private static final RecyclableSingleton<ImageIcon> sizingIcon = new RecyclableSingleton<ImageIcon>() {
12047
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    87
        protected ImageIcon getInstance() {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    88
            return new ImageIcon(AquaNativeResources.getRadioButtonSizerImage());
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    89
        }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    90
    };
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    91
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    92
    public static ComponentUI createUI(final JComponent b) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    93
        return instance.get();
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    94
    }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    95
51454
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
    96
    public static Icon getSizingRadioButtonIcon() {
12047
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    97
        return sizingIcon.get();
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    98
    }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
    99
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   100
    protected String getPropertyPrefix() {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   101
        return "RadioButton" + ".";
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   102
    }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   103
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   104
    protected AquaButtonBorder getPainter() {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   105
        return new RadioButtonBorder();
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   106
    }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   107
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   108
    public static class RadioButtonBorder extends LabeledButtonBorder {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   109
        public RadioButtonBorder() {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   110
            super(new SizeDescriptor(new SizeVariant().replaceMargins("RadioButton.margin")));
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   111
            painter.state.set(Widget.BUTTON_RADIO);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   112
        }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   113
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   114
        public RadioButtonBorder(final RadioButtonBorder other) {
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   115
            super(other);
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   116
        }
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   117
    }
51454
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   118
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   119
    private KeyListener createKeyListener() {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   120
        if (keyListener == null) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   121
            keyListener = new KeyHandler();
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   122
        }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   123
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   124
        return keyListener;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   125
    }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   126
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   127
    private boolean isValidRadioButtonObj(Object obj) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   128
        return ((obj instanceof JRadioButton) &&
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   129
                    ((JRadioButton)obj).isVisible() &&
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   130
                    ((JRadioButton)obj).isEnabled());
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   131
    }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   132
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   133
    @Override
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   134
    protected void installListeners(AbstractButton button) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   135
        super.installListeners(button);
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   136
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   137
        //Only for JRadioButton
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   138
        if (!(button instanceof JRadioButton))
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   139
            return;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   140
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   141
        keyListener = createKeyListener();
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   142
        button.addKeyListener(keyListener);
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   143
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   144
        button.setFocusTraversalKeysEnabled(false);
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   145
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   146
        button.getActionMap().put("Previous", new SelectPreviousBtn());
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   147
        button.getActionMap().put("Next", new SelectNextBtn());
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   148
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   149
        button.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   150
            put(KeyStroke.getKeyStroke("UP"), "Previous");
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   151
        button.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   152
            put(KeyStroke.getKeyStroke("DOWN"), "Next");
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   153
        button.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   154
            put(KeyStroke.getKeyStroke("LEFT"), "Previous");
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   155
        button.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   156
            put(KeyStroke.getKeyStroke("RIGHT"), "Next");
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   157
    }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   158
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   159
    @Override
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   160
    protected void uninstallListeners(AbstractButton button) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   161
        super.uninstallListeners(button);
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   162
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   163
        //Only for JRadioButton
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   164
        if (!(button instanceof JRadioButton))
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   165
            return;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   166
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   167
        //Unmap actions from the arrow keys.
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   168
        button.getActionMap().remove("Previous");
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   169
        button.getActionMap().remove("Next");
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   170
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   171
        button.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   172
            remove(KeyStroke.getKeyStroke("UP"));
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   173
        button.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   174
            remove(KeyStroke.getKeyStroke("DOWN"));
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   175
        button.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   176
            remove(KeyStroke.getKeyStroke("LEFT"));
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   177
        button.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   178
            remove(KeyStroke.getKeyStroke("RIGHT"));
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   179
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   180
        if (keyListener != null ) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   181
            button.removeKeyListener(keyListener);
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   182
            keyListener = null;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   183
        }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   184
    }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   185
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   186
    /**
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   187
     * Select radio button based on "Previous" or "Next" operation
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   188
     *
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   189
     * @param event, the event object.
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   190
     * @param next, indicate if it's next one
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   191
     */
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   192
    private void selectRadioButton(ActionEvent event, boolean next) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   193
        Object eventSrc = event.getSource();
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   194
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   195
        //Check whether the source is JRadioButton, if so, whether it is visible
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   196
        if (!isValidRadioButtonObj(eventSrc))
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   197
            return;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   198
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   199
        ButtonGroupInfo btnGroupInfo = new ButtonGroupInfo((JRadioButton)eventSrc);
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   200
        btnGroupInfo.selectNewButton(next);
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   201
    }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   202
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   203
    /**
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   204
     * ButtonGroupInfo, used to get related info in button group
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   205
     * for given radio button.
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   206
     */
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   207
    private class ButtonGroupInfo {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   208
        JRadioButton activeBtn = null;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   209
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   210
        JRadioButton firstBtn = null;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   211
        JRadioButton lastBtn = null;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   212
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   213
        JRadioButton previousBtn = null;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   214
        JRadioButton nextBtn = null;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   215
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   216
        HashSet<JRadioButton> btnsInGroup = null;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   217
        boolean srcFound = false;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   218
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   219
        public ButtonGroupInfo(JRadioButton btn) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   220
            activeBtn = btn;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   221
            btnsInGroup = new HashSet<JRadioButton>();
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   222
        }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   223
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   224
        //Check if given object is in the button group
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   225
        boolean containsInGroup(Object obj) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   226
            return btnsInGroup.contains(obj);
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   227
        }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   228
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   229
        //Check if the next object to gain focus belongs
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   230
        //to the button group or not
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   231
        Component getFocusTransferBaseComponent(boolean next) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   232
            return firstBtn;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   233
        }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   234
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   235
        boolean getButtonGroupInfo() {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   236
            if (activeBtn == null)
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   237
                return false;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   238
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   239
            btnsInGroup.clear();
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   240
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   241
            //Get the button model from ths source.
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   242
            ButtonModel model = activeBtn.getModel();
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   243
            if (!(model instanceof DefaultButtonModel))
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   244
                return false;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   245
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   246
            // If the button model is DefaultButtonModel, and use it, otherwise return.
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   247
            DefaultButtonModel bm = (DefaultButtonModel) model;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   248
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   249
            //get the ButtonGroup of the button from the button model
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   250
            ButtonGroup group = bm.getGroup();
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   251
            if (group == null)
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   252
                return false;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   253
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   254
            Enumeration<AbstractButton> e = group.getElements();
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   255
            if (e == null)
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   256
                return false;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   257
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   258
            while (e.hasMoreElements()) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   259
                AbstractButton curElement = e.nextElement();
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   260
                if (!isValidRadioButtonObj(curElement))
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   261
                    continue;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   262
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   263
                btnsInGroup.add((JRadioButton) curElement);
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   264
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   265
                // If firstBtn is not set yet, curElement is that first button
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   266
                if (null == firstBtn)
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   267
                    firstBtn = (JRadioButton)curElement;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   268
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   269
                if (activeBtn == curElement)
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   270
                    srcFound = true;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   271
                else if (!srcFound) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   272
                    //The source has not been yet found and the current element
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   273
                    // is the last previousBtn
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   274
                    previousBtn = (JRadioButton) curElement;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   275
                } else if (nextBtn == null) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   276
                    //The source has been found and the current element
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   277
                    //is the next valid button of the list
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   278
                    nextBtn = (JRadioButton) curElement;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   279
                }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   280
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   281
                //Set new last "valid" JRadioButton of the list
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   282
                lastBtn = (JRadioButton)curElement;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   283
            }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   284
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   285
            return true;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   286
        }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   287
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   288
        /**
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   289
         * Find the new radio button that focus needs to be
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   290
         * moved to in the group, select the button
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   291
         *
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   292
         * @param next, indicate if it's arrow up/left or down/right
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   293
         */
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   294
        void selectNewButton(boolean next) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   295
            if (!getButtonGroupInfo())
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   296
                return;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   297
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   298
            if (srcFound) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   299
                JRadioButton newSelectedBtn = null;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   300
                if (next) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   301
                    //Select Next button. Cycle to the first button if the source
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   302
                    //button is the last of the group.
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   303
                    newSelectedBtn = (null == nextBtn) ? firstBtn : nextBtn;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   304
                } else {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   305
                    //Select previous button. Cycle to the last button if the source
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   306
                    //button is the first button of the group.
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   307
                    newSelectedBtn = (null == previousBtn) ? lastBtn: previousBtn;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   308
                }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   309
                if (newSelectedBtn != null && newSelectedBtn != activeBtn) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   310
                    newSelectedBtn.requestFocusInWindow();
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   311
                    newSelectedBtn.setSelected(true);
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   312
                }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   313
            }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   314
        }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   315
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   316
        /**
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   317
         * Find the button group the passed in JRadioButton belongs to, and
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   318
         * move focus to next component of the last button in the group
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   319
         * or previous compoennt of first button
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   320
         *
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   321
         * @param next, indicate if jump to next component or previous
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   322
         */
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   323
        void jumpToNextComponent(boolean next) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   324
            if (!getButtonGroupInfo()) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   325
                //In case the button does not belong to any group, it needs
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   326
                //to be treated as a component
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   327
                if (activeBtn != null) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   328
                    lastBtn = activeBtn;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   329
                    firstBtn = activeBtn;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   330
                } else
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   331
                    return;
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   332
            }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   333
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   334
            //If next component in the parent window is not in the button
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   335
            //group, current active button will be base, otherwise, the base
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   336
            // will be first or last button in the button group
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   337
            Component focusBase = getFocusTransferBaseComponent(next);
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   338
            if (focusBase != null) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   339
                if (next) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   340
                    KeyboardFocusManager.
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   341
                        getCurrentKeyboardFocusManager().focusNextComponent(focusBase);
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   342
                } else {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   343
                    KeyboardFocusManager.
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   344
                        getCurrentKeyboardFocusManager().focusPreviousComponent(focusBase);
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   345
                }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   346
            }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   347
        }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   348
    }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   349
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   350
    /**
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   351
     * Radiobutton KeyListener
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   352
     */
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   353
    private class KeyHandler implements KeyListener {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   354
        //This listener checks if the key event is a focus traversal key event
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   355
        // on a radio button, consume the event if so and move the focus
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   356
        // to next/previous component
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   357
        @Override
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   358
        public void keyPressed(KeyEvent e) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   359
            AWTKeyStroke stroke = AWTKeyStroke.getAWTKeyStrokeForEvent(e);
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   360
            if (stroke != null && e.getSource() instanceof JRadioButton) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   361
                JRadioButton source = (JRadioButton) e.getSource();
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   362
                boolean next = isFocusTraversalKey(source,
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   363
                                KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, stroke);
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   364
                if (next || isFocusTraversalKey(source,
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   365
                                KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, stroke)) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   366
                                    e.consume();
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   367
                                    ButtonGroupInfo btnGroupInfo = new ButtonGroupInfo(source);
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   368
                                    btnGroupInfo.jumpToNextComponent(next);
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   369
                }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   370
            }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   371
        }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   372
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   373
        private boolean isFocusTraversalKey(JComponent c, int id,
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   374
                                                AWTKeyStroke stroke) {
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   375
            Set<AWTKeyStroke> keys = c.getFocusTraversalKeys(id);
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   376
            return keys != null && keys.contains(stroke);
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   377
        }
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   378
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   379
        @Override public void keyReleased(KeyEvent e) {}
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   380
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   381
        @Override public void keyTyped(KeyEvent e) {}
06417e487a28 8208640: [a11y] [macos] Unable to navigate between Radiobuttons in Radio group using keyboard.
kaddepalli
parents: 47216
diff changeset
   382
    }
12047
320a714614e9 7113349: Initial changeset for Macosx port to jdk
michaelm
parents:
diff changeset
   383
}