Changeset 5085 in josm for trunk/src/org/openstreetmap/josm/gui/preferences/RemoteControlPreference.java
- Timestamp:
- 2012-03-14T23:33:27+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/preferences/RemoteControlPreference.java
r4976 r5085 9 9 import java.awt.event.ActionEvent; 10 10 import java.awt.event.ActionListener; 11 import java.util.LinkedHashMap; 12 import java.util.Map; 13 import java.util.Map.Entry; 11 14 12 15 import javax.swing.BorderFactory; … … 16 19 import javax.swing.JPanel; 17 20 import javax.swing.JSeparator; 18 import javax.swing.UIManager;19 21 20 22 import org.openstreetmap.josm.Main; 21 23 import org.openstreetmap.josm.gui.util.GuiHelper; 24 import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault; 22 25 import org.openstreetmap.josm.io.remotecontrol.RemoteControl; 23 import org.openstreetmap.josm.io.remotecontrol.handler.AddNodeHandler;24 import org.openstreetmap.josm.io.remotecontrol.handler.ImageryHandler;25 import org.openstreetmap.josm.io.remotecontrol.handler.ImportHandler;26 import org.openstreetmap.josm.io.remotecontrol.handler.LoadAndZoomHandler;27 26 import org.openstreetmap.josm.io.remotecontrol.handler.RequestHandler; 28 import org.openstreetmap.josm.io.remotecontrol.handler.VersionHandler;29 27 import org.openstreetmap.josm.tools.GBC; 30 28 … … 34 32 * @author Frederik Ramm 35 33 */ 36 public class RemoteControlPreference extends DefaultTabPreferenceSetting 37 { 34 public class RemoteControlPreference extends DefaultTabPreferenceSetting { 35 38 36 public static class Factory implements PreferenceSettingFactory { 37 39 38 @Override 40 39 public PreferenceSetting createPreferenceSetting() { … … 42 41 } 43 42 } 44 43 45 44 private RemoteControlPreference() { 46 45 super("remotecontrol", tr("Remote Control"), tr("Settings for the remote control feature.")); 46 for (PermissionPrefWithDefault p : PermissionPrefWithDefault.getPermissionPrefs()) { 47 JCheckBox cb = new JCheckBox(p.preferenceText); 48 cb.setSelected(p.isAllowed()); 49 prefs.put(p, cb); 50 } 47 51 } 48 52 private final Map<PermissionPrefWithDefault, JCheckBox> prefs = 53 new LinkedHashMap<PermissionPrefWithDefault, JCheckBox>(); 49 54 private JCheckBox enableRemoteControl; 50 51 private JCheckBox permissionLoadData = new JCheckBox(tr("Load data from API"));52 private JCheckBox permissionImportData = new JCheckBox(tr("Import data from URL"));53 private JCheckBox permissionLoadImagery = new JCheckBox(tr("Load imagery layers"));54 private JCheckBox permissionCreateObjects = new JCheckBox(tr("Create new objects"));55 private JCheckBox permissionChangeSelection = new JCheckBox(tr("Change the selection"));56 private JCheckBox permissionChangeViewport = new JCheckBox(tr("Change the viewport"));57 private JCheckBox permissionReadProtocolversion = new JCheckBox(tr("Read protocol version"));58 55 private JCheckBox loadInNewLayer = new JCheckBox(tr("Download objects to new layer")); 59 56 private JCheckBox alwaysAskUserConfirm = new JCheckBox(tr("Confirm all Remote Control actions manually")); 60 57 58 @Override 61 59 public void addGui(final PreferenceTabbedPane gui) { 62 60 63 61 JPanel remote = new JPanel(new GridBagLayout()); 62 63 final JLabel descLabel = new JLabel("<html>" 64 + tr("Allows JOSM to be controlled from other applications, e.g. from a web browser.") 65 + "</html>"); 66 descLabel.setFont(descLabel.getFont().deriveFont(Font.PLAIN)); 67 remote.add(descLabel, GBC.eol().insets(5, 5, 0, 10).fill(GBC.HORIZONTAL)); 68 69 final JLabel portLabel = new JLabel("<html>" + tr("JOSM will always listen at <b>port 8111</b> on localhost. " 70 + "<br>This port is not configurable because it is referenced by external applications talking to JOSM.") + "</html>"); 71 portLabel.setFont(portLabel.getFont().deriveFont(Font.PLAIN)); 72 remote.add(portLabel, GBC.eol().insets(5, 5, 0, 10).fill(GBC.HORIZONTAL)); 64 73 65 74 remote.add(enableRemoteControl = new JCheckBox(tr("Enable remote control"), RemoteControl.PROP_REMOTECONTROL_ENABLED.get()), GBC.eol()); … … 71 80 remote.add(wrapper, GBC.eol().fill(GBC.HORIZONTAL).insets(5, 5, 5, 5)); 72 81 73 final JLabel descLabel = new JLabel("<html>"+74 tr("The remote control feature allows JOSM to be controlled from other applications, e.g. from a web browser.")75 + "</html>");76 wrapper.add(descLabel, GBC.eol().insets(5,5,0,10).fill(GBC.HORIZONTAL));77 descLabel.setFont(descLabel.getFont().deriveFont(Font.PLAIN));78 79 82 wrapper.add(new JLabel(tr("Permitted actions:")), GBC.eol()); 80 83 int INDENT = 15; 81 wrapper.add(permissionLoadData, GBC.eol().insets(INDENT,5,0,0).fill(GBC.HORIZONTAL)); 82 wrapper.add(permissionImportData, GBC.eol().insets(INDENT,5,0,0).fill(GBC.HORIZONTAL)); 83 wrapper.add(permissionLoadImagery, GBC.eol().insets(INDENT,5,0,0).fill(GBC.HORIZONTAL)); 84 wrapper.add(permissionChangeSelection, GBC.eol().insets(INDENT,5,0,0).fill(GBC.HORIZONTAL)); 85 wrapper.add(permissionChangeViewport, GBC.eol().insets(INDENT,5,0,0).fill(GBC.HORIZONTAL)); 86 wrapper.add(permissionCreateObjects, GBC.eol().insets(INDENT,5,0,0).fill(GBC.HORIZONTAL)); 87 wrapper.add(permissionReadProtocolversion, GBC.eol().insets(INDENT,5,0,0).fill(GBC.HORIZONTAL)); 84 for (JCheckBox p : prefs.values()) { 85 wrapper.add(p, GBC.eol().insets(INDENT, 5, 0, 0).fill(GBC.HORIZONTAL)); 86 } 88 87 89 88 wrapper.add(new JSeparator(), GBC.eop().fill(GBC.HORIZONTAL).insets(15, 5, 15, 5)); 90 91 89 wrapper.add(loadInNewLayer, GBC.eol().fill(GBC.HORIZONTAL)); 92 93 90 wrapper.add(alwaysAskUserConfirm, GBC.eol().fill(GBC.HORIZONTAL)); 94 95 final JLabel portLabel = new JLabel("<html>"+tr("JOSM will always listen at port 8111 on localhost. " +96 "This port is not configurable because it is referenced by external applications talking to JOSM.") + "</html>");97 portLabel.setFont(portLabel.getFont().deriveFont(Font.PLAIN));98 99 wrapper.add(portLabel, GBC.eol().insets(5,5,0,10).fill(GBC.HORIZONTAL));100 91 101 92 remote.add(Box.createVerticalGlue(), GBC.eol().fill(GBC.VERTICAL)); 102 93 103 permissionLoadData.setSelected(Main.pref.getBoolean(LoadAndZoomHandler.loadDataPermissionKey, LoadAndZoomHandler.loadDataPermissionDefault));104 permissionImportData.setSelected(Main.pref.getBoolean(ImportHandler.permissionKey, ImportHandler.permissionDefault));105 permissionLoadImagery.setSelected(Main.pref.getBoolean(ImageryHandler.permissionKey, ImageryHandler.permissionDefault));106 permissionChangeSelection.setSelected(Main.pref.getBoolean(LoadAndZoomHandler.changeSelectionPermissionKey, LoadAndZoomHandler.changeSelectionPermissionDefault));107 permissionChangeViewport.setSelected(Main.pref.getBoolean(LoadAndZoomHandler.changeViewportPermissionKey, LoadAndZoomHandler.changeViewportPermissionDefault));108 permissionCreateObjects.setSelected(Main.pref.getBoolean(AddNodeHandler.permissionKey, AddNodeHandler.permissionDefault));109 permissionReadProtocolversion.setSelected(Main.pref.getBoolean(VersionHandler.permissionKey, VersionHandler.permissionDefault));110 94 loadInNewLayer.setSelected(Main.pref.getBoolean(RequestHandler.loadInNewLayerKey, RequestHandler.loadInNewLayerDefault)); 111 95 alwaysAskUserConfirm.setSelected(Main.pref.getBoolean(RequestHandler.globalConfirmationKey, RequestHandler.globalConfirmationDefault)); 112 96 113 97 ActionListener remoteControlEnabled = new ActionListener() { 98 99 @Override 114 100 public void actionPerformed(ActionEvent e) { 115 boolean enabled = enableRemoteControl.isSelected();116 101 GuiHelper.setEnabledRec(wrapper, enableRemoteControl.isSelected()); 117 102 // 'setEnabled(false)' does not work for JLabel with html text, so do it manually 118 portLabel.setForeground(enabled ? UIManager.getColor("Label.foreground") : UIManager.getColor("Label.disabledForeground"));119 descLabel.setForeground(enabled ? UIManager.getColor("Label.foreground") : UIManager.getColor("Label.disabledForeground"));120 103 // FIXME: use QuadStateCheckBox to make checkboxes unset when disabled 121 104 } … … 126 109 } 127 110 111 @Override 128 112 public boolean ok() { 129 113 boolean enabled = enableRemoteControl.isSelected(); 130 114 boolean changed = RemoteControl.PROP_REMOTECONTROL_ENABLED.put(enabled); 131 115 if (enabled) { 132 Main.pref.put(LoadAndZoomHandler.loadDataPermissionKey, permissionLoadData.isSelected()); 133 Main.pref.put(ImportHandler.permissionKey, permissionImportData.isSelected()); 134 Main.pref.put(ImageryHandler.permissionKey, permissionLoadImagery.isSelected()); 135 Main.pref.put(LoadAndZoomHandler.changeSelectionPermissionKey, permissionChangeSelection.isSelected()); 136 Main.pref.put(LoadAndZoomHandler.changeViewportPermissionKey, permissionChangeViewport.isSelected()); 137 Main.pref.put(AddNodeHandler.permissionKey, permissionCreateObjects.isSelected()); 138 Main.pref.put(VersionHandler.permissionKey, permissionReadProtocolversion.isSelected()); 116 for (Entry<PermissionPrefWithDefault, JCheckBox> p : prefs.entrySet()) { 117 Main.pref.put(p.getKey().pref, p.getValue().isSelected()); 118 } 139 119 Main.pref.put(RequestHandler.loadInNewLayerKey, loadInNewLayer.isSelected()); 140 120 Main.pref.put(RequestHandler.globalConfirmationKey, alwaysAskUserConfirm.isSelected());
Note:
See TracChangeset
for help on using the changeset viewer.