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() {

                Frame frame  = new Frame("Frame");
                frame.setBounds(50, 50, 150, 70);

                Window window = new Window(frame);
                window.setBounds(250, 50, 150, 70);

                Dialog dialog = new Dialog((Frame) null);
                dialog.setBounds(450, 50, 150, 70);
                dialog.setModalityType(Dialog.ModalityType.APPLICATION_MODAL);

                //----------------------------------------------

                Button frmOpen  = new Button("Open");
                Button frmClose = new Button("Close All");

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

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

                frame.setLayout(new GridLayout(1, 2));
                frame.add(frmOpen);
                frame.add(frmClose);
                
                //----------------------------------------------

                Button winOpen  = new Button("Open");
                Button winClose = new Button("Close All");
                
                winOpen.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        dialog.setVisible(true);
                    }
                });

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

                window.setLayout(new GridLayout(1, 2));
                window.add(winOpen);
                window.add(winClose);

                //----------------------------------------------

                Button dlgClose = new Button("Close");
                
                dlgClose.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        dialog.dispose();
                    }
                });

                dialog.add(dlgClose);

                //----------------------------------------------

                frame.setVisible(true);
            }
        });
    }
}
