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 ZoomInAction extends JosmAction {
016    
017        public ZoomInAction() {
018            super(
019                    tr("Zoom In"),
020                    "dialogs/zoomin",
021                    tr("Zoom In"),
022                    Shortcut.registerShortcut("view:zoomin", tr("View: {0}", tr("Zoom In")),KeyEvent.VK_PLUS, Shortcut.DIRECT),
023                    true
024            );
025            putValue("help", ht("/Action/ZoomIn"));
026            // make numpad + behave like +
027            Main.registerActionShortcut(this,
028                Shortcut.registerShortcut("view:zoominkeypad", tr("View: {0}", tr("Zoom In (Keypad)")),
029                    KeyEvent.VK_ADD, Shortcut.DIRECT));
030        }
031    
032        public void actionPerformed(ActionEvent e) {
033            if (!Main.isDisplayingMapView()) return;
034            Main.map.mapView.zoomToFactor(1/Math.sqrt(2));
035        }
036    
037        @Override
038        protected void updateEnabledState() {
039            setEnabled(
040                    Main.isDisplayingMapView()
041                    && Main.map.mapView.hasLayers()
042            );
043        }
044    
045    }