Package com.eviware.soapui.support.components

Source Code of com.eviware.soapui.support.components.ProgressDialog

/*
* Copyright 2004-2014 SmartBear Software
*
* Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent
* versions of the EUPL (the "Licence");
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at:
*
* http://ec.europa.eu/idabc/eupl
*
* Unless required by applicable law or agreed to in writing, software distributed under the Licence is
* distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the Licence for the specific language governing permissions and limitations
* under the Licence.
*/

package com.eviware.soapui.support.components;

import com.eviware.soapui.support.UISupport;
import com.eviware.soapui.support.swing.SwingWorkerDelegator;
import com.eviware.x.dialogs.Worker;
import com.eviware.x.dialogs.XProgressDialog;
import com.eviware.x.dialogs.XProgressMonitor;
import com.jgoodies.forms.builder.ButtonBarBuilder;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;

/**
* Dialog for creating progress-dialogs
*
* @author Ole.Matzura
*/

public class ProgressDialog extends JDialog implements XProgressDialog, XProgressMonitor {
    private JProgressBar progressBar;
    private JButton cancelButton;
    private Worker worker;

    public ProgressDialog(String title, String label, int length, String initialValue, boolean allowCancel)
            throws HeadlessException {
        super(UISupport.getMainFrame(), title, true);

        setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);

        progressBar = new JProgressBar(0, length);
        JPanel panel = UISupport.createProgressBarPanel(progressBar, 10, true);
        progressBar.setString(initialValue);

        getContentPane().setLayout(new BorderLayout());
        JLabel progressLabel = new JLabel(label);
        progressLabel.setBorder(BorderFactory.createEmptyBorder(10, 10, 0, 10));

        getContentPane().add(progressLabel, BorderLayout.NORTH);
        getContentPane().add(panel, BorderLayout.CENTER);

        if (allowCancel) {
            ButtonBarBuilder builder = ButtonBarBuilder.createLeftToRightBuilder();
            builder.addGlue();
            cancelButton = new JButton(new CancelAction());
            builder.addFixed(cancelButton);
            builder.addGlue();
            builder.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10));
            getContentPane().add(builder.getPanel(), BorderLayout.SOUTH);
        }

        pack();
    }

    public void run(Worker worker) {
        this.worker = worker;
        SwingWorkerDelegator swingWorker = new SwingWorkerDelegator(this, this, worker) {
            @Override
            public void finished() {
                super.finished();
                ProgressDialog.this.worker = null;
            }
        };

        swingWorker.start();
        setVisible(true);
    }

    /*
     * (non-Javadoc)
     *
     * @see
     * com.eviware.soapui.support.components.XProgressMonitor#setProgress(int,
     * java.lang.String)
     */
    public void setProgress(final int value, final String string) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                progressBar.setValue(value);
                progressBar.setString(string);
                pack();
            }
        });
    }

    public void setDeterminate() {
        progressBar.setIndeterminate(false);
    }

    public void setIndeterminate() {
        progressBar.setIndeterminate(true);
    }

    /*
     * (non-Javadoc)
     *
     * @see
     * com.eviware.soapui.support.components.XProgressMonitor#setVisible(boolean)
     */
    public void setVisible(boolean visible) {
        if (visible) {
            UISupport.centerDialog(this);
        }
        super.setVisible(visible);
    }

    private class CancelAction extends AbstractAction {
        public CancelAction() {
            super("Cancel");
        }

        public void actionPerformed(ActionEvent e) {
            worker.onCancel();
        }
    }

    public void setCancelLabel(String label) {
        if (cancelButton != null) {
            cancelButton.setText(label);
        }
    }
}
TOP

Related Classes of com.eviware.soapui.support.components.ProgressDialog

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.