source: josm/trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java@ 8540

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

fix remaining checkstyle issues

  • Property svn:eol-style set to native
File size: 3.1 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.layer.gpx;
3
4import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
5import static org.openstreetmap.josm.tools.I18n.tr;
6
7import java.awt.GridBagLayout;
8import java.awt.event.ActionEvent;
9import java.util.ArrayList;
10import java.util.List;
11
12import javax.swing.AbstractAction;
13import javax.swing.JLabel;
14import javax.swing.JOptionPane;
15import javax.swing.JPanel;
16
17import org.openstreetmap.josm.Main;
18import org.openstreetmap.josm.data.gpx.GpxConstants;
19import org.openstreetmap.josm.data.gpx.GpxTrack;
20import org.openstreetmap.josm.data.gpx.GpxTrackSegment;
21import org.openstreetmap.josm.data.gpx.WayPoint;
22import org.openstreetmap.josm.data.osm.DataSet;
23import org.openstreetmap.josm.data.osm.Node;
24import org.openstreetmap.josm.data.osm.Way;
25import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
26import org.openstreetmap.josm.gui.layer.GpxLayer;
27import org.openstreetmap.josm.gui.layer.OsmDataLayer;
28import org.openstreetmap.josm.gui.widgets.UrlLabel;
29import org.openstreetmap.josm.tools.GBC;
30import org.openstreetmap.josm.tools.ImageProvider;
31import org.openstreetmap.josm.tools.date.DateUtils;
32
33public class ConvertToDataLayerAction extends AbstractAction {
34 private final transient GpxLayer layer;
35
36 public ConvertToDataLayerAction(final GpxLayer layer) {
37 super(tr("Convert to data layer"), ImageProvider.get("converttoosm"));
38 this.layer = layer;
39 putValue("help", ht("/Action/ConvertToDataLayer"));
40 }
41
42 @Override
43 public void actionPerformed(ActionEvent e) {
44 JPanel msg = new JPanel(new GridBagLayout());
45 msg.add(new JLabel(
46 // CHECKSTYLE.OFF: LineLength
47 tr("<html>Upload of unprocessed GPS data as map data is considered harmful.<br>If you want to upload traces, look here:</html>")),
48 // CHECKSTYLE.ON: LineLength
49 GBC.eol());
50 msg.add(new UrlLabel(Main.getOSMWebsite() + "/traces", 2), GBC.eop());
51 if (!ConditionalOptionPaneUtil.showConfirmationDialog("convert_to_data", Main.parent, msg, tr("Warning"),
52 JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE, JOptionPane.OK_OPTION)) {
53 return;
54 }
55 DataSet ds = new DataSet();
56 for (GpxTrack trk : layer.data.tracks) {
57 for (GpxTrackSegment segment : trk.getSegments()) {
58 List<Node> nodes = new ArrayList<>();
59 for (WayPoint p : segment.getWayPoints()) {
60 Node n = new Node(p.getCoor());
61 String timestr = p.getString(GpxConstants.PT_TIME);
62 if (timestr != null) {
63 n.setTimestamp(DateUtils.fromString(timestr));
64 }
65 ds.addPrimitive(n);
66 nodes.add(n);
67 }
68 Way w = new Way();
69 w.setNodes(nodes);
70 ds.addPrimitive(w);
71 }
72 }
73 Main.main.addLayer(new OsmDataLayer(ds, tr("Converted from: {0}", layer.getName()), layer.getAssociatedFile()));
74 Main.main.removeLayer(layer);
75 }
76}
Note: See TracBrowser for help on using the repository browser.