public class StructureManager
{
+ /*
+ * Version numbers to build Windows installation paths for
+ * Chimera https://www.cgl.ucsf.edu/chimera/download.html
+ * ChimeraX http://www.rbvi.ucsf.edu/chimerax/download.html#release
+ * https://www.rbvi.ucsf.edu/trac/ChimeraX/wiki/ChangeLog
+ * These are a fallback for Jalview users who don't save path in Preferences;
+ * these will need to be updated as new versions are released;
+ * deliberately not 'final' (so modifiable using Groovy).
+ *
+ * May 2020: 1.14 is Chimera latest, anticipating a few more...
+ * 0.93 is ChimeraX latest, 1.0 expected soon
+ */
+ private static String[] CHIMERA_VERSIONS = new String[] { "1.16.2",
+ "1.16.1", "1.16",
+ "1.15.2", "1.15.1", "1.15", "1.14.2", "1.14.1", "1.14",
+ "1.13.1", "1.13", "1.12.2", "1.12.1", "1.12", "1.11.2",
+ "1.11.2", "1.11.1", "1.11" };
+
+ private static String[] CHIMERAX_VERSIONS = new String[] { "1.0", "0.93",
+ "0.92", "0.91", "0.9" };
+
static final String[] defaultStructureKeys = { "Structure", "pdb",
"pdbFileName", "PDB ID", "structure", "biopax.xref.PDB", "pdb_ids",
"ModelName", "ModelNumber" };
// }
/*
- * Jalview addition: check if path set in user preferences.
+ * Jalview addition: check if path set in user preferences
*/
String userPath = Cache
.getDefault(isChimeraX ? Preferences.CHIMERAX_PATH
: Preferences.CHIMERA_PATH, null);
if (userPath != null)
{
- pathList.add(0, userPath);
+ pathList.add(userPath);
}
- // FIXME get an updated StructureManager for code for ChimeraX paths
- String chimera = isChimeraX ? "ChimeraX" : "chimera";
+ /*
+ * paths are based on getChimeraPaths() in
+ * Chimera:
+ * https://github.com/RBVI/structureViz2/blob/master/src/main/java/edu/ucsf/rbvi/structureViz2/internal/model/StructureManager.java
+ * ChimeraX:
+ * https://github.com/RBVI/structureVizX/blob/master/src/main/java/edu/ucsf/rbvi/structureVizX/internal/model/StructureManager.java
+ */
+ String chimera = isChimeraX ? "ChimeraX" : "Chimera";
+ String chimeraExe = isChimeraX ? "ChimeraX" : "chimera";
// Add default installation paths
String os = System.getProperty("os.name");
if (os.startsWith("Linux"))
{
- pathList.add("/usr/local/chimera/bin/" + chimera);
- pathList.add("/usr/local/bin/" + chimera);
- pathList.add("/usr/bin/" + chimera);
- pathList.add(System.getProperty("user.home") + "/opt/bin/" + chimera);
+ // todo should this be /chimeraX/ for ChimeraX? not in structureVizX code
+ pathList.add("/usr/local/chimera/bin/" + chimeraExe);
+ pathList.add("/usr/local/bin/" + chimeraExe);
+ pathList.add("/usr/bin/" + chimeraExe);
+ pathList.add(System.getProperty("user.home") + "/opt/bin/" + chimeraExe);
}
else if (os.startsWith("Windows"))
{
"C:\\Program Files", "\\Program Files (x86)",
"C:\\Program Files (x86)" })
{
- /*
- * May 2020: 1.14 is the latest, anticipating a few more...
- * see https://www.cgl.ucsf.edu/chimera/download.html
- */
- for (String version : new String[] { "1.16.2", "1.16.1", "1.16",
- "1.15.2", "1.15.1", "1.15", "1.14.2", "1.14.1", "1.14",
- "1.13.1", "1.13", "1.12.2", "1.12.1", "1.12", "1.11.2",
- "1.11.2", "1.11.1", "1.11" })
+ String[] candidates = isChimeraX ? CHIMERAX_VERSIONS
+ : CHIMERA_VERSIONS;
+ for (String version : candidates)
{
- pathList.add(root + "\\Chimera " + version + "\\bin\\" + chimera);
- pathList.add(
- root + "\\Chimera " + version + "\\bin\\" + chimera
- + ".exe");
+ // TODO original code doesn't include version in path; which is right?
+ String path = String.format("%s\\%s %s\\bin\\%s", root, chimera,
+ version, chimeraExe);
+ pathList.add(path);
+ pathList.add(path + ".exe");
}
}
}
else if (os.startsWith("Mac"))
{
- pathList.add("/Applications/Chimera.app/Contents/MacOS/" + chimera);
+ pathList.add(String.format("/Applications/%s.app/Contents/MacOS/%s",
+ chimera, chimeraExe));
}
return pathList;
}