001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.layer.imagery;
003
004import static org.openstreetmap.josm.tools.I18n.tr;
005
006import java.awt.event.ActionEvent;
007
008import javax.swing.AbstractAction;
009
010import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
011
012/**
013 * Change resolution to best zoom level.
014 * @since 11950 (extracted from {@link AbstractTileSourceLayer})
015 */
016public class ZoomToBestAction extends AbstractAction {
017
018    private final AbstractTileSourceLayer<?> layer;
019
020    /**
021     * Constructs a new {@code ZoomToBestAction}.
022     * @param layer imagery layer
023     */
024    public ZoomToBestAction(AbstractTileSourceLayer<?> layer) {
025        super(tr("Change resolution"));
026        this.layer = layer;
027        setEnabled(!layer.getDisplaySettings().isAutoZoom() && layer.getBestZoom() != layer.getZoomLevel());
028    }
029
030    @Override
031    public void actionPerformed(ActionEvent ae) {
032        layer.setZoomLevel(layer.getBestZoom());
033    }
034}