Changeset 18179 in josm for trunk/src/org/openstreetmap/josm/gui/io/importexport/RtkLibImporter.java
- Timestamp:
- 2021-08-26T04:12:30+02:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/io/importexport/RtkLibImporter.java
r16866 r18179 8 8 import java.io.InputStream; 9 9 10 import javax.swing.JOptionPane;11 import javax.swing.SwingUtilities;12 13 10 import org.openstreetmap.josm.actions.ExtensionFileFilter; 14 import org.openstreetmap.josm.gui.HelpAwareOptionPane;15 import org.openstreetmap.josm.gui.MainApplication;16 import org.openstreetmap.josm.gui.Notification;17 11 import org.openstreetmap.josm.gui.io.importexport.GpxImporter.GpxImporterData; 18 import org.openstreetmap.josm.gui.layer.GpxLayer;19 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;20 import org.openstreetmap.josm.gui.progress.ProgressMonitor;21 import org.openstreetmap.josm.gui.util.GuiHelper;22 import org.openstreetmap.josm.io.Compression;23 12 import org.openstreetmap.josm.io.rtklib.RtkLibPosReader; 24 import org.openstreetmap.josm.spi.preferences.Config;25 import org.xml.sax.SAXException;26 13 27 14 /** … … 29 16 * @since 15247 30 17 */ 31 public class RtkLibImporter extends FileImporter{18 public class RtkLibImporter extends GpxLikeImporter<RtkLibPosReader> { 32 19 33 20 /** … … 41 28 */ 42 29 public RtkLibImporter() { 43 super(FILE_FILTER); 44 } 45 46 @Override 47 public void importData(File file, ProgressMonitor progressMonitor) throws IOException { 48 final String fn = file.getName(); 49 try (InputStream fis = Compression.getUncompressedFileInputStream(file)) { 50 final RtkLibPosReader r = buildAndParse(fis); 51 if (r.getNumberOfCoordinates() > 0) { 52 r.getGpxData().storageFile = file; 53 final GpxLayer gpxLayer = new GpxLayer(r.getGpxData(), fn, true); 54 final File fileFinal = file; 55 56 GuiHelper.runInEDT(() -> { 57 MainApplication.getLayerManager().addLayer(gpxLayer); 58 if (Config.getPref().getBoolean("marker.makeautomarkers", true)) { 59 MarkerLayer ml = new MarkerLayer(r.getGpxData(), tr("Markers from {0}", fn), fileFinal, gpxLayer); 60 if (!ml.data.isEmpty()) { 61 MainApplication.getLayerManager().addLayer(ml); 62 } 63 } 64 }); 65 } 66 showRtkLibInfobox(r.getNumberOfCoordinates() > 0, r); 67 } 68 } 69 70 private static void showRtkLibInfobox(boolean success, RtkLibPosReader r) { 71 final StringBuilder msg = new StringBuilder(160).append("<html>") 72 .append(tr("Coordinates imported: {0}", r.getNumberOfCoordinates())) 73 .append("</html>"); 74 if (success) { 75 SwingUtilities.invokeLater(() -> new Notification( 76 "<h3>" + tr("RTKLib import success:") + "</h3>" + msg.toString()) 77 .setIcon(JOptionPane.INFORMATION_MESSAGE) 78 .show()); 79 } else { 80 HelpAwareOptionPane.showMessageDialogInEDT( 81 MainApplication.getMainFrame(), 82 msg.toString(), 83 tr("RTKLib import failure!"), 84 JOptionPane.ERROR_MESSAGE, null); 85 } 30 super(FILE_FILTER, RtkLibPosReader.class); 86 31 } 87 32 … … 96 41 public static GpxImporterData loadLayers(InputStream is, final File associatedFile, 97 42 final String gpxLayerName) throws IOException { 98 final RtkLibPosReader r = buildAndParse(is );43 final RtkLibPosReader r = buildAndParse(is, RtkLibPosReader.class); 99 44 final boolean parsedProperly = r.getNumberOfCoordinates() > 0; 100 45 r.getGpxData().storageFile = associatedFile; 101 46 return GpxImporter.loadLayers(r.getGpxData(), parsedProperly, gpxLayerName); 102 47 } 103 104 static RtkLibPosReader buildAndParse(InputStream fis) throws IOException {105 final RtkLibPosReader r = new RtkLibPosReader(fis);106 try {107 r.parse(true);108 } catch (SAXException e) {109 throw new IOException(e);110 }111 return r;112 }113 48 }
Note:
See TracChangeset
for help on using the changeset viewer.