blob: cd74c26925c44c67d75699cce81a8e305335add0 [file] [log] [blame]
package org.purl.wf4ever.provtaverna.ui;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingWorker;
import javax.swing.WindowConstants;
import javax.swing.border.EmptyBorder;
import net.sf.taverna.t2.workbench.icons.WorkbenchIcons;
/**
* Dialog that is popped up while we are exporting workflow run provenance.
* This is to let the user know that Taverna is doing something.
*
* @author Alex Nenadic
*
*/
public class SaveProvInProgressDialog extends JDialog implements PropertyChangeListener{
public final static class CancelAction extends AbstractAction {
/**
*
*/
private static final long serialVersionUID = 3357059144578265636L;
private final SaveProvSwingWorker worker;
private CancelAction(SaveProvSwingWorker worker) {
super("Cancel");
this.worker = worker;
}
@Override
public void actionPerformed(ActionEvent e) {
worker.cancel(true);
}
}
private static final long serialVersionUID = 3022516542431968398L;
public SaveProvInProgressDialog(final SaveProvSwingWorker worker) {
super((JFrame) null, "Saving provenance bundle", true);
worker.addPropertyChangeListener(this);
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
JPanel panel = new JPanel(new BorderLayout());
panel.setBorder(new EmptyBorder(10,10,10,10));
JPanel textPanel = new JPanel();
JLabel text = new JLabel(WorkbenchIcons.workingIcon);
text.setText("Saving provenance bundle...");
text.setBorder(new EmptyBorder(10,0,10,0));
textPanel.add(text);
panel.add(textPanel, BorderLayout.CENTER);
JButton cancelButton = new JButton(new CancelAction(worker));
JPanel buttons = new JPanel();
buttons.add(cancelButton, BorderLayout.CENTER);
panel.add(buttons, BorderLayout.SOUTH);
setContentPane(panel);
setPreferredSize(new Dimension(300, 100));
pack();
}
@Override
public void propertyChange(PropertyChangeEvent evt) {
if ("state".equals(evt.getPropertyName())
&& SwingWorker.StateValue.DONE == evt.getNewValue()) {
this.setVisible(false);
this.dispose();
}
}
}