source: josm/trunk/src/org/openstreetmap/josm/actions/ChangesetManagerToggleAction.java@ 16509

Last change on this file since 16509 was 16509, checked in by GerdP, 4 years ago

see #19296: Actions should avoid to install listeners which are not needed

  • either don't call installAdapters() or overwrite listenToSelectionChange()
  • partly reverts previous changes so that installAdapters() is not overwritten

One has to be careful because installAdapters() also calls initEnabledState()

  • Property svn:eol-style set to native
File size: 2.2 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.actions;
3
4import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
5import static org.openstreetmap.josm.tools.I18n.tr;
6
7import java.awt.event.ActionEvent;
8import java.awt.event.KeyEvent;
9import java.awt.event.WindowAdapter;
10import java.awt.event.WindowEvent;
11import java.awt.event.WindowListener;
12
13import org.openstreetmap.josm.gui.dialogs.changeset.ChangesetCacheManager;
14import org.openstreetmap.josm.tools.ImageProvider;
15import org.openstreetmap.josm.tools.Shortcut;
16
17/**
18 * This action toggles the visibility of the {@link ChangesetCacheManager} dialog.
19 * @since 2685
20 */
21public class ChangesetManagerToggleAction extends ToggleAction {
22 private final transient WindowListener changesetCacheManagerClosedHandler;
23
24 /**
25 * Constructs a new {@code ChangesetManagerToggleAction}.
26 */
27 public ChangesetManagerToggleAction() {
28 super(tr("Changeset Manager"),
29 new ImageProvider("dialogs/changeset/changesetmanager").setOptional(true),
30 tr("Toggle visibility of Changeset Manager window"),
31 Shortcut.registerShortcut("menu:windows:changesetdialog",
32 tr("Toggle visibility of Changeset Manager window"),
33 KeyEvent.VK_C, Shortcut.ALT_CTRL),
34 true /* register shortcut */, null, false
35 );
36 notifySelectedState();
37 changesetCacheManagerClosedHandler = new ChangesetCacheManagerClosedHandler();
38 setHelpId(ht("/Dialog/ChangesetManager"));
39 }
40
41 @Override
42 public void actionPerformed(ActionEvent e) {
43 toggleSelectedState(e);
44 notifySelectedState();
45 if (isSelected()) {
46 ChangesetCacheManager.getInstance().addWindowListener(changesetCacheManagerClosedHandler);
47 ChangesetCacheManager.getInstance().setVisible(true);
48 } else {
49 ChangesetCacheManager.destroyInstance();
50 }
51 }
52
53 private class ChangesetCacheManagerClosedHandler extends WindowAdapter {
54 @Override
55 public void windowClosed(WindowEvent e) {
56 setSelected(false);
57 notifySelectedState();
58 }
59 }
60}
Note: See TracBrowser for help on using the repository browser.