Merge branch 'Jalview-JS/develop' into merge_js_develop
[jalview.git] / src / ext / edu / ucsf / rbvi / strucviz2 / StructureManager.java
index a52adc5..c1d04c4 100644 (file)
@@ -35,10 +35,10 @@ package ext.edu.ucsf.rbvi.strucviz2;
 import jalview.bin.Cache;
 import jalview.gui.Preferences;
 import jalview.util.FileUtils;
+import jalview.util.Platform;
 
 import java.io.File;
 import java.io.IOException;
-import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -123,8 +123,8 @@ public class StructureManager
       for (String chimObjName : names)
       {
         // get or open the corresponding models if they already exist
-        List<ChimeraModel> currentModels = chimeraManager.getChimeraModels(
-                chimObjName, type);
+        List<ChimeraModel> currentModels = chimeraManager
+                .getChimeraModels(chimObjName, type);
         if (currentModels.size() == 0)
         {
           // open and return models
@@ -564,11 +564,11 @@ public class StructureManager
         // Get the corresponding "real" model
         if (chimeraManager.hasChimeraModel(modelNumber, subModelNumber))
         {
-          ChimeraModel dataModel = chimeraManager.getChimeraModel(
-                  modelNumber, subModelNumber);
-          if (dataModel.getResidueCount() == selectedModel
-                  .getResidueCount()
-                  || dataModel.getModelType() == StructureManager.ModelType.SMILES)
+          ChimeraModel dataModel = chimeraManager
+                  .getChimeraModel(modelNumber, subModelNumber);
+          if (dataModel.getResidueCount() == selectedModel.getResidueCount()
+                  || dataModel
+                          .getModelType() == StructureManager.ModelType.SMILES)
           {
             // Select the entire model
             addChimSelection(dataModel);
@@ -578,8 +578,8 @@ public class StructureManager
           {
             for (ChimeraChain selectedChain : selectedModel.getChains())
             {
-              ChimeraChain dataChain = dataModel.getChain(selectedChain
-                      .getChainId());
+              ChimeraChain dataChain = dataModel
+                      .getChain(selectedChain.getChainId());
               if (selectedChain.getResidueCount() == dataChain
                       .getResidueCount())
               {
@@ -933,6 +933,7 @@ public class StructureManager
       pathList.add("/usr/local/chimera/bin/chimera");
       pathList.add("/usr/local/bin/chimera");
       pathList.add("/usr/bin/chimera");
+      pathList.add(Platform.getUserPath("opt/bin/chimera"));
     }
     else if (os.startsWith("Windows"))
     {
@@ -940,17 +941,12 @@ public class StructureManager
        * typical Windows installation path is
        * C:\Program Files\Chimera 1.12\bin\chimera.exe
        */
-      for (String root : new String[] { "\\Program Files",
-          "C:\\Program Files", "\\Program Files (x86)",
-          "C:\\Program Files (x86)" })
-      {
-        /*
-         * match a path ending in \bin\chimera or \bin\chimera.exe
-         * back-slash is double escaped - for Java String, and regex pattern
-         */
-        pathList.addAll(FileUtils.findMatchingPaths(
-                ".*\\\\bin\\\\chimera(\\\\.exe)?$", Paths.get(root)));
-      }
+      // current drive:
+      pathList.addAll(FileUtils.findMatches("\\",
+              "Program Files*/Chimera*/bin/{chimera,chimera.exe}"));
+      // C: drive (note may add as duplicates)
+      pathList.addAll(FileUtils.findMatches("C:\\",
+              "Program Files*/Chimera*/bin/{chimera,chimera.exe}"));
     }
     else if (os.startsWith("Mac"))
     {