001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.download;
003
004import static org.openstreetmap.josm.tools.I18n.tr;
005
006import java.beans.PropertyChangeEvent;
007import java.beans.PropertyChangeListener;
008
009import org.openstreetmap.josm.data.Bounds;
010import org.openstreetmap.josm.gui.bbox.BBoxChooser;
011import org.openstreetmap.josm.gui.bbox.TileSelectionBBoxChooser;
012
013/**
014 * Tile selector.
015 *
016 * Provides a tile coordinate input field.
017 *
018 * @author Frederik Ramm
019 *
020 */
021public class TileSelection implements DownloadSelection, PropertyChangeListener {
022    private TileSelectionBBoxChooser chooser;
023    private DownloadDialog parent;
024
025    protected final void build() {
026        chooser = new TileSelectionBBoxChooser();
027        chooser.addPropertyChangeListener(this);
028    }
029
030    /**
031     * Constructs a new {@code TileSelection}.
032     */
033    public TileSelection() {
034        build();
035    }
036
037    @Override
038    public void addGui(final DownloadDialog gui) {
039        gui.addDownloadAreaSelector(chooser, tr("Tile Numbers"));
040        parent = gui;
041    }
042
043    @Override
044    public void setDownloadArea(Bounds area) {
045        chooser.setBoundingBox(area);
046    }
047
048    @Override
049    public void propertyChange(PropertyChangeEvent evt) {
050        if (evt.getPropertyName().equals(BBoxChooser.BBOX_PROP)) {
051            Bounds bbox = (Bounds) evt.getNewValue();
052            parent.boundingBoxChanged(bbox, this);
053        }
054    }
055}