Ignore:
Timestamp:
2018-07-07T14:09:37+02:00 (3 months ago)
Author:
Don-vip
Message:

fix #16471 - Support NMEA files when correlating images to a GPX track

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java

    r13220 r14010  
    2323import java.io.IOException;
    2424import java.io.InputStream;
    25 import java.nio.file.Files;
    2625import java.text.DateFormat;
    2726import java.text.ParseException;
    2827import java.text.SimpleDateFormat;
    2928import java.util.ArrayList;
     29import java.util.Arrays;
    3030import java.util.Collection;
    3131import java.util.Collections;
     
    3838import java.util.TimeZone;
    3939import java.util.concurrent.TimeUnit;
    40 import java.util.zip.GZIPInputStream;
    4140
    4241import javax.swing.AbstractAction;
     
    6059import javax.swing.event.DocumentEvent;
    6160import javax.swing.event.DocumentListener;
    62 import javax.swing.filechooser.FileFilter;
    6361
    6462import org.openstreetmap.josm.Main;
    6563import org.openstreetmap.josm.actions.DiskAccessAction;
     64import org.openstreetmap.josm.actions.ExtensionFileFilter;
    6665import org.openstreetmap.josm.data.gpx.GpxConstants;
    6766import org.openstreetmap.josm.data.gpx.GpxData;
     
    7271import org.openstreetmap.josm.gui.ExtendedDialog;
    7372import org.openstreetmap.josm.gui.MainApplication;
     73import org.openstreetmap.josm.gui.io.importexport.GpxImporter;
    7474import org.openstreetmap.josm.gui.io.importexport.JpgImporter;
     75import org.openstreetmap.josm.gui.io.importexport.NMEAImporter;
    7576import org.openstreetmap.josm.gui.layer.GpxLayer;
    7677import org.openstreetmap.josm.gui.layer.Layer;
    7778import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
     79import org.openstreetmap.josm.gui.widgets.FileChooserManager;
    7880import org.openstreetmap.josm.gui.widgets.JosmComboBox;
    7981import org.openstreetmap.josm.gui.widgets.JosmTextField;
     82import org.openstreetmap.josm.io.Compression;
    8083import org.openstreetmap.josm.io.GpxReader;
     84import org.openstreetmap.josm.io.IGpxReader;
     85import org.openstreetmap.josm.io.nmea.NmeaReader;
    8186import org.openstreetmap.josm.spi.preferences.Config;
    8287import org.openstreetmap.josm.tools.GBC;
     
    8590import org.openstreetmap.josm.tools.Logging;
    8691import org.openstreetmap.josm.tools.Pair;
    87 import org.openstreetmap.josm.tools.Utils;
    8892import org.openstreetmap.josm.tools.date.DateUtils;
    8993import org.xml.sax.SAXException;
     
    251255
    252256        @Override
    253         public void actionPerformed(ActionEvent arg0) {
    254             FileFilter filter = new FileFilter() {
    255                 @Override
    256                 public boolean accept(File f) {
    257                     return f.isDirectory() || Utils.hasExtension(f, "gpx", "gpx.gz");
    258                 }
    259 
    260                 @Override
    261                 public String getDescription() {
    262                     return tr("GPX Files (*.gpx *.gpx.gz)");
    263                 }
    264             };
    265             AbstractFileChooser fc = DiskAccessAction.createAndOpenFileChooser(true, false, null, filter, JFileChooser.FILES_ONLY, null);
     257        public void actionPerformed(ActionEvent e) {
     258            ExtensionFileFilter gpxFilter = GpxImporter.getFileFilter();
     259            AbstractFileChooser fc = new FileChooserManager(true, null).createFileChooser(false, null,
     260                    Arrays.asList(gpxFilter, NMEAImporter.FILE_FILTER), gpxFilter, JFileChooser.FILES_ONLY).openFileChooser();
    266261            if (fc == null)
    267262                return;
     
    287282                }
    288283                GpxData data = null;
    289                 try (InputStream iStream = createInputStream(sel)) {
    290                     GpxReader reader = new GpxReader(iStream);
     284                try (InputStream iStream = Compression.getUncompressedFileInputStream(sel)) {
     285                    IGpxReader reader = gpxFilter.accept(sel) ? new GpxReader(iStream) : new NmeaReader(iStream);
    291286                    reader.parse(false);
    292287                    data = reader.getGpxData();
     
    327322            }
    328323        }
    329 
    330         private InputStream createInputStream(File sel) throws IOException {
    331             if (Utils.hasExtension(sel, "gpx.gz")) {
    332                 return new GZIPInputStream(Files.newInputStream(sel.toPath()));
    333             } else {
    334                 return Files.newInputStream(sel.toPath());
    335             }
    336         }
    337324    }
    338325
Note: See TracChangeset for help on using the changeset viewer.