001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.layer.gpx;
003
004import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
005import static org.openstreetmap.josm.tools.I18n.tr;
006
007import java.awt.event.ActionEvent;
008
009import javax.swing.AbstractAction;
010
011import org.openstreetmap.josm.Main;
012import org.openstreetmap.josm.data.gpx.GpxData;
013import org.openstreetmap.josm.data.gpx.GpxTrack;
014import org.openstreetmap.josm.data.gpx.GpxTrackSegment;
015import org.openstreetmap.josm.data.gpx.WayPoint;
016import org.openstreetmap.josm.gui.layer.GpxLayer;
017import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
018import org.openstreetmap.josm.tools.ImageProvider;
019
020public class MarkersFromNamedPointsAction extends AbstractAction {
021    private final GpxLayer layer;
022
023    public MarkersFromNamedPointsAction(final GpxLayer layer) {
024        super(tr("Markers From Named Points"), ImageProvider.get("addmarkers"));
025        this.layer = layer;
026        putValue("help", ht("/Action/MarkersFromNamedPoints"));
027    }
028
029    @Override
030    public void actionPerformed(ActionEvent e) {
031        GpxData namedTrackPoints = new GpxData();
032        for (GpxTrack track : layer.data.tracks) {
033            for (GpxTrackSegment seg : track.getSegments()) {
034                for (WayPoint point : seg.getWayPoints()) {
035                    if (point.attr.containsKey("name") || point.attr.containsKey("desc")) {
036                        namedTrackPoints.waypoints.add(point);
037                    }
038                }
039            }
040        }
041        MarkerLayer ml = new MarkerLayer(namedTrackPoints, tr("Named Trackpoints from {0}", layer.getName()), layer.getAssociatedFile(), layer);
042        if (!ml.data.isEmpty()) {
043            Main.main.addLayer(ml);
044        }
045    }
046
047}