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        if (gui != null)
040            gui.addDownloadAreaSelector(chooser, tr("Tile Numbers"));
041        parent = gui;
042    }
043
044    @Override
045    public void setDownloadArea(Bounds area) {
046        chooser.setBoundingBox(area);
047    }
048
049    @Override
050    public void propertyChange(PropertyChangeEvent evt) {
051        if (evt.getPropertyName().equals(BBoxChooser.BBOX_PROP)) {
052            Bounds bbox = (Bounds) evt.getNewValue();
053            parent.boundingBoxChanged(bbox, this);
054        }
055    }
056}