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