source: josm/trunk/src/org/openstreetmap/josm/io/session/GpxTracksSessionExporter.java@ 18287

Last change on this file since 18287 was 18287, checked in by Don-vip, 3 years ago

fix #20913 - fix handling of GPX files in sessions (patch by Bjoeni)

  • revert r17659 (except for unit tests) - see #20233
    • don't save GPX track and marker colors in session file anymore, but in the GPX files as extensions (like before)
    • don't ask to save unmodified GPX file
    • don't override global color settings when individual track doesn't have a color
  • ask user to save changes to GPX file when any drawing settings or marker colors have changed (currently only happens for track colors)
  • save marker color values to session even when corresponding GPX layer has already been deleted
  • save alpha values for GPX marker colors
  • added explanation to the "overwrite GPX file" dialog
  • inform user if not all files referenced by the session file are saved yet
  • allow user to save all files that are not included in the *.jos/*.joz but are only referenced in the session file
  • display * next to GPX layers that need to be saved (move isDirty() logic from OsmDataLayer to AbstractModifiableLayer)
  • Property svn:eol-style set to native
File size: 1.5 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.io.session;
3
4import java.io.OutputStream;
5import java.io.OutputStreamWriter;
6import java.io.PrintWriter;
7import java.io.Writer;
8import java.nio.charset.StandardCharsets;
9import java.time.Instant;
10
11import org.openstreetmap.josm.gui.layer.GpxLayer;
12import org.openstreetmap.josm.io.GpxWriter;
13
14/**
15 * Session exporter for {@link GpxLayer}.
16 * @since 5501
17 */
18public class GpxTracksSessionExporter extends GenericSessionExporter<GpxLayer> {
19
20 private Instant metaTime;
21
22 /**
23 * Constructs a new {@code GpxTracksSessionExporter}.
24 * @param layer GPX layer to export
25 */
26 public GpxTracksSessionExporter(GpxLayer layer) { // NO_UCD (test only)
27 this(layer, "tracks");
28 }
29
30 protected GpxTracksSessionExporter(GpxLayer layer, String type) {
31 super(layer, type, "0.1", "gpx");
32 if (layer.data == null) {
33 throw new IllegalArgumentException("GPX layer without data: " + layer);
34 }
35 }
36
37 @Override
38 @SuppressWarnings("resource")
39 protected void addDataFile(OutputStream out) {
40 Writer writer = new OutputStreamWriter(out, StandardCharsets.UTF_8);
41 GpxWriter w = new GpxWriter(new PrintWriter(writer));
42 if (metaTime != null) {
43 w.setMetaTime(metaTime);
44 }
45 w.write(layer.data);
46 w.flush();
47 }
48
49 protected void setMetaTime(Instant metaTime) {
50 this.metaTime = metaTime;
51 }
52}
Note: See TracBrowser for help on using the repository browser.