import java.awt.*;
import java.awt.event.*;

import javax.swing.*;


/**
 * @author Remi Forax
 *
 */
public class EventTest {

  public static class MyEventQueue extends EventQueue {
    public void dispatchEvent(AWTEvent event) {
      super.dispatchEvent(event);
    }
  }

  public static void main(String[] args) {
    
    final JButton button=new JButton("Go");
    button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        
        Toolkit toolkit=Toolkit.getDefaultToolkit();
    
        EventQueue queue=toolkit.getSystemEventQueue();
        
        MyEventQueue myEventQueue=new MyEventQueue();
        
        queue.push(myEventQueue);
        
        button.removeActionListener(this);
        
        for(;;) {
          AWTEvent event;
          try {
            event= myEventQueue.getNextEvent();
          } catch (InterruptedException e1) {
            e1.printStackTrace();
            continue;
          }
          
          System.out.println("event "+event);
          myEventQueue.dispatchEvent(event);
        } 
      }
    });
   
    
    JFrame frame=new JFrame();
    frame.setContentPane(button);
    frame.setSize(400,300);
    frame.show();
  }
}
