X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FPreferences.java;h=65b333ef84f8d80f101ba3f4855d862236e034af;hb=197e43e3b7bc447d36ebdd690f1e8133b4f6262b;hp=f337898415aeae7010b9338a52fa35093039faed;hpb=a934d28336923f2966aeac29f7d1a877e5db1cec;p=jalview.git diff --git a/src/jalview/gui/Preferences.java b/src/jalview/gui/Preferences.java index f337898..65b333e 100755 --- a/src/jalview/gui/Preferences.java +++ b/src/jalview/gui/Preferences.java @@ -127,6 +127,10 @@ public class Preferences extends GPreferences 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 ./=$ @@ -186,10 +190,41 @@ public class Preferences extends GPreferences 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(); @@ -537,26 +572,34 @@ public class Preferences extends GPreferences } 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", "")); @@ -655,6 +698,11 @@ public class Preferences extends GPreferences return; } + /* + * Set proxy settings first (to be before web services refresh) + */ + saveProxySettings(); + /* * Save Visual settings */ @@ -798,6 +846,8 @@ public class Preferences extends GPreferences /* * Save Connections settings */ + // Proxy settings set first (to catch web services) + Cache.setOrRemove("DEFAULT_BROWSER", defaultBrowser.getText()); jalview.util.BrowserLauncher.resetBrowser(); @@ -828,36 +878,6 @@ public class Preferences extends GPreferences 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()) @@ -954,6 +974,30 @@ public class Preferences extends GPreferences } } + 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.