Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
import java.awt.BorderLayout;

import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Dialog.ModalityType;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;

import javax.swing.JPanel;

import javax.swing.WindowConstants;

public class Main {
    public static boolean showModalDialogOnEDT(JComponent contents, String title, String okButtonMessage,
            String cancelButtonMessage, ModalityType modalityType, final boolean systemExitOnDisposed) {

        class Result {
            boolean OK = false;
        }
        final Result result = new Result();

        final JDialog dialog = new JDialog((Frame) null, title, true) {
            @Override
            public void dispose() {
                super.dispose();
                if (systemExitOnDisposed) {
                    System.exit(0);
                }
            }
        };

        // ensure it doesn't block other dialogs
        if (modalityType != null) {
            dialog.setModalityType(modalityType);
        }

        // See http://stackoverflow.com/questions/1343542/how-do-i-close-a-jdialog-and-have-the-window-event-listeners-be-notified
        dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

        JPanel buttonPane = new JPanel();
        buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
        if (okButtonMessage != null) {
            buttonPane.add(new JButton(new AbstractAction(okButtonMessage) {

                @Override
                public void actionPerformed(ActionEvent e) {
                    result.OK = true;
                    dialog.dispose();
                }
            }));
        }

        if (cancelButtonMessage != null) {
            buttonPane.add(new JButton(new AbstractAction(cancelButtonMessage) {

                @Override
                public void actionPerformed(ActionEvent e) {
                    dialog.dispose();
                }
            }));
        }

        JPanel panel = new JPanel();
        panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
        panel.setLayout(new BorderLayout());
        panel.add(contents, BorderLayout.CENTER);
        panel.add(buttonPane, BorderLayout.SOUTH);

        // startup frame
        dialog.getContentPane().add(panel);
        dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        dialog.pack();

        // This hopefully centres the dialog even though the parameter is null 
        // see http://stackoverflow.com/questions/213266/how-do-i-center-a-jdialog-on-screen
        dialog.setLocationRelativeTo(null);
        dialog.setVisible(true);

        return result.OK;
    }
}