1 package net.sf.openrocket.util;
3 import java.io.BufferedOutputStream;
5 import java.io.FileOutputStream;
7 import javax.swing.SwingWorker;
9 import net.sf.openrocket.document.OpenRocketDocument;
10 import net.sf.openrocket.file.RocketSaver;
12 public class SaveFileWorker extends SwingWorker<Void, Void> {
14 private final OpenRocketDocument document;
15 private final File file;
16 private final RocketSaver saver;
18 public SaveFileWorker(OpenRocketDocument document, File file, RocketSaver saver) {
19 this.document = document;
26 protected Void doInBackground() throws Exception {
28 int estimate = (int)saver.estimateFileSize(document,
29 document.getDefaultStorageOptions());
31 // Create the ProgressOutputStream that provides progress estimates
32 ProgressOutputStream os = new ProgressOutputStream(
33 new BufferedOutputStream(new FileOutputStream(file)),
37 protected void setProgress(int progress) {
38 SaveFileWorker.this.setProgress(progress);
44 saver.save(os, document);
48 } catch (Exception e) {
49 System.err.println("Error closing file: ");