JAL-2422 More helpful highlighting/user guidance of missing structure viewer path
[jalview.git] / src / jalview / bin / Cache.java
index 4a83b35..216b498 100755 (executable)
@@ -370,16 +370,24 @@ public class Cache
   }
 
   /**
-   * Loads properties from the given properties file. Any existing properties
-   * are first cleared.
+   * Loads properties from the given properties file. Any existing properties are
+   * first cleared.
    */
   public static void loadProperties(String propsFile)
   {
     propertiesFile = propsFile;
+    String releasePropertiesFile = null;
+    boolean defaultProperties = false;
     if (propsFile == null && !propsAreReadOnly)
     {
+      String channelPrefsFilename = ChannelProperties
+              .getProperty("preferences.filename");
+      String releasePrefsFilename = ".jalview_properties";
       propertiesFile = System.getProperty("user.home") + File.separatorChar
-              + ".jalview_properties";
+              + channelPrefsFilename;
+      releasePropertiesFile = System.getProperty("user.home")
+              + File.separatorChar + releasePrefsFilename;
+      defaultProperties = true;
     }
     else
     {
@@ -399,20 +407,29 @@ public class Cache
         InputStream fis;
         try
         {
+          // props file provided as URL
           fis = new URL(propertiesFile).openStream();
           System.out.println(
                   "Loading jalview properties from : " + propertiesFile);
           System.out.println(
                   "Disabling Jalview writing to user's local properties file.");
           propsAreReadOnly = true;
-
         } catch (Exception ex)
         {
           fis = null;
         }
         if (fis == null)
         {
-          fis = new FileInputStream(propertiesFile);
+          String readPropertiesFile = propertiesFile;
+          // if we're using the usual properties file and the channel properties
+          // file doesn't exist, read .jalview_properties
+          // (but we'll still save to the channel properties file).
+          if (defaultProperties && (!new File(propertiesFile).exists())
+                  && (new File(releasePropertiesFile).exists()))
+          {
+            readPropertiesFile = releasePropertiesFile;
+          }
+          fis = new FileInputStream(readPropertiesFile);
         }
         applicationProperties.clear();
         applicationProperties.load(fis);
@@ -693,11 +710,10 @@ public class Cache
   }
 
   /**
-   * Gets Jalview application property of given key. Returns null if key not
-   * found
+   * Gets Jalview application property of given key. Returns null if key not found
    * 
    * @param key
-   *          Name of property
+   *              Name of property
    * 
    * @return Property value
    */
@@ -713,8 +729,8 @@ public class Cache
   }
 
   /**
-   * These methods are used when checking if the saved preference is different
-   * to the default setting
+   * These methods are used when checking if the saved preference is different to
+   * the default setting
    */
 
   public static boolean getDefault(String property, boolean def)
@@ -747,8 +763,8 @@ public class Cache
   }
 
   /**
-   * Answers the value of the given property, or the supplied default value if
-   * the property is not set
+   * Answers the value of the given property, or the supplied default value if the
+   * property is not set
    */
   public static String getDefault(String property, String def)
   {
@@ -760,9 +776,9 @@ public class Cache
    * Stores property in the file "HOME_DIR/.jalview_properties"
    * 
    * @param key
-   *          Name of object
+   *              Name of object
    * @param obj
-   *          String value of property
+   *              String value of property
    * 
    * @return previous value of property (or null)
    */
@@ -1150,7 +1166,7 @@ public class Cache
    * Loads in user colour schemes from files.
    * 
    * @param files
-   *          a '|'-delimited list of file paths
+   *                a '|'-delimited list of file paths
    */
   public static void initUserColourSchemes(String files)
   {
@@ -1459,8 +1475,8 @@ public class Cache
                   // open Preferences -> Connections
                   String message = MessageManager
                           .getString("label.proxy_password_required");
-                  Preferences.openPreferences(Preferences.CONNECTIONS_TAB,
-                          message);
+                  Preferences.openPreferences(
+                          Preferences.TabRef.CONNECTIONS_TAB, message);
                   Preferences.getInstance()
                           .proxyAuthPasswordCheckHighlight(true, true);
                 }