8172509: [TEST_BUG] [macosx] Failure of the new test java/awt/Focus/FocusTraversalPolicy/ButtonGroupLayoutTraversal/ButtonGroupLayoutTraversalTest.java

Reviewed-by: serb, alexsch
This commit is contained in:
Avik Niyogi 2017-01-20 12:56:35 +05:30
parent f80453413a
commit fc8b18f0bd

View File

@ -23,35 +23,46 @@
/*
@test
@bug 8154043
@bug 8154043 8172509
@summary Fields not reachable anymore by tab-key, because of new tabbing
behaviour of radio button groups.
@run main ButtonGroupLayoutTraversalTest
*/
import javax.swing.*;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Robot;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.JPanel;
import javax.swing.ButtonGroup;
import javax.swing.JComponent;
import javax.swing.JRadioButton;
import javax.swing.JToggleButton;
import javax.swing.LayoutFocusTraversalPolicy;
import javax.swing.UnsupportedLookAndFeelException;
public class ButtonGroupLayoutTraversalTest {
static int nx = 3;
static int ny = 3;
static int focusCnt[] = new int[nx * ny];
private static JFrame window;
public static void main(String[] args) throws Exception {
SwingUtilities.invokeAndWait(() -> changeLAF());
SwingUtilities.invokeAndWait(() -> initLayout(nx, ny));
Robot robot = new Robot();
robot.setAutoDelay(100);
robot.waitForIdle();
robot.delay(200);
for (int i = 0; i < nx * ny - nx * ny / 2 - 1; i++) {
robot.keyPress(KeyEvent.VK_RIGHT);
robot.keyRelease(KeyEvent.VK_RIGHT);
@ -68,12 +79,12 @@ public class ButtonGroupLayoutTraversalTest {
for (int i = 0; i < nx * ny; i++) {
if (focusCnt[i] < 1) {
SwingUtilities.invokeLater(window::dispose);
throw new RuntimeException("Component " + i +
" is not reachable in the forward focus cycle");
throw new RuntimeException("Component " + i
+ " is not reachable in the forward focus cycle");
} else if (focusCnt[i] > 1) {
SwingUtilities.invokeLater(window::dispose);
throw new RuntimeException("Component " + i +
" got focus more than once in the forward focus cycle");
throw new RuntimeException("Component " + i
+ " got focus more than once in the forward focus cycle");
}
}
@ -100,20 +111,34 @@ public class ButtonGroupLayoutTraversalTest {
for (int i = 0; i < nx * ny; i++) {
if (focusCnt[i] < 2) {
SwingUtilities.invokeLater(window::dispose);
throw new RuntimeException("Component " + i +
" is not reachable in the backward focus cycle");
throw new RuntimeException("Component " + i
+ " is not reachable in the backward focus cycle");
} else if (focusCnt[i] > 2) {
SwingUtilities.invokeLater(window::dispose);
throw new RuntimeException("Component " + i +
" got focus more than once in the backward focus cycle");
throw new RuntimeException("Component " + i
+ " got focus more than once in the backward focus cycle");
}
}
SwingUtilities.invokeLater(window::dispose);
}
public static void initLayout(int nx, int ny)
{
private static void changeLAF() {
String currentLAF = UIManager.getLookAndFeel().toString();
currentLAF = currentLAF.toLowerCase();
if (currentLAF.contains("aqua") || currentLAF.contains("nimbus")) {
try {
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
} catch (ClassNotFoundException
| IllegalAccessException
| InstantiationException
| UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
}
}
public static void initLayout(int nx, int ny) {
window = new JFrame("Test");
window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel rootPanel = new JPanel();