| 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.ImageProvider;
|
|---|
| 15 | import org.openstreetmap.josm.tools.Shortcut;
|
|---|
| 16 |
|
|---|
| 17 | /**
|
|---|
| 18 | * This action toggles the visibility of the {@link ChangesetCacheManager} dialog.
|
|---|
| 19 | * @since 2685
|
|---|
| 20 | */
|
|---|
| 21 | public 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("Windows: {0}", tr("Changeset Manager")), KeyEvent.VK_C, Shortcut.ALT_CTRL),
|
|---|
| 33 | true /* register shortcut */, "dialogs/changeset/changesetmanager", false);
|
|---|
| 34 | notifySelectedState();
|
|---|
| 35 | changesetCacheManagerClosedHandler = new ChangesetCacheManagerClosedHandler();
|
|---|
| 36 | setHelpId(ht("/Dialog/ChangesetManager"));
|
|---|
| 37 | }
|
|---|
| 38 |
|
|---|
| 39 | @Override
|
|---|
| 40 | public void actionPerformed(ActionEvent e) {
|
|---|
| 41 | toggleSelectedState(e);
|
|---|
| 42 | notifySelectedState();
|
|---|
| 43 | if (isSelected()) {
|
|---|
| 44 | ChangesetCacheManager.getInstance().addWindowListener(changesetCacheManagerClosedHandler);
|
|---|
| 45 | ChangesetCacheManager.getInstance().setVisible(true);
|
|---|
| 46 | } else {
|
|---|
| 47 | ChangesetCacheManager.destroyInstance();
|
|---|
| 48 | }
|
|---|
| 49 | }
|
|---|
| 50 |
|
|---|
| 51 | private final class ChangesetCacheManagerClosedHandler extends WindowAdapter {
|
|---|
| 52 | @Override
|
|---|
| 53 | public void windowClosed(WindowEvent e) {
|
|---|
| 54 | setSelected(false);
|
|---|
| 55 | notifySelectedState();
|
|---|
| 56 | }
|
|---|
| 57 | }
|
|---|
| 58 | }
|
|---|