// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.gui.layer.gpx;
import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
import static org.openstreetmap.josm.tools.I18n.tr;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import org.openstreetmap.josm.Main;
import org.openstreetmap.josm.data.gpx.GpxData;
import org.openstreetmap.josm.data.gpx.GpxTrack;
import org.openstreetmap.josm.data.gpx.GpxTrackSegment;
import org.openstreetmap.josm.data.gpx.WayPoint;
import org.openstreetmap.josm.gui.layer.GpxLayer;
import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
import org.openstreetmap.josm.tools.ImageProvider;
public class MarkersFromNamedPointsAction extends AbstractAction {
private final transient GpxLayer layer;
public MarkersFromNamedPointsAction(final GpxLayer layer) {
super(tr("Markers From Named Points"), ImageProvider.get("addmarkers"));
this.layer = layer;
putValue("help", ht("/Action/MarkersFromNamedPoints"));
}
@Override
public void actionPerformed(ActionEvent e) {
GpxData namedTrackPoints = new GpxData();
for (GpxTrack track : layer.data.tracks) {
for (GpxTrackSegment seg : track.getSegments()) {
for (WayPoint point : seg.getWayPoints()) {
if (point.attr.containsKey("name") || point.attr.containsKey("desc")) {
namedTrackPoints.waypoints.add(point);
}
}
}
}
MarkerLayer ml = new MarkerLayer(namedTrackPoints, tr("Named Trackpoints from {0}", layer.getName()), layer.getAssociatedFile(), layer);
if (!ml.data.isEmpty()) {
Main.getLayerManager().addLayer(ml);
}
}
}