001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.actions; 003 004import static org.openstreetmap.josm.gui.help.HelpUtil.ht; 005import static org.openstreetmap.josm.tools.I18n.tr; 006 007import java.awt.event.ActionEvent; 008import java.awt.event.KeyEvent; 009 010import org.openstreetmap.josm.Main; 011import org.openstreetmap.josm.tools.Shortcut; 012 013/** 014 * Zoom out map. 015 * @since 770 016 */ 017public final class ZoomOutAction extends JosmAction { 018 019 /** 020 * Constructs a new {@code ZoomOutAction}. 021 */ 022 public ZoomOutAction() { 023 super(tr("Zoom Out"), "dialogs/zoomout", tr("Zoom Out"), 024 Shortcut.registerShortcut("view:zoomout", tr("View: {0}", tr("Zoom Out")), KeyEvent.VK_MINUS, Shortcut.DIRECT), true); 025 putValue("help", ht("/Action/ZoomOut")); 026 // make numpad - behave like - 027 Main.registerActionShortcut(this, 028 Shortcut.registerShortcut("view:zoomoutkeypad", tr("View: {0}", tr("Zoom Out (Keypad)")), 029 KeyEvent.VK_SUBTRACT, Shortcut.DIRECT)); 030 } 031 032 @Override 033 public void actionPerformed(ActionEvent e) { 034 if (!Main.isDisplayingMapView()) return; 035 Main.map.mapView.zoomOut(); 036 } 037 038 @Override 039 protected void updateEnabledState() { 040 setEnabled( 041 Main.isDisplayingMapView() 042 && Main.map.mapView.hasLayers() 043 ); 044 } 045}