Ignore:
Timestamp:
2012-07-26T19:54:44+02:00 (12 years ago)
Author:
simon04
Message:

Suggest imagery layers for downloaded area based on <bounds>.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java

    r5345 r5369  
    55
    66import java.io.IOException;
     7import java.util.ArrayList;
    78import java.util.Collection;
     9import java.util.HashSet;
     10import java.util.List;
     11import java.util.Set;
    812import java.util.concurrent.Future;
    913import java.util.regex.Matcher;
    1014import java.util.regex.Pattern;
    1115
     16import javax.swing.JOptionPane;
    1217import org.openstreetmap.josm.Main;
    1318import org.openstreetmap.josm.data.Bounds;
    1419import org.openstreetmap.josm.data.coor.LatLon;
     20import org.openstreetmap.josm.data.imagery.ImageryInfo;
     21import org.openstreetmap.josm.data.imagery.ImageryLayerInfo;
    1522import org.openstreetmap.josm.data.osm.DataSet;
    1623import org.openstreetmap.josm.data.osm.DataSource;
    1724import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
     25import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
    1826import org.openstreetmap.josm.gui.PleaseWaitRunnable;
    1927import org.openstreetmap.josm.gui.layer.Layer;
     
    2533import org.openstreetmap.josm.io.OsmTransferCanceledException;
    2634import org.openstreetmap.josm.io.OsmTransferException;
     35import org.openstreetmap.josm.tools.Utils;
    2736import org.xml.sax.SAXException;
    2837
     
    6776    /**
    6877     * Loads a given URL from the OSM Server
    69      * @param True if the data should be saved to a new layer
    70      * @param The URL as String
     78     * @param new_layer True if the data should be saved to a new layer
     79     * @param url The URL as String
    7180     */
    7281    public Future<?> loadUrl(boolean new_layer, String url, ProgressMonitor progressMonitor) {
     
    216225                targetLayer.onPostDownloadFromServer();
    217226            }
     227
     228            suggestImageryLayers();
    218229        }
    219230       
     
    234245            }
    235246        }
     247
     248        protected void suggestImageryLayers() {
     249            final LatLon center = currentBounds.getCenter();
     250            final Set<ImageryInfo> layers = new HashSet<ImageryInfo>();
     251
     252            for (ImageryInfo i : ImageryLayerInfo.instance.getDefaultLayers()) {
     253                if (i.getBounds() != null && i.getBounds().contains(center)) {
     254                    layers.add(i);
     255                }
     256            }
     257            layers.removeAll(ImageryLayerInfo.instance.getLayers());
     258            if (layers.isEmpty()) {
     259                return;
     260            }
     261
     262            final List<String> layerNames = new ArrayList<String>();
     263            for (ImageryInfo i : layers) {
     264                layerNames.add(i.getName());
     265            }
     266
     267            if (!ConditionalOptionPaneUtil.showConfirmationDialog(
     268                    "download.suggest-imagery-layer",
     269                    Main.parent,
     270                    tr("<html>For the downloaded area, the following additional imagery layers are available: {0}" +
     271                            "Do you want to add those layers to the <em>Imagery</em> menu?" +
     272                            "<br>(If needed, you can remove those entries in the <em>Preferences</em>.)",
     273                            Utils.joinAsHtmlUnorderedList(layerNames)),
     274                    tr("Add imagery layers?"),
     275                    JOptionPane.YES_NO_OPTION,
     276                    JOptionPane.QUESTION_MESSAGE,
     277                    JOptionPane.YES_OPTION)) {
     278                return;
     279            }
     280
     281            ImageryLayerInfo.addLayers(layers);
     282        }
     283
    236284    }
    237285}
Note: See TracChangeset for help on using the changeset viewer.