* @author $author$
* @version $Revision$
*/
+/*
+ * for merge with Jalview-JS
+ public class Preferences extends GPreferences implements ApplicationSingletonI
+ */
public class Preferences extends GPreferences
{
public static final String ENABLE_SPLIT_FRAME = "ENABLE_SPLIT_FRAME";
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 getInstance()
+ {
+ if (INSTANCE == null || INSTANCE.frame == null
+ || INSTANCE.frame.isClosed())
+ {
+ INSTANCE = new Preferences();
+ }
+ return INSTANCE;
+
+ /*
+ * Replace code with the following for Jalvew-JS
+ Preferences INSTANCE = ApplicationSingletonProvider.getInstance(Preferences.class);
+ if (INSTANCE == null || INSTANCE.frame == null
+ || INSTANCE.frame.isClosed())
+ {
+ ApplicationSingletonProvider.remove(Preferences.class);
+ INSTANCE = ApplicationSingletonProvider.getInstance(Preferences.class);
+ }
+ return INSTANCE;
+ */
+ }
+
+ public static void openPreferences()
+ {
+ openPreferences(0, null);
+ }
+
+ public static void openPreferences(int selectTab, String message)
+ {
+ Preferences p = getInstance();
+ p.selectTab(selectTab);
+ p.setMessage(message);
+ p.frame.show();
+ p.frame.moveToFront();
+ p.frame.grabFocus();
+ }
+
/**
* Creates a new Preferences object.
*/
- public Preferences()
+ private Preferences()
{
super();
frame = new JInternalFrame();
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", ""));
proxyAuth.setSelected(Cache.getDefault("PROXY_AUTH", false));
proxyAuthUsernameTB
.setText(Cache.getDefault("PROXY_AUTH_USERNAME", ""));
- proxyAuthPasswordTB
- .setText(Cache.getDefault("PROXY_AUTH_PASSWORD", ""));
+ // 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());
- // Proxy settings
- Cache.applicationProperties.setProperty("USE_PROXY",
- customProxy.isSelected() ? Cache.PROXYTYPE_CUSTOM
- : noProxy.isSelected() ? Cache.PROXYTYPE_NONE
- : Cache.PROXYTYPE_SYSTEM);
- 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.setOrRemove("PROXY_AUTH_PASSWORD", proxyAuthPasswordTB.getText());
- setProxyFromSettings();
-
Cache.setProperty("VERSION_CHECK",
Boolean.toString(versioncheck.isSelected()));
if (Cache.getProperty("USAGESTATS") != null || usagestats.isSelected())
}
}
- public void setProxyFromSettings()
+ public void saveProxySettings()
{
- String proxyType = Cache.getDefault("USE_PROXY",
- Cache.PROXYTYPE_SYSTEM);
- if (proxyType.equals(Cache.PROXYTYPE_NONE))
- {
- if (!previousProxyType.equals(proxyType))
- Cache.log.info("Setting no proxy settings");
- Cache.setProxyProperties(null, null, null, null, null, null, null,
- null);
- }
- else if (proxyType.equals(Cache.PROXYTYPE_CUSTOM))
- {
- if (!previousProxyType.equals(proxyType))
- Cache.log.info("Setting custom proxy settings");
- boolean proxyAuthSet = Cache.getDefault("PROXY_AUTH", false);
- Cache.setProxyProperties(Cache.getDefault("PROXY_SERVER", null),
- Cache.getDefault("PROXY_PORT", null),
- Cache.getDefault("PROXY_SERVER_HTTPS", null),
- Cache.getDefault("PROXY_PORT_HTTPS", null),
- proxyAuthSet ? Cache.getDefault("PROXY_AUTH_USERNAME", "")
- : null,
- proxyAuthSet ? Cache.getDefault("PROXY_AUTH_PASSWORD", "")
- : null);
- }
- else // systemProxy should be selected and is sensible default anyway
+ 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))
{
- if (!previousProxyType.equals(proxyType))
- Cache.log.info("Setting system proxy settings");
- Cache.resetProxyProperties();
+ // force a re-lookup of ws if proxytype is custom or has changed
+ wsPrefs.update++;
}
+ previousProxyType = newProxyType;
}
/**