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.ImageProvider; 012import org.openstreetmap.josm.tools.Shortcut; 013 014/** 015* This action toggles visibility of dialogs panel and other panels to free more space for drawing (GIMP-like) 016* @author cmuelle8 017* @since 5965 018*/ 019public class DialogsToggleAction extends ToggleAction { 020 021 /** 022 * Constructs a new {@code DialogsToggleAction}. 023 */ 024 public DialogsToggleAction() { 025 super(tr("Toggle dialogs panel"), 026 (ImageProvider) null, /* no icon */ 027 tr("Toggle dialogs panel, maximize mapview"), 028 Shortcut.registerShortcut("menu:view:dialogspanel", tr("Toggle dialogs panel"), KeyEvent.VK_TAB, Shortcut.DIRECT), 029 true, "dialogspanel", /* register in toolbar */ 030 false 031 ); 032 putValue("help", ht("/Action/ToggleDialogsPanel")); 033 setSelected(Main.pref.getBoolean("draw.dialogspanel", true)); 034 notifySelectedState(); 035 } 036 037 @Override 038 public void actionPerformed(ActionEvent e) { 039 toggleSelectedState(e); 040 Main.pref.put("draw.dialogspanel", isSelected()); 041 notifySelectedState(); 042 setMode(); 043 } 044 045 protected void setMode() { 046 if (Main.isDisplayingMapView()) { 047 boolean selected = isSelected(); 048 Main.map.setDialogsPanelVisible(selected); 049 Main.map.statusLine.setVisible(selected || Main.pref.getBoolean("statusbar.always-visible", true)); 050 Main.main.menu.setVisible(selected || Main.pref.getBoolean("menu.always-visible", true)); 051 // Toolbars listen to preference changes, use it here 052 if (!Main.pref.getBoolean("toolbar.always-visible", true)) { 053 Main.pref.put("toolbar.visible", selected); 054 } 055 if (!Main.pref.getBoolean("sidetoolbar.always-visible", true)) { 056 Main.pref.put("sidetoolbar.visible", selected); 057 } 058 Main.map.mapView.rememberLastPositionOnScreen(); 059 } 060 } 061}