001// License: GPL. See LICENSE file for details.
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 * Tile selector.
014 *
015 * Provides a tile coordinate input field.
016 *
017 * @author Frederik Ramm
018 *
019 */
020public class TileSelection implements DownloadSelection, PropertyChangeListener {
021    private TileSelectionBBoxChooser chooser;
022    private DownloadDialog parent;
023
024    protected final void build() {
025        chooser = new TileSelectionBBoxChooser();
026        chooser.addPropertyChangeListener(this);
027    }
028
029    /**
030     * Constructs a new {@code TileSelection}.
031     */
032    public TileSelection() {
033        build();
034    }
035
036    @Override
037    public void addGui(final DownloadDialog gui) {
038        gui.addDownloadAreaSelector(chooser, tr("Tile Numbers"));
039        parent = gui;
040    }
041
042    @Override
043    public void setDownloadArea(Bounds area) {
044        chooser.setBoundingBox(area);
045    }
046
047    @Override
048    public void propertyChange(PropertyChangeEvent evt) {
049        if (evt.getPropertyName().equals(BBoxChooser.BBOX_PROP)) {
050            Bounds bbox = (Bounds)evt.getNewValue();
051            parent.boundingBoxChanged(bbox, this);
052        }
053    }
054}