kopia lustrzana https://github.com/JOSM/MapWithAI
Add dialog box for large download amounts
Signed-off-by: Taylor Smock <taylor.smock@kaart.com>pull/1/head
rodzic
5ca5b11e06
commit
199728572b
|
@ -1,6 +1,8 @@
|
||||||
// License: GPL. For details, see LICENSE file.
|
// License: GPL. For details, see LICENSE file.
|
||||||
package org.openstreetmap.josm.plugins.mapwithai.backend;
|
package org.openstreetmap.josm.plugins.mapwithai.backend;
|
||||||
|
|
||||||
|
import static org.openstreetmap.josm.tools.I18n.tr;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
@ -12,6 +14,8 @@ import java.util.concurrent.ForkJoinPool;
|
||||||
import java.util.concurrent.locks.Lock;
|
import java.util.concurrent.locks.Lock;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
|
|
||||||
import org.openstreetmap.josm.data.Bounds;
|
import org.openstreetmap.josm.data.Bounds;
|
||||||
import org.openstreetmap.josm.data.UndoRedoHandler;
|
import org.openstreetmap.josm.data.UndoRedoHandler;
|
||||||
import org.openstreetmap.josm.data.coor.LatLon;
|
import org.openstreetmap.josm.data.coor.LatLon;
|
||||||
|
@ -21,6 +25,7 @@ import org.openstreetmap.josm.data.osm.Node;
|
||||||
import org.openstreetmap.josm.data.osm.OsmPrimitive;
|
import org.openstreetmap.josm.data.osm.OsmPrimitive;
|
||||||
import org.openstreetmap.josm.data.osm.Relation;
|
import org.openstreetmap.josm.data.osm.Relation;
|
||||||
import org.openstreetmap.josm.data.osm.Way;
|
import org.openstreetmap.josm.data.osm.Way;
|
||||||
|
import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
|
||||||
import org.openstreetmap.josm.gui.MainApplication;
|
import org.openstreetmap.josm.gui.MainApplication;
|
||||||
import org.openstreetmap.josm.gui.layer.OsmDataLayer;
|
import org.openstreetmap.josm.gui.layer.OsmDataLayer;
|
||||||
import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
|
import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
|
||||||
|
@ -38,6 +43,7 @@ import org.openstreetmap.josm.tools.Utils;
|
||||||
*/
|
*/
|
||||||
public final class MapWithAIDataUtils {
|
public final class MapWithAIDataUtils {
|
||||||
public static final int MAXIMUM_SIDE_DIMENSIONS = 10_000; // RapiD is about 1km, max is 10km
|
public static final int MAXIMUM_SIDE_DIMENSIONS = 10_000; // RapiD is about 1km, max is 10km
|
||||||
|
private static final int TOO_MANY_BBOXES = 20;
|
||||||
private static ForkJoinPool forkJoinPool;
|
private static ForkJoinPool forkJoinPool;
|
||||||
static final Object LAYER_LOCK = new Object();
|
static final Object LAYER_LOCK = new Object();
|
||||||
|
|
||||||
|
@ -146,11 +152,16 @@ public final class MapWithAIDataUtils {
|
||||||
public static DataSet getData(List<BBox> bbox) {
|
public static DataSet getData(List<BBox> bbox) {
|
||||||
final DataSet dataSet = new DataSet();
|
final DataSet dataSet = new DataSet();
|
||||||
final List<BBox> realBBoxes = bbox.stream().filter(BBox::isValid).distinct().collect(Collectors.toList());
|
final List<BBox> realBBoxes = bbox.stream().filter(BBox::isValid).distinct().collect(Collectors.toList());
|
||||||
final PleaseWaitProgressMonitor monitor = new PleaseWaitProgressMonitor();
|
if (realBBoxes.size() < TOO_MANY_BBOXES || ConditionalOptionPaneUtil.showConfirmationDialog(
|
||||||
getForkJoinPool().invoke(new GetDataRunnable(realBBoxes, dataSet, monitor));
|
MapWithAIPlugin.NAME.concat(".alwaysdownload"), null,
|
||||||
monitor.finishTask();
|
tr("You are going to make {0} requests to the MapWithAI server. This may take some time. <br /> Continue?",
|
||||||
monitor.close();
|
realBBoxes.size()),
|
||||||
|
null, JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE, JOptionPane.YES_OPTION)) {
|
||||||
|
final PleaseWaitProgressMonitor monitor = new PleaseWaitProgressMonitor();
|
||||||
|
getForkJoinPool().invoke(new GetDataRunnable(realBBoxes, dataSet, monitor));
|
||||||
|
monitor.finishTask();
|
||||||
|
monitor.close();
|
||||||
|
}
|
||||||
return dataSet;
|
return dataSet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue