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}