]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/load/FileLoader.java
Version 8, September 2009
[GpsPrune.git] / tim / prune / load / FileLoader.java
index b3c03b435926411f67f6ab02d164e074d6616fa2..889f1d7933a6ec2357b07fd6c3b9b3ac3affebb9 100644 (file)
@@ -1,7 +1,7 @@
 package tim.prune.load;
 
 import java.io.File;
-
+import java.util.ArrayList;
 import javax.swing.JFileChooser;
 import javax.swing.JFrame;
 
@@ -21,6 +21,7 @@ public class FileLoader
        private JFileChooser _fileChooser = null;
        private JFrame _parentFrame;
        private TextFileLoader _textFileLoader = null;
+       private NmeaFileLoader _nmeaFileLoader = null;
        private XmlFileLoader _xmlFileLoader = null;
        private ZipFileLoader _zipFileLoader = null;
 
@@ -35,6 +36,7 @@ public class FileLoader
                _app = inApp;
                _parentFrame = inParentFrame;
                _textFileLoader = new TextFileLoader(inApp, inParentFrame);
+               _nmeaFileLoader = new NmeaFileLoader(inApp);
                _xmlFileLoader = new XmlFileLoader(inApp);
                _zipFileLoader = new ZipFileLoader(inApp, _xmlFileLoader);
        }
@@ -56,47 +58,76 @@ public class FileLoader
                        _fileChooser.addChoosableFileFilter(new GenericFileFilter("filetype.kmz", new String[] {"kmz"}));
                        _fileChooser.setAcceptAllFileFilterUsed(true);
                        // start from directory in config if already set (by load jpegs)
-                       File configDir = Config.getWorkingDirectory();
-                       if (configDir != null) {_fileChooser.setCurrentDirectory(configDir);}
+                       String configDir = Config.getConfigString(Config.KEY_TRACK_DIR);
+                       if (configDir == null) {configDir = Config.getConfigString(Config.KEY_PHOTO_DIR);}
+                       if (configDir != null) {_fileChooser.setCurrentDirectory(new File(configDir));}
+                       _fileChooser.setMultiSelectionEnabled(true); // Allow multiple selections
                }
                // Show the open dialog
                if (_fileChooser.showOpenDialog(_parentFrame) == JFileChooser.APPROVE_OPTION)
                {
-                       File file = _fileChooser.getSelectedFile();
-                       // Check file exists and is readable
-                       if (file != null && file.exists() && file.canRead())
+                       File[] files = _fileChooser.getSelectedFiles();
+                       // Loop through files looking for files which exist and are readable
+                       ArrayList<File> dataFiles = new ArrayList<File>();
+                       if (files != null)
                        {
-                               // Store directory in config for later
-                               Config.setWorkingDirectory(file.getParentFile());
-                               // Check file type to see if it's xml or just normal text
-                               String fileExtension = file.getName().toLowerCase();
-                               if (fileExtension.length() > 4)
-                                       {fileExtension = fileExtension.substring(fileExtension.length() - 4);}
-                               if (fileExtension.equals(".kml") || fileExtension.equals(".gpx")
-                                       || fileExtension.equals(".xml"))
-                               {
-                                       // Use xml loader for kml, gpx and xml filenames
-                                       _xmlFileLoader.openFile(file);
-                               }
-                               else if (fileExtension.equals(".kmz") || fileExtension.equals(".zip"))
-                               {
-                                       // Use zip loader for zipped kml (or zipped gpx)
-                                       _zipFileLoader.openFile(file);
-                               }
-                               else
+                               for (int i=0; i<files.length; i++)
                                {
-                                       // Use text loader for everything else
-                                       _textFileLoader.openFile(file);
+                                       File file = files[i];
+                                       if (file.exists() && file.isFile() && file.canRead())
+                                       {
+                                               dataFiles.add(file);
+                                       }
                                }
                        }
+                       if (dataFiles.size() > 0) {
+                               _app.loadDataFiles(dataFiles);
+                       }
                        else
                        {
-                               // couldn't read file - show error message
+                               // couldn't find any files to load - show error message
                                _app.showErrorMessage("error.load.dialogtitle", "error.load.noread");
                        }
                }
        }
 
+       /**
+        * Open the selected input file
+        * @param inFile file to open
+        */
+       public void openFile(File inFile)
+       {
+               // Store directory in config for later
+               File parent = inFile.getParentFile();
+               if (parent != null) {
+                       Config.setConfigString(Config.KEY_TRACK_DIR, parent.getAbsolutePath());
+               }
+               // Check file type to see if it's xml or just normal text
+               String fileExtension = inFile.getName().toLowerCase();
+               if (fileExtension.length() > 4)
+                       {fileExtension = fileExtension.substring(fileExtension.length() - 4);}
+               if (fileExtension.equals(".kml") || fileExtension.equals(".gpx")
+                       || fileExtension.equals(".xml"))
+               {
+                       // Use xml loader for kml, gpx and xml filenames
+                       _xmlFileLoader.openFile(inFile);
+               }
+               else if (fileExtension.equals(".kmz") || fileExtension.equals(".zip"))
+               {
+                       // Use zip loader for zipped kml (or zipped gpx)
+                       _zipFileLoader.openFile(inFile);
+               }
+               else if (fileExtension.equals("nmea"))
+               {
+                       _nmeaFileLoader.openFile(inFile);
+               }
+               else
+               {
+                       // Use text loader for everything else
+                       _textFileLoader.openFile(inFile);
+               }
+       }
+
        /**
         * @return the last delimiter character used for a text file load
         */