X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=tim%2Fprune%2Fload%2FFileLoader.java;h=b3c03b435926411f67f6ab02d164e074d6616fa2;hb=54b9d8bc8f0025ccf97a67d9dd217ef1f9cf082f;hp=c1bf3dfc1a8e05d202bf00923f2cb94fc37d1017;hpb=5625a1abadb5f2ca5f017fe7dbda1d5141cb637b;p=GpsPrune.git diff --git a/tim/prune/load/FileLoader.java b/tim/prune/load/FileLoader.java index c1bf3df..b3c03b4 100644 --- a/tim/prune/load/FileLoader.java +++ b/tim/prune/load/FileLoader.java @@ -4,11 +4,11 @@ import java.io.File; import javax.swing.JFileChooser; import javax.swing.JFrame; -import javax.swing.JOptionPane; import tim.prune.App; -import tim.prune.I18nManager; +import tim.prune.Config; import tim.prune.load.xml.XmlFileLoader; +import tim.prune.load.xml.ZipFileLoader; /** @@ -17,10 +17,12 @@ import tim.prune.load.xml.XmlFileLoader; */ public class FileLoader { + private App _app; private JFileChooser _fileChooser = null; private JFrame _parentFrame; private TextFileLoader _textFileLoader = null; private XmlFileLoader _xmlFileLoader = null; + private ZipFileLoader _zipFileLoader = null; /** @@ -30,9 +32,11 @@ public class FileLoader */ public FileLoader(App inApp, JFrame inParentFrame) { + _app = inApp; _parentFrame = inParentFrame; _textFileLoader = new TextFileLoader(inApp, inParentFrame); - _xmlFileLoader = new XmlFileLoader(inApp, inParentFrame); + _xmlFileLoader = new XmlFileLoader(inApp); + _zipFileLoader = new ZipFileLoader(inApp, _xmlFileLoader); } @@ -42,14 +46,28 @@ public class FileLoader */ public void openFile() { + // Construct file chooser if necessary if (_fileChooser == null) + { _fileChooser = new JFileChooser(); + _fileChooser.addChoosableFileFilter(new GenericFileFilter("filetype.txt", new String[] {"txt", "text"})); + _fileChooser.addChoosableFileFilter(new GenericFileFilter("filetype.gpx", new String[] {"gpx"})); + _fileChooser.addChoosableFileFilter(new GenericFileFilter("filetype.kml", new String[] {"kml"})); + _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);} + } + // 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()) { + // 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) @@ -60,6 +78,11 @@ public class FileLoader // 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 { // Use text loader for everything else @@ -69,8 +92,7 @@ public class FileLoader else { // couldn't read file - show error message - JOptionPane.showMessageDialog(_parentFrame, I18nManager.getText("error.load.noread"), - I18nManager.getText("error.load.dialogtitle"), JOptionPane.ERROR_MESSAGE); + _app.showErrorMessage("error.load.dialogtitle", "error.load.noread"); } } }