net.sourceforge.squirrel_sql.client.session.mainpanel.PleaseWaitDialog.java Source code

Java tutorial

Introduction

Here is the source code for net.sourceforge.squirrel_sql.client.session.mainpanel.PleaseWaitDialog.java

Source

package net.sourceforge.squirrel_sql.client.session.mainpanel;
/*
 * Copyright (C) 2007 Thorsten Mrell
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */

import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
import net.sourceforge.squirrel_sql.client.IApplication;
import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.DialogWidget;
import net.sourceforge.squirrel_sql.client.session.CancelStatementThread;
import net.sourceforge.squirrel_sql.client.session.StatementWrapper;
import net.sourceforge.squirrel_sql.fw.util.IMessageHandler;
import net.sourceforge.squirrel_sql.fw.util.StringManager;
import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Statement;

/**
 * The dialog to ask the user to wait.
 * 
 * @author Thorsten Mrell
 */
public class PleaseWaitDialog extends DialogWidget implements ActionListener {

    private static final StringManager stringMgr = StringManagerFactory.getStringManager(PleaseWaitDialog.class);

    private JButton cancelButton;
    private IMessageHandler messageHandler;
    private Statement stmt;

    /**
     * Creates the dialog.
     * 
     * @param stmt The statement that is currently executed
     * @param app The message handler to produce the log output to
     */
    public PleaseWaitDialog(Statement stmt, IApplication app) {
        //i18n[PleaseWaitDialog.queryExecuting=Query is executing]
        super(stringMgr.getString("PleaseWaitDialog.queryExecuting"), true, app);
        this.messageHandler = app.getMessageHandler();
        this.stmt = stmt;

        makeToolWindow(true);

        final JPanel content = new JPanel(new BorderLayout());
        content.add(createMainPanel(), BorderLayout.CENTER);
        setContentPane(content);
        pack();
    }

    private Component createMainPanel() {

        final FormLayout layout = new FormLayout(
                // Columns
                "center:pref",
                // Rows
                "pref, 6dlu, pref, 6dlu, pref, 6dlu, pref");

        PanelBuilder builder = new PanelBuilder(layout);
        CellConstraints cc = new CellConstraints();
        builder.setDefaultDialogBorder();

        int y = 1;
        builder.addSeparator(getTitle(), cc.xywh(1, y, 1, 1));

        y += 2;
        //i18n[PleaseWaitDialog.pleaseWait=Please wait while the query is executed]
        builder.addLabel(stringMgr.getString("PleaseWaitDialog.pleaseWait"), cc.xy(1, y));

        y += 2;
        builder.addSeparator("", cc.xywh(1, y, 1, 1));

        //i18n[PleaseWaitDialog.cancel=Cancel]
        cancelButton = new JButton(stringMgr.getString("PleaseWaitDialog.cancel"));
        cancelButton.addActionListener(this);

        y += 2;
        builder.add(cancelButton, cc.xywh(1, y, 1, 1));

        return builder.getPanel();
    }

    public void actionPerformed(ActionEvent e) {
        if (stmt != null) {
            CancelStatementThread cst = new CancelStatementThread(new StatementWrapper(stmt), messageHandler);
            cst.tryCancel();
        }
    }

    /**
     * Shows the dialog in front of all windows and centered.
     *  
     * @param app The application to show the window in
     */
    public void showDialog(IApplication app) {
        app.getMainFrame().addWidget(this);
        moveToFront();
        setLayer(JLayeredPane.MODAL_LAYER);
        DialogWidget.centerWithinDesktop(this);
        this.setVisible(true);
    }
}