private static final int MAX_FONT_SIZE = 30;
+ private String previousProxyType;
+
+ private static Preferences INSTANCE = null; // add "final"
+
/**
* Holds name and link separated with | character. Sequence ID must be
* $SEQUENCE_ID$ or $SEQUENCE_ID=/.possible | chars ./=$
private OptionsParam textOpt = new OptionsParam(
MessageManager.getString("action.text"), "Text");
+ // get singleton Preferences instance
+ public static Preferences getPreferences()
+ {
+ return getPreferences(0, null);
+ }
+
+ public static Preferences getPreferences(int selectTab, String message)
+ {
+ if (INSTANCE == null || INSTANCE.frame == null
+ || INSTANCE.frame.isClosed())
+ {
+ INSTANCE = new Preferences();
+ }
+ INSTANCE.selectTab(selectTab);
+ INSTANCE.setMessage(message);
+ return INSTANCE;
+ }
+
+ public static void openPreferences()
+ {
+ openPreferences(0, null);
+ }
+
+ public static void openPreferences(int selectTab, String message)
+ {
+ Preferences p = getPreferences(selectTab, message);
+ p.frame.show();
+ p.frame.moveToFront();
+ p.frame.grabFocus();
+ }
+
/**
* Creates a new Preferences object.
*/
- public Preferences()
+ private Preferences()
{
super();
frame = new JInternalFrame();
}
String proxyTypeString = Cache.getDefault("USE_PROXY", "false");
+ previousProxyType = proxyTypeString;
switch (proxyTypeString)
{
- case "none":
+ case Cache.PROXYTYPE_NONE:
proxyType.setSelected(noProxy.getModel(), true);
break;
- case "false":
+ case Cache.PROXYTYPE_SYSTEM:
proxyType.setSelected(systemProxy.getModel(), true);
break;
- case "true":
+ case Cache.PROXYTYPE_CUSTOM:
proxyType.setSelected(customProxy.getModel(), true);
break;
default:
- String message = "Incorrect PROXY_TYPE - should be 'none' (clear proxy properties), 'false' (system settings), 'true' (custom settings): "
- + proxyTypeString;
- Cache.log.warn(message);
+ Cache.log.warn(
+ "Incorrect PROXY_TYPE - should be 'none' (clear proxy properties), 'false' (system settings), 'true' (custom settings): "
+ + proxyTypeString);
}
proxyServerHttpTB.setText(Cache.getDefault("PROXY_SERVER", ""));
proxyPortHttpTB.setText(Cache.getDefault("PROXY_PORT", ""));
proxyServerHttpsTB.setText(Cache.getDefault("PROXY_SERVER_HTTPS", ""));
proxyPortHttpsTB.setText(Cache.getDefault("PROXY_PORT_HTTPS", ""));
+ proxyAuth.setSelected(Cache.getDefault("PROXY_AUTH", false));
+ proxyAuthUsernameTB
+ .setText(Cache.getDefault("PROXY_AUTH_USERNAME", ""));
+ // we are not storing or retrieving proxy password from .jalview_properties
+ proxyAuthPasswordPB.setText(Cache.proxyAuthPassword == null ? ""
+ : new String(Cache.proxyAuthPassword));
+ setCustomProxyEnabled();
defaultBrowser.setText(Cache.getDefault("DEFAULT_BROWSER", ""));
return;
}
+ /*
+ * Set proxy settings first (to be before web services refresh)
+ */
+ saveProxySettings();
+
/*
* Save Visual settings
*/
/*
* Save Connections settings
*/
+ // Proxy settings set first (to catch web services)
+
Cache.setOrRemove("DEFAULT_BROWSER", defaultBrowser.getText());
jalview.util.BrowserLauncher.resetBrowser();
Cache.applicationProperties.setProperty("DEFAULT_URL",
sequenceUrlLinks.getPrimaryUrlId());
- Cache.applicationProperties.setProperty("USE_PROXY",
- customProxy.isSelected() ? "true"
- : noProxy.isSelected() ? "none" : "false");
-
- Cache.setOrRemove("PROXY_SERVER", proxyServerHttpTB.getText());
-
- Cache.setOrRemove("PROXY_PORT", proxyPortHttpTB.getText());
-
- Cache.setOrRemove("PROXY_SERVER_HTTPS", proxyServerHttpsTB.getText());
-
- Cache.setOrRemove("PROXY_PORT_HTTPS", proxyPortHttpsTB.getText());
-
- if (noProxy.isSelected())
- {
- Cache.log.warn("Setting no proxy settings");
- Cache.setProxyProperties(null, null, null, null);
- }
- else if (customProxy.isSelected())
- {
- Cache.log.warn("Setting custom proxy settings");
- Cache.setProxyProperties(proxyServerHttpTB.getText(),
- proxyPortHttpTB.getText(), proxyServerHttpsTB.getText(),
- proxyPortHttpsTB.getText());
- }
- else // systemProxy should be selected and is sensible default
- {
- Cache.log.warn("Setting system proxy settings");
- Cache.resetProxyProperties();
- }
-
Cache.setProperty("VERSION_CHECK",
Boolean.toString(versioncheck.isSelected()));
if (Cache.getProperty("USAGESTATS") != null || usagestats.isSelected())
}
}
+ public void saveProxySettings()
+ {
+ String newProxyType = customProxy.isSelected() ? Cache.PROXYTYPE_CUSTOM
+ : noProxy.isSelected() ? Cache.PROXYTYPE_NONE
+ : Cache.PROXYTYPE_SYSTEM;
+ Cache.applicationProperties.setProperty("USE_PROXY", newProxyType);
+ Cache.setOrRemove("PROXY_SERVER", proxyServerHttpTB.getText());
+ Cache.setOrRemove("PROXY_PORT", proxyPortHttpTB.getText());
+ Cache.setOrRemove("PROXY_SERVER_HTTPS", proxyServerHttpsTB.getText());
+ Cache.setOrRemove("PROXY_PORT_HTTPS", proxyPortHttpsTB.getText());
+ Cache.setOrRemove("PROXY_AUTH",
+ Boolean.toString(proxyAuth.isSelected()));
+ Cache.setOrRemove("PROXY_AUTH_USERNAME", proxyAuthUsernameTB.getText());
+ Cache.proxyAuthPassword = proxyAuthPasswordPB.getPassword();
+ Cache.setProxyPropertiesFromPreferences(previousProxyType);
+ if (newProxyType.equals(Cache.PROXYTYPE_CUSTOM)
+ || !newProxyType.equals(previousProxyType))
+ {
+ // force a re-lookup of ws if proxytype is custom or has changed
+ wsPrefs.update++;
+ }
+ previousProxyType = newProxyType;
+ }
+
/**
* Do any necessary validation before saving settings. Return focus to the
* first tab which fails validation.