package org.signalml.app.view.common.dialogs;
import static org.signalml.app.util.i18n.SvarogI18n._;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.WindowConstants;
import javax.swing.border.EmptyBorder;
public class BusyDialog extends JDialog {
public static String CANCEL_BUTTON_PRESSED = "cancelButtonPressed";
private JLabel label;
private JProgressBar progressBar;
private JButton cancelButton;
public BusyDialog(Container parentContainer) {
super();
setPreferredSize(new Dimension(280, 90));
this.setLayout(new BorderLayout());
setLocationRelativeTo(parentContainer);
setModal(true);
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
this.setResizable(false);
JPanel panel = new JPanel();
panel.setBorder(new EmptyBorder(new Insets(10, 10, 10, 10)));
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.add(getLabel());
panel.add(Box.createVerticalStrut(4));
panel.add(getProgressBar());
panel.add(Box.createVerticalStrut(4));
panel.add(getCancelButton());
this.add(panel);
pack();
}
public JLabel getLabel() {
if (label == null) {
label = new JLabel(_("Please wait"));
label.setAlignmentX(Component.CENTER_ALIGNMENT);
}
return label;
}
public JProgressBar getProgressBar() {
if (progressBar == null) {
progressBar = new JProgressBar();
progressBar.setIndeterminate(true);
progressBar.setAlignmentX(Component.CENTER_ALIGNMENT);
}
return progressBar;
}
public JButton getCancelButton() {
if (cancelButton == null) {
cancelButton = new JButton(new AbstractAction() {
@Override
public void actionPerformed(ActionEvent arg0) {
fireCancelButtonPressed();
}
});
cancelButton.setText(_("Cancel"));
cancelButton.setAlignmentX(Component.CENTER_ALIGNMENT);
}
return cancelButton;
}
protected void fireCancelButtonPressed() {
firePropertyChange(CANCEL_BUTTON_PRESSED, null, null);
}
public void setText(String text) {
this.label.setText(text);
}
public void setCancellable(boolean cancellable) {
getCancelButton().setVisible(cancellable);
}
}