]> gitweb.fperrin.net Git - GpsPrune.git/blob - tim/prune/load/FileLoader.java
Version 3, August 2007
[GpsPrune.git] / tim / prune / load / FileLoader.java
1 package tim.prune.load;
2
3 import java.io.File;
4
5 import javax.swing.JFileChooser;
6 import javax.swing.JFrame;
7 import javax.swing.JOptionPane;
8
9 import tim.prune.App;
10 import tim.prune.I18nManager;
11 import tim.prune.load.xml.XmlFileLoader;
12
13
14 /**
15  * Generic FileLoader class to select a file
16  * and pass handling on to appropriate loader
17  */
18 public class FileLoader
19 {
20         private JFileChooser _fileChooser = null;
21         private JFrame _parentFrame;
22         private TextFileLoader _textFileLoader = null;
23         private XmlFileLoader _xmlFileLoader = null;
24
25
26         /**
27          * Constructor
28          * @param inApp Application object to inform of track load
29          * @param inParentFrame parent frame to reference for dialogs
30          */
31         public FileLoader(App inApp, JFrame inParentFrame)
32         {
33                 _parentFrame = inParentFrame;
34                 _textFileLoader = new TextFileLoader(inApp, inParentFrame);
35                 _xmlFileLoader = new XmlFileLoader(inApp, inParentFrame);
36         }
37
38
39         /**
40          * Select an input file and open the GUI frame
41          * to select load options
42          */
43         public void openFile()
44         {
45                 if (_fileChooser == null)
46                         _fileChooser = new JFileChooser();
47                 if (_fileChooser.showOpenDialog(_parentFrame) == JFileChooser.APPROVE_OPTION)
48                 {
49                         File file = _fileChooser.getSelectedFile();
50                         // Check file exists and is readable
51                         if (file != null && file.exists() && file.canRead())
52                         {
53                                 // Check file type to see if it's xml or just normal text
54                                 String fileExtension = file.getName().toLowerCase();
55                                 if (fileExtension.length() > 4)
56                                         {fileExtension = fileExtension.substring(fileExtension.length() - 4);}
57                                 if (fileExtension.equals(".kml") || fileExtension.equals(".gpx")
58                                         || fileExtension.equals(".xml"))
59                                 {
60                                         // Use xml loader for kml, gpx and xml filenames
61                                         _xmlFileLoader.openFile(file);
62                                 }
63                                 else
64                                 {
65                                         // Use text loader for everything else
66                                         _textFileLoader.openFile(file);
67                                 }
68                         }
69                         else
70                         {
71                                 // couldn't read file - show error message
72                                 JOptionPane.showMessageDialog(_parentFrame, I18nManager.getText("error.load.noread"),
73                                         I18nManager.getText("error.load.dialogtitle"), JOptionPane.ERROR_MESSAGE);
74                         }
75                 }
76         }
77
78         /**
79          * @return the last delimiter character used for a text file load
80          */
81         public char getLastUsedDelimiter()
82         {
83                 return _textFileLoader.getLastUsedDelimiter();
84         }
85 }