import java.awt.AWTEvent; 
import java.awt.Dimension; 
import java.awt.EventQueue; 
import java.awt.Toolkit; 
import java.awt.event.AWTEventListener; 
import java.awt.event.ActionEvent; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import javax.swing.AbstractAction; 
import javax.swing.JButton; 
import javax.swing.JComponent; 
import javax.swing.JDialog; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class TestCase { 
  public static void main( String[] args ) { 
    EventQueue.invokeLater(new Runnable() { 
      public void run() { 
        TestCase.start(); 
      } 
    }); 
  } 

  static void start() { 
    Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() { 
      public void eventDispatched( final AWTEvent event ) { 
        Object src = event.getSource(); 
        String name = src.getClass().getName(); 
        if (src instanceof JComponent) { 
          name = ((JComponent) src).getName(); 
        } 
        System.out.println(asString(event.getID()) + ": " + name); 
      } 

      private String asString( final int id ) { 
        switch (id) { 
          case MouseEvent.MOUSE_CLICKED: 
            return "clicked"; 
          case MouseEvent.MOUSE_ENTERED: 
            return "entered"; 
          case MouseEvent.MOUSE_EXITED: 
            return "exited"; 
          case MouseEvent.MOUSE_PRESSED: 
            return "pressed"; 
          case MouseEvent.MOUSE_RELEASED: 
            return "released"; 
          case MouseEvent.MOUSE_MOVED: 
            return "moved"; 
          default: 
            return "unknown event: " + id; 
        } 
      } 

    }, AWTEvent.MOUSE_EVENT_MASK|AWTEvent.MOUSE_MOTION_EVENT_MASK); 

    final JFrame frame = new JFrame(TestCase.class.getName()); 
    JButton jb = new JButton(new AbstractAction("Open") { 
      public void actionPerformed( final ActionEvent e ) { 
        final JPanel empty = new JPanel(); 
        empty.setPreferredSize(new Dimension(400, 400)); 
        empty.setName("panel_in_dialog"); 
        empty.addMouseListener(new MouseAdapter() {}); 

        final JDialog jd = new JDialog(frame); 
        jd.setLocationRelativeTo(frame); 
        jd.getContentPane().add(empty); 
        jd.pack(); 
        jd.setVisible(true); 
      } 
    }); 
    jb.setPreferredSize(new Dimension(200, 200)); 
    jb.setName("button_in_frame"); 

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().add(jb); 
    frame.pack(); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 
  } 
} 