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.gui.MainApplication;
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        MainApplication.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 (!MainApplication.isDisplayingMapView()) return;
035        MainApplication.getMap().mapView.zoomOut();
036    }
037
038    @Override
039    protected void updateEnabledState() {
040        setEnabled(!getLayerManager().getLayers().isEmpty());
041    }
042}