1 package tim.prune.load;
5 import javax.swing.JFileChooser;
6 import javax.swing.JFrame;
7 import javax.swing.JOptionPane;
10 import tim.prune.I18nManager;
11 import tim.prune.load.xml.XmlFileLoader;
15 * Generic FileLoader class to select a file
16 * and pass handling on to appropriate loader
18 public class FileLoader
20 private JFileChooser _fileChooser = null;
21 private JFrame _parentFrame;
22 private TextFileLoader _textFileLoader = null;
23 private XmlFileLoader _xmlFileLoader = null;
28 * @param inApp Application object to inform of track load
29 * @param inParentFrame parent frame to reference for dialogs
31 public FileLoader(App inApp, JFrame inParentFrame)
33 _parentFrame = inParentFrame;
34 _textFileLoader = new TextFileLoader(inApp, inParentFrame);
35 _xmlFileLoader = new XmlFileLoader(inApp, inParentFrame);
40 * Select an input file and open the GUI frame
41 * to select load options
43 public void openFile()
45 if (_fileChooser == null)
46 _fileChooser = new JFileChooser();
47 if (_fileChooser.showOpenDialog(_parentFrame) == JFileChooser.APPROVE_OPTION)
49 File file = _fileChooser.getSelectedFile();
50 // Check file exists and is readable
51 if (file != null && file.exists() && file.canRead())
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"))
60 // Use xml loader for kml, gpx and xml filenames
61 _xmlFileLoader.openFile(file);
65 // Use text loader for everything else
66 _textFileLoader.openFile(file);
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);
79 * @return the last delimiter character used for a text file load
81 public char getLastUsedDelimiter()
83 return _textFileLoader.getLastUsedDelimiter();