Ticket #675: OpenAction.patch

File OpenAction.patch, 2.5 KB (added by jennergruhle, 18 years ago)

Patch to add NMEA functionality

  • P:/workspace_tools/JOSM/src/org/openstreetmap/josm/actions/OpenAction.java

     
    1717
    1818import org.openstreetmap.josm.Main;
    1919import org.openstreetmap.josm.data.osm.DataSet;
     20import org.openstreetmap.josm.gui.layer.GpxLayer;
    2021import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    21 import org.openstreetmap.josm.gui.layer.GpxLayer;
    2222import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
     23import org.openstreetmap.josm.io.GpxReader;
     24import org.openstreetmap.josm.io.NmeaReader;
    2325import org.openstreetmap.josm.io.OsmReader;
    24 import org.openstreetmap.josm.io.GpxReader;
    2526import org.xml.sax.SAXException;
    2627
    2728/**
    2829 * Open a file chooser dialog and select an file to import. Than call the gpx-import
    2930 * driver. Finally open an internal frame into the main window with the gpx data shown.
    30  * 
     31 *
    3132 * @author imi
    3233 */
    3334public class OpenAction extends DiskAccessAction {
    34        
     35
    3536        /**
    3637         * Create an open action. The name is "Open a file".
    3738         */
     
    5556                try {
    5657                        if (asGpxData(file.getName()))
    5758                                openFileAsGpx(file);
     59                        else if (asNmeaData(file.getName()))
     60                                openFileAsNmea(file);
    5861                        else
    5962                                openAsData(file);
    6063                } catch (SAXException x) {
     
    102105    }
    103106
    104107
     108        private void openFileAsNmea(File file) throws IOException, FileNotFoundException {
     109                String fn = file.getName();
     110                if (ExtensionFileFilter.filters[ExtensionFileFilter.NMEA].acceptName(fn)) {
     111                        NmeaReader r = null;
     112                        r = new NmeaReader(new FileInputStream(file), file.getAbsoluteFile().getParentFile());
     113                        r.data.storageFile = file;
     114                        GpxLayer gpxLayer = new GpxLayer(r.data, fn);
     115                        Main.main.addLayer(gpxLayer);
     116                        if (Main.pref.getBoolean("marker.makeautomarkers", true)) {
     117                                MarkerLayer ml = new MarkerLayer(r.data, tr("Markers from {0}", fn), file, gpxLayer);
     118                                if (ml.data.size() > 0) {
     119                                        Main.main.addLayer(ml);
     120                                }
     121                        }
     122
     123                } else {
     124                        throw new IllegalStateException();
     125                }
     126    }
     127
    105128        private boolean asGpxData(String fn) {
    106129                return ExtensionFileFilter.filters[ExtensionFileFilter.GPX].acceptName(fn);
    107130        }
    108131
     132        private boolean asNmeaData(String fn) {
     133                return ExtensionFileFilter.filters[ExtensionFileFilter.NMEA].acceptName(fn);
     134        }
    109135
     136
    110137}