package org.openstreetmap.josm.plugins.directdownload;
import static org.openstreetmap.josm.tools.I18n.tr;
import java.awt.event.ActionEvent;
import org.openstreetmap.josm.Main;
import org.openstreetmap.josm.actions.JosmAction;
import org.openstreetmap.josm.data.gpx.GpxData;
import org.openstreetmap.josm.gui.MainMenu;
import org.openstreetmap.josm.gui.layer.GpxLayer;
import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
import org.openstreetmap.josm.plugins.Plugin;
import org.openstreetmap.josm.plugins.PluginInformation;
public class DirectDownload extends Plugin {
private DownloadAction openaction;
/**
* Will be invoked by JOSM to bootstrap the plugin
*
* @param info information about the plugin and its local installation
*/
public DirectDownload(PluginInformation info) {
super(info);
openaction = new DownloadAction();
MainMenu.add(Main.main.menu.gpsMenu, openaction);
}
class DownloadAction extends JosmAction {
public DownloadAction() {
super(tr("Download Track ..."), "DownloadAction",
tr("Download GPX track from openstreetmap.org"), null, false);
}
public void actionPerformed(ActionEvent event) {
DownloadDataGui go = new DownloadDataGui();
go.setVisible(true);
UserTrack track = go.getSelectedUserTrack();
if (!((go.getValue() == 1) && (track != null))) {
return;
}
final GpxData data = new GpxServerReader().loadGpx(Long.parseLong(track.id));
if (data == null) {
return;
}
final GpxLayer gpxLayer = new GpxLayer(data);
if (data.hasRoutePoints() || data.hasTrackPoints()) {
Main.getLayerManager().addLayer(gpxLayer);
}
if (Main.pref.getBoolean("marker.makeautomarkers", true) && !data.waypoints.isEmpty()) {
MarkerLayer ml = new MarkerLayer(data, tr("Markers from {0}", track.filename), null, gpxLayer);
if (ml.data.size() > 0) {
Main.getLayerManager().addLayer(ml);
}
}
}
}
}