/* Initially Set the minimum size of the Top Level Window & set minimum size to null . This should restore the actal minimum value. */

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

public class SetMinimumSizeMethodTest3 {

    private Frame frame ;
    private Dialog dialog;
    private Window window;
    private Button  frameButton , dialogButton , windowButton;
    private static boolean passed = true;
    private static String WORK_DIR=".";

    SetMinimumSizeMethodTest3(){
        try{
            Toolkit.getDefaultToolkit().getSystemEventQueue().invokeAndWait(new Runnable() {
                public void run() {
                    try{
                        Dimension d = new Dimension(140,140);
                        frame = new Frame("Test minimumsize");
                        frameButton = new Button("SetFrameSize");

                        dialog = new Dialog((Dialog) null, Dialog.ModalityType.MODELESS);
                        dialogButton = new Button("SetDialogSize");

                        window = new Window(frame);
                        windowButton  = new Button("SetWindowButton");

                        frame.add(frameButton);
                        frame.setMinimumSize(d);
                        frame.setLocation(0,400);
                        frame.setVisible(true);

                        window.add(windowButton);
                        window.setMinimumSize(d);
                        window.setLocation(250,400);
                        window.setVisible(true);

                        dialog.add(dialogButton);
                        dialog.setMinimumSize(d);
                        dialog.setLocation(450,400);
                        dialog.setVisible(true);
                    }// end try
                    catch (Exception e) {
                        e.printStackTrace();
                        System.exit(1);
                    }
                }// end run
            });
        }
        catch (Exception e) {
            e.printStackTrace();
            System.exit(1);
        }
    }

    public static void main(String []args) {

        WORK_DIR = System.getProperty("resultsDir");
        if (WORK_DIR == null || WORK_DIR.equals("")) {
            System.err.println("ERROR: resultsDir not set!");
            System.exit(1);
        }
        try {
            new SetMinimumSizeMethodTest3().doTest();
            if (! passed) {
                System.err.println("Test failed!");
                System.exit(1);
            } else {
                System.out.println("Test passed!");
                System.exit(0);
            }
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(1);
        }
    }

    public void doTest() throws Exception {

        try {
            Thread.sleep(5000);
        } catch (Exception e) {
        }
        /* Frame test */
        Toolkit.getDefaultToolkit().getSystemEventQueue().invokeAndWait(new Runnable() {
            public void run() {
                try {
                    Dimension frameDimension = frame.getSize();
                    //System.out.println("frameDimension    "+frameDimension);
                    frame.setMinimumSize(null);
                  //  frame.setSize(10,10);
                    frame.invalidate();
                    frame.validate();
                } catch (Exception e) {
                    e.printStackTrace();
                    System.exit(1);
                }
            }
        });
        try {
            Thread.sleep(5000);
        } catch (Exception e) {
        }

        Dimension  newFrameDimension = frame.getSize();
        //System.out.println("newFrameDimension " +newFrameDimension);
        if( (newFrameDimension.width == 140) && (newFrameDimension.height == 140)) {
            System.out.println("Frame setMinimumSize Test Pass");
        } else {
            passed = false;
            System.err.println("Frame setMinimumSize Test fail");
        }

        /* Window Test */
        Toolkit.getDefaultToolkit().getSystemEventQueue().invokeAndWait(new Runnable() {
            public void run() {
                try {
                    Dimension windowDimension = window.getSize();
                    //System.out.println("windowDimension = " +windowDimension);
                    window.setMinimumSize(null);
                  //  window.setSize(75,75);
                    window.invalidate();
                    window.validate();
                } catch (Exception e) {
                    e.printStackTrace();
                    System.exit(1);
                }
            }
        });
        try {
            Thread.sleep(5000);
        } catch (Exception e) {
        }
        Dimension newWindowDimension = window.getSize();
       // System.out.println("newWindowDimension " +newWindowDimension);
        if( (newWindowDimension.width == 140) && (newWindowDimension.height == 140))
            System.out.println("Window setMinimumSize Test Pass");
        else {
            passed = false;
            System.err.println("Window setMinimumSize Test fail");
        }

        /* Test Dialog */

        Toolkit.getDefaultToolkit().getSystemEventQueue().invokeAndWait(new Runnable() {
            public void run() {
                try {
                    Dimension dialogDimension = dialog.getSize();
                    //System.out.println("dialogDimension = " +dialogDimension);
                    dialog.setMinimumSize(null);
                 //   dialog.setSize(75,75);
                    dialog.invalidate();
                    dialog.validate();
                } catch (Exception e) {
                    e.printStackTrace();
                    System.exit(1);
                }
            }
        });
        try {
            Thread.sleep(5000);
        } catch (Exception e) {
        }
        Dimension newDialogDimension = dialog.getSize();
        //System.out.println("newDialogDimension " +newDialogDimension);
        if( (newDialogDimension.width == 140) && (newDialogDimension.height == 140))
            System.out.println("Dialog setMinimumSize Test Pass");
        else {
            passed = false;
            System.err.println("Dialog setMinimumSize Test fail");
        }
    }
}
