blob: 07ae30e7a314ea6cc1e5bcb94cd130c1ba9148fd [file] [log] [blame]
package org.purl.wf4ever.provtaverna.ui;
import java.io.File;
import java.io.IOException;
import javax.swing.AbstractAction;
import net.sf.taverna.t2.workbench.icons.WorkbenchIcons;
import net.sf.taverna.t2.workbench.views.results.saveactions.SaveAllResultsSPI;
import org.purl.wf4ever.provtaverna.export.Saver;
public class SaveProvAction extends SaveAllResultsSPI {
private static final long serialVersionUID = 1L;
public SaveProvAction() {
super();
putValue(NAME, "Save provenance bundle");
putValue(SMALL_ICON, WorkbenchIcons.saveAllIcon);
}
public AbstractAction getAction() {
return this;
}
@Override
public void setProvenanceEnabledForRun(boolean isProvenanceEnabledForRun) {
super.setProvenanceEnabledForRun(isProvenanceEnabledForRun);
setEnabled(isProvenanceEnabledForRun);
}
/**
* Saves the result data as a file structure
*
* @throws IOException
*/
protected void saveData(File bundle) throws IOException {
// String folderName = folder.getName();
// if (folderName.endsWith(".")) {
// folder = new File(folder.getParentFile(),
// folderName.substring(0, folderName.length()-1));
// }
Saver saver = new Saver(getReferenceService(), getContext(), getRunId(), getChosenReferences());
// saver.saveData(bundle.toPath());
SaveProvSwingWorker worker = new SaveProvSwingWorker(saver, bundle);
SaveProvInProgressDialog dialog = new SaveProvInProgressDialog(worker);
worker.execute();
// Give a chance to the SwingWorker to finish so we do not have to display
// the dialog if checking of the object is quick (so it won't flicker on the screen)
try {
Thread.sleep(500);
} catch (InterruptedException ex) {
}
if (!worker.isDone()){
dialog.setVisible(true); // this will block the GUI
}
}
@Override
protected String getFilter() {
return "bundle.zip";
}
}