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 /** 046 * To call if this action must be initially run at JOSM startup. 047 */ 048 public void initial() { 049 if (isSelected()) { 050 setMode(); 051 } 052 } 053 054 protected void setMode() { 055 if (Main.isDisplayingMapView()) { 056 boolean selected = isSelected(); 057 Main.map.setDialogsPanelVisible(selected); 058 Main.map.statusLine.setVisible(selected || Main.pref.getBoolean("statusbar.always-visible", true)); 059 Main.toolbar.control.setVisible(selected || Main.pref.getBoolean("toolbar.always-visible", true)); 060 Main.main.menu.setVisible(selected || Main.pref.getBoolean("menu.always-visible", true)); 061 // sideToolBar listens to preference changes, use it here 062 if (!Main.pref.getBoolean("sidetoolbar.always-visible", true)) { 063 Main.pref.put("sidetoolbar.visible", selected); 064 } 065 Main.map.mapView.rememberLastPositionOnScreen(); 066 } 067 } 068}