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

Last change on this file since 5508 was 5266, checked in by bastiK, 12 years ago

fixed majority of javadoc warnings by replacing "{@see" by "{@link"

  • Property svn:eol-style set to native
File size: 3.1 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;
12import java.util.ArrayList;
13import java.util.List;
14
15import javax.swing.ButtonModel;
16
17import org.openstreetmap.josm.gui.dialogs.changeset.ChangesetCacheManager;
18import org.openstreetmap.josm.tools.Shortcut;
19/**
20 * This action toggles the visibility of the {@link ChangesetCacheManager} dialog.
21 *
22 */
23public class ChangesetManagerToggleAction extends JosmAction {
24 private final List<ButtonModel> buttonModels = new ArrayList<ButtonModel>();
25 //FIXME: replace with property Action.SELECTED_KEY when migrating to
26 // Java 6
27 private boolean selected;
28 private WindowListener changesetCacheManagerClosedHandler;
29
30 public ChangesetManagerToggleAction() {
31 super(
32 tr("Changeset Manager"),
33 "dialogs/changeset/changesetmanager",
34 tr("Toggle visibility of Changeset Manager window"),
35 Shortcut.registerShortcut("menu:windows:changesetdialog",
36 tr("Toggle visibility of Changeset Manager window"),
37 KeyEvent.VK_C, Shortcut.ALT_CTRL),
38 true /* register shortcut */
39 );
40 notifySelectedState();
41 changesetCacheManagerClosedHandler = new ChangesetCacheManagerClosedHandler();
42 putValue("help", ht("/Dialog/ChangesetManager"));
43 }
44
45 public void addButtonModel(ButtonModel model) {
46 if (model != null && !buttonModels.contains(model)) {
47 buttonModels.add(model);
48 }
49 }
50
51 public void removeButtonModel(ButtonModel model) {
52 if (model != null && buttonModels.contains(model)) {
53 buttonModels.remove(model);
54 }
55 }
56
57 protected void notifySelectedState() {
58 for (ButtonModel model: buttonModels) {
59 if (model.isSelected() != selected) {
60 model.setSelected(selected);
61 }
62 }
63 }
64
65 protected void toggleSelectedState() {
66 selected = !selected;
67 notifySelectedState();
68 if (selected) {
69 ChangesetCacheManager.getInstance().addWindowListener(changesetCacheManagerClosedHandler);
70 ChangesetCacheManager.getInstance().setVisible(true);
71 } else {
72 ChangesetCacheManager.getInstance().removeWindowListener(changesetCacheManagerClosedHandler);
73 ChangesetCacheManager.destroyInstance();
74 }
75 }
76
77 public void actionPerformed(ActionEvent e) {
78 toggleSelectedState();
79 }
80
81 private class ChangesetCacheManagerClosedHandler extends WindowAdapter {
82 @Override
83 public void windowClosed(WindowEvent e) {
84 selected = false;
85 notifySelectedState();
86 ChangesetCacheManager.getInstance().removeWindowListener(changesetCacheManagerClosedHandler);
87 }
88 }
89}
Note: See TracBrowser for help on using the repository browser.