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.MainApplication; 011import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer; 012 013/** 014 * Change resolution to native zoom level. 015 * @since 11950 (extracted from {@link AbstractTileSourceLayer}) 016 */ 017public class ZoomToNativeLevelAction extends AbstractAction { 018 019 private final AbstractTileSourceLayer<?> layer; 020 021 /** 022 * Constructs a new {@code ZoomToNativeLevelAction}. 023 * @param layer imagery layer 024 */ 025 public ZoomToNativeLevelAction(AbstractTileSourceLayer<?> layer) { 026 super(tr("Zoom to native resolution")); 027 this.layer = layer; 028 } 029 030 @Override 031 public void actionPerformed(ActionEvent ae) { 032 double newFactor = Math.sqrt(layer.getScaleFactor(layer.getZoomLevel())); 033 MainApplication.getMap().mapView.zoomToFactor(newFactor); 034 layer.invalidate(); 035 } 036}