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