// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.actions; import static org.openstreetmap.josm.tools.I18n.tr; import java.awt.event.ActionEvent; import java.util.concurrent.Future; import org.openstreetmap.josm.Main; import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask; import org.openstreetmap.josm.actions.downloadtasks.PostDownloadHandler; import org.openstreetmap.josm.data.Bounds; import org.openstreetmap.josm.io.BoundingBoxDownloader; import org.openstreetmap.josm.io.OnlineResource; /** * Action that downloads the OSM data within the current view from the server. * * No interaction is required. */ public final class DownloadOsmInViewAction extends JosmAction { /** * Creates a new {@code DownloadOsmInViewAction}. */ public DownloadOsmInViewAction() { super(tr("Download in current view"), "download_in_view", tr("Download map data from the OSM server in current view"), null, false, "dialogs/download_in_view", true); } @Override public void actionPerformed(ActionEvent e) { final Bounds bounds = Main.map.mapView.getRealBounds(); DownloadOsmInViewTask task = new DownloadOsmInViewTask(); task.setZoomAfterDownload(false); Future<?> future = task.download(bounds); Main.worker.submit(new PostDownloadHandler(task, future)); } @Override protected void updateEnabledState() { setEnabled(Main.getLayerManager().getActiveLayer() != null && !Main.isOffline(OnlineResource.OSM_API)); } private static class DownloadOsmInViewTask extends DownloadOsmTask { Future<?> download(Bounds downloadArea) { return download(new DownloadTask(false, new BoundingBoxDownloader(downloadArea), null, false), downloadArea); } } }