source: josm/trunk/src/org/openstreetmap/josm/gui/io/OnlineResourceMenu.java@ 19050

Last change on this file since 19050 was 19050, checked in by taylor.smock, 6 weeks ago

Revert most var changes from r19048, fix most new compile warnings and checkstyle issues

Also, document why various ErrorProne checks were originally disabled and fix
generic SonarLint issues.

File size: 3.2 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.io;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.awt.Component;
7import java.awt.event.ActionEvent;
8
9import javax.swing.JCheckBoxMenuItem;
10import javax.swing.JMenu;
11import javax.swing.JMenuItem;
12import javax.swing.event.MenuEvent;
13import javax.swing.event.MenuListener;
14
15import org.openstreetmap.josm.actions.ToggleAction;
16import org.openstreetmap.josm.io.NetworkManager;
17import org.openstreetmap.josm.io.OnlineResource;
18import org.openstreetmap.josm.tools.ImageProvider;
19
20/**
21 * Show list of {@link OnlineResource} to set online/offline via {@link NetworkManager}.
22 * @since 16823
23 */
24public class OnlineResourceMenu extends JMenu {
25
26 /**
27 * Constructs a new {@link OnlineResourceMenu}
28 */
29 public OnlineResourceMenu() {
30 super(tr("Work Offline..."));
31 setToolTipText(tr("Block network access to resources"));
32 setIcon(ImageProvider.get("offline", ImageProvider.ImageSizes.MENU));
33 addMenuListener(new ToggleMenuListener());
34
35 for (OnlineResource onlineResource : OnlineResource.values()) {
36 ToggleOnlineResourceAction action = new ToggleOnlineResourceAction(onlineResource);
37 JCheckBoxMenuItem item = new JCheckBoxMenuItem(action);
38 action.addButtonModel(item.getModel());
39 add(item);
40 }
41 }
42
43 private static class ToggleOnlineResourceAction extends ToggleAction {
44 private final OnlineResource onlineResource;
45
46 ToggleOnlineResourceAction(OnlineResource onlineResource) {
47 super(onlineResource.getLocName(), onlineResource.getOfflineIcon(), null, null, false);
48 this.onlineResource = onlineResource;
49 setToolbarId("menu:offline:" + onlineResource.name());
50 updateSelectedState();
51 }
52
53 @Override
54 public void actionPerformed(ActionEvent e) {
55 if (isOffline()) {
56 NetworkManager.setOnline(onlineResource);
57 } else {
58 NetworkManager.setOffline(onlineResource);
59 }
60 updateSelectedState();
61 }
62
63 private void updateSelectedState() {
64 setEnabled(onlineResource == OnlineResource.ALL || !NetworkManager.isOffline(OnlineResource.ALL));
65 setSelected(isOffline());
66 notifySelectedState();
67 }
68
69 private boolean isOffline() {
70 return NetworkManager.isOffline(onlineResource);
71 }
72
73 @Override
74 protected boolean listenToSelectionChange() {
75 return false;
76 }
77 }
78
79 private final class ToggleMenuListener implements MenuListener {
80 @Override
81 public void menuSelected(MenuEvent e) {
82 for (Component component : getMenuComponents()) {
83 JMenuItem menuItem = (JMenuItem) component;
84 ToggleOnlineResourceAction action = (ToggleOnlineResourceAction) menuItem.getAction();
85 action.updateSelectedState();
86 }
87 }
88
89 @Override
90 public void menuDeselected(MenuEvent e) {
91 // Do nothing
92 }
93
94 @Override
95 public void menuCanceled(MenuEvent e) {
96 // Do nothing
97 }
98 }
99}
Note: See TracBrowser for help on using the repository browser.