import java.awt.Button;
import java.awt.Dialog;
import java.awt.EventQueue;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class DialogTest{

    public static void main(String[] args) throws Exception {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {

                final FileDialog fileDialog = new FileDialog((Dialog) null);
                
                final Dialog parent = new Dialog((Dialog) null, "Parent");
                //final Frame parent = new Frame("Parent");
                parent.setModalExclusionType(Dialog.ModalExclusionType.APPLICATION_EXCLUDE);
                //parent.setModalExclusionType(Dialog.ModalExclusionType.TOOLKIT_EXCLUDE);
                parent.setBounds(0, 0, 180, 100);
                
                parent.setLayout(new GridLayout(1, 2));
                Button frmOpen = new Button("open");
                Button frmTest = new Button("test");
                parent.add(frmOpen);
                parent.add(frmTest);

                final Dialog dialog = new Dialog(parent, "Dialog");
                dialog.setModalityType(Dialog.ModalityType.APPLICATION_MODAL);
                dialog.setBounds(250, 0, 180, 100);
                dialog.setModal(true);
                dialog.setLayout(new GridLayout(1, 2));
                Button dlgOpen = new Button("open");
                Button dlgTest = new Button("test");
                dialog.add(dlgOpen);
                dialog.add(dlgTest);

                final Window window = new Window(dialog);
                window.setBounds(500, 0, 250, 100);
                window.setLayout(new GridLayout(1, 3));
                Button winOpen = new Button("open");
                Button winTest = new Button("test");
                Button winCloseAll = new Button("close all");
                window.add(winOpen);
                window.add(winTest);
                window.add(winCloseAll);

                winCloseAll.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        if (parent != null) { parent.dispose(); }
                        if (dialog != null) { dialog.dispose(); }
                        if (window != null) { window.dispose(); }
                        if (fileDialog != null) { fileDialog.dispose(); }
                    }
                });

                frmOpen.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        dialog.setVisible(true);
                    }
                });

                dlgOpen.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        window.setVisible(true);
                    }
                });

                winOpen.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        fileDialog.setLocation(50, 200);
                        fileDialog.setVisible(true);
                    }
                });

                parent.setVisible(true);
            }
        });
    }
}
