import java.awt.*;
import java.awt.event.*;

class DialogShow
    extends Dialog
{
    DialogShow(Frame parent, boolean modal)
    {
        super(parent, modal);
        System.out.println("\tfinished Dialog constructor");

        Button b = new Button("Close");
        add(b, BorderLayout.CENTER);
        b.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e)
            {
                hide();
                System.out.println("!!! hiding Dialog");
            }
        });
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e)
            {
                hide();
                System.out.println("!!! hiding Dialog");;
            }
        });

        pack();

        System.out.println("\tshow " + (modal ? "" : "non-") + "modal Dialog");
        show();
        System.out.println("\tafter show");
        setResizable(false);
        System.out.println("\tafter setResizable");
    }

    public static void main(String[] args)
    {
        boolean modal = false;
        if (args.length != 1) {
            System.exit(1);
        } else {
            modal = "modal".equals(args[0]);
        }
        System.out.println((modal ? "" : "NON-") + "MODAL TEST:");

        Frame f = new Frame();
        f.setSize(100, 100);
        f.setVisible(true);

        System.out.println("entering ExtendedDialogShow constructor");
        new ExtendedDialogShow(f, modal);
    }
}

class ExtendedDialogShow
    extends DialogShow
{
    ExtendedDialogShow(Frame parent, boolean modal)
    {
        super(parent, modal);
        System.out.println("finished ExtendedDialogShow constructor");
    }
}
