release 0.9.6
[debian/openrocket] / src / net / sf / openrocket / util / OpenFileWorker.java
index e0c3a8de714ec05ac2986253e1f190cbca1ba0ee..0246e91f337946b7f063720cc1d4dfa9b5ccb85d 100644 (file)
@@ -11,8 +11,8 @@ import java.io.InterruptedIOException;
 import javax.swing.SwingWorker;
 
 import net.sf.openrocket.document.OpenRocketDocument;
-import net.sf.openrocket.file.GeneralRocketLoader;
 import net.sf.openrocket.file.RocketLoader;
+import net.sf.openrocket.gui.main.ExceptionHandler;
 
 
 /**
@@ -22,22 +22,26 @@ import net.sf.openrocket.file.RocketLoader;
  */
 public class OpenFileWorker extends SwingWorker<OpenRocketDocument, Void> {
 
-       private static final RocketLoader ROCKET_LOADER = new GeneralRocketLoader();
-
        private final File file;
        private final InputStream stream;
+       private final RocketLoader loader;
        
-       public OpenFileWorker(File file) {
+       public OpenFileWorker(File file, RocketLoader loader) {
                this.file = file;
                this.stream = null;
+               this.loader = loader;
        }
        
        
-       public OpenFileWorker(InputStream stream) {
+       public OpenFileWorker(InputStream stream, RocketLoader loader) {
                this.stream = stream;
                this.file = null;
+               this.loader = loader;
        }
        
+       public RocketLoader getRocketLoader() {
+               return loader;
+       }
        
        @Override
        protected OpenRocketDocument doInBackground() throws Exception {
@@ -59,13 +63,12 @@ public class OpenFileWorker extends SwingWorker<OpenRocketDocument, Void> {
                is = new ProgressInputStream(is);
                
                try {
-                       return ROCKET_LOADER.load(is);
+                       return loader.load(is);
                } finally {
                        try {
                                is.close();
                        } catch (Exception e) {
-                               System.err.println("Error closing file: ");
-                               e.printStackTrace();
+                               ExceptionHandler.handleErrorCondition("Error closing file", e);
                        }
                }
        }