// Test to reproduce segfault on zLinux
import javax.swing.*;
import java.awt.*;
public class FocusTest {
  public static void main(String[] args){
    FocusTest x = new FocusTest();
    System.out.println("Test start");
    boolean boolArg = true;
    if (args.length != 0 && args[0].equals("disable")) boolArg = false;
    x.runTest(boolArg);
    System.out.println("Test passed");
  }

  public void runTest(boolean pfBool){
    String titleText = "Focus Painting Disabled";
    if (pfBool) {
      titleText = "Focus Painting Enabled";
    }
    JFrame frame = new JFrame("FocusTest - " + titleText);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel panel = new JPanel();
    JToggleButton button1 = new JToggleButton("Button1");
    JToggleButton button2 = new JToggleButton("Button2");
    button1.setFocusPainted(pfBool);
    button2.setFocusPainted(pfBool);
    panel.add(button1);
    panel.add(button2);
    frame.getContentPane().add(panel);
    frame.pack();
    frame.setVisible(true);
    sleep();
    int counter = 0;
    while (counter < 100) {
      counter++;
      System.out.println("Iteration " + counter);
      if (counter%2 == 1) {
        button1.grabFocus();
      } else {
        button2.grabFocus();
      }
      sleep();
    }
    frame.dispose();
  }

  public void sleep(){
    try {
      Thread.sleep(100);
    } catch(Exception e) {
      throw new RuntimeException(e);
    }
  }
}
