import java.awt.*;
import java.awt.event.*;

public class Test{

    public static void main(String[] args) throws Exception {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {

                final Frame frame = new Frame();
                frame.setTitle("Frame");
                frame.setBounds(50, 50, 100, 70);

                Button frmClose = new Button("close all");
                frame.add(frmClose);

                final Dialog dialog = new Dialog((Dialog) null);
                //final Dialog dialog = new Dialog(frame);

                dialog.setTitle("Dialog");
                dialog.setModalityType(Dialog.ModalityType.APPLICATION_MODAL);
                dialog.setBounds(200, 50, 200, 70);
                dialog.setLayout(new GridLayout(1, 2));
                Button dlgOpen  = new Button("show frame");
                Button dlgClose = new Button("close");
                dialog.add(dlgOpen);
                dialog.add(dlgClose);

                final Window window = new Window(frame);
                window.setBounds(450, 50, 100, 70);
                Button winOpen = new Button("show dialog");
                window.add(winOpen);


                frmClose.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        frame.dispose();
                    }
                });
                
                dlgOpen.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        frame.setVisible(true);
                    }
                });

                dlgClose.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        dialog.dispose();
                    }
                });

                winOpen.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        dialog.setVisible(true);
                    }
                });
                
                window.setVisible(true);
            }
        });
    }
}
