001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.actions; 003 004import static org.openstreetmap.josm.tools.I18n.tr; 005 006import java.awt.event.ActionEvent; 007import java.awt.event.KeyEvent; 008 009import org.openstreetmap.josm.Main; 010import org.openstreetmap.josm.data.osm.visitor.paint.MapRendererFactory; 011import org.openstreetmap.josm.data.osm.visitor.paint.StyledMapRenderer; 012import org.openstreetmap.josm.data.osm.visitor.paint.WireframeMapRenderer; 013import org.openstreetmap.josm.tools.Shortcut; 014 015/** 016 * This class toggles the wireframe rendering mode. 017 * @since 2530 018 */ 019public class WireframeToggleAction extends ToggleAction { 020 021 /** 022 * Constructs a new {@code WireframeToggleAction}. 023 */ 024 public WireframeToggleAction() { 025 super(tr("Wireframe View"), 026 null, /* no icon */ 027 tr("Enable/disable rendering the map as wireframe only"), 028 Shortcut.registerShortcut("menu:view:wireframe", tr("Toggle Wireframe view"), KeyEvent.VK_W, Shortcut.CTRL), 029 false /* register toolbar */ 030 ); 031 putValue("toolbar", "wireframe"); 032 Main.toolbar.register(this); 033 setSelected(MapRendererFactory.getInstance().isWireframeMapRendererActive()); 034 notifySelectedState(); 035 } 036 037 @Override 038 protected void updateEnabledState() { 039 setEnabled(Main.main.hasEditLayer()); 040 } 041 042 @Override 043 public void actionPerformed(ActionEvent e) { 044 toggleSelectedState(e); 045 if (isSelected()) { 046 MapRendererFactory.getInstance().activate(WireframeMapRenderer.class); 047 } else { 048 MapRendererFactory.getInstance().activate(StyledMapRenderer.class); 049 } 050 051 notifySelectedState(); 052 if (Main.isDisplayingMapView()) { 053 Main.map.mapView.repaint(); 054 } 055 } 056}