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