001    // License: GPL. Copyright 2007 by Immanuel Scholz and others
002    package org.openstreetmap.josm.actions;
003    
004    import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
005    import static org.openstreetmap.josm.tools.I18n.tr;
006    
007    import java.awt.event.ActionEvent;
008    import java.awt.event.KeyEvent;
009    
010    import javax.swing.KeyStroke;
011    
012    import org.openstreetmap.josm.Main;
013    import org.openstreetmap.josm.tools.Shortcut;
014    
015    public final class ZoomOutAction extends JosmAction {
016    
017        public ZoomOutAction() {
018            super(tr("Zoom Out"), "dialogs/zoomout", tr("Zoom Out"),
019                    Shortcut.registerShortcut("view:zoomout", tr("View: {0}", tr("Zoom Out")), KeyEvent.VK_MINUS, Shortcut.DIRECT), true);
020            putValue("help", ht("/Action/ZoomOut"));
021            // make numpad - behave like -
022            Main.registerActionShortcut(this,
023                Shortcut.registerShortcut("view:zoomoutkeypad", tr("View: {0}", tr("Zoom Out (Keypad)")),
024                    KeyEvent.VK_SUBTRACT, Shortcut.DIRECT));
025        }
026    
027        public void actionPerformed(ActionEvent e) {
028            if (!Main.isDisplayingMapView()) return;
029            Main.map.mapView.zoomToFactor(Math.sqrt(2));
030        }
031    
032        @Override
033        protected void updateEnabledState() {
034            setEnabled(
035                    Main.isDisplayingMapView()
036                    && Main.map.mapView.hasLayers()
037            );
038        }
039    }