Merge branch 'develop' into improvement/JAL-3830_install4j9_macos_setup_application
[jalview.git] / src / jalview / ext / jmol / JmolCommands.java
index 99130b4..8b67ad9 100644 (file)
@@ -40,7 +40,9 @@ import jalview.structure.StructureCommandI;
 import jalview.structure.StructureCommandsBase;
 import jalview.structure.StructureMapping;
 import jalview.structure.StructureSelectionManager;
+import jalview.structure.StructureCommandsI.AtomSpecType;
 import jalview.util.Comparison;
+import jalview.util.Platform;
 
 /**
  * Routines for generating Jmol commands for Jalview/Jmol binding
@@ -177,7 +179,7 @@ public class JmolCommands extends StructureCommandsBase
    */
   @Override
   public List<StructureCommandI> superposeStructures(AtomSpecModel refAtoms,
-          AtomSpecModel atomSpec)
+          AtomSpecModel atomSpec, AtomSpecType backbone)
   {
     StringBuilder sb = new StringBuilder(64);
     String refModel = refAtoms.getModels().iterator().next();
@@ -189,16 +191,16 @@ public class JmolCommands extends StructureCommandsBase
      * command examples don't include modelspec with atoms, getAtomSpec does;
      * it works, so leave it as it is for simplicity
      */
-    sb.append(getAtomSpec(atomSpec, true)).append("}{");
-    sb.append(getAtomSpec(refAtoms, true)).append("}");
+    sb.append(getAtomSpec(atomSpec, backbone)).append("}{");
+    sb.append(getAtomSpec(refAtoms, backbone)).append("}");
     sb.append(" ROTATE TRANSLATE ");
     sb.append(getCommandSeparator());
 
     /*
      * show residues used for superposition as ribbon
      */
-    sb.append("select ").append(getAtomSpec(atomSpec, false)).append("|");
-    sb.append(getAtomSpec(refAtoms, false)).append(getCommandSeparator())
+    sb.append("select ").append(getAtomSpec(atomSpec, AtomSpecType.RESIDUE_ONLY)).append("|");
+    sb.append(getAtomSpec(refAtoms, AtomSpecType.RESIDUE_ONLY)).append(getCommandSeparator())
             .append("cartoons");
 
     return Arrays.asList(new StructureCommand(sb.toString()));
@@ -249,7 +251,7 @@ public class JmolCommands extends StructureCommandsBase
    * a separate clause in the {@code compare} (superposition) command.
    */
   @Override
-  public String getAtomSpec(AtomSpecModel model, boolean alphaOnly)
+  public String getAtomSpec(AtomSpecModel model, AtomSpecType specType)
   {
     StringBuilder sb = new StringBuilder(128);
 
@@ -291,7 +293,9 @@ public class JmolCommands extends StructureCommandsBase
   @Override
   public StructureCommandI loadFile(String file)
   {
-    return null;
+    // https://chemapps.stolaf.edu/jmol/docs/#loadfiles
+    return new StructureCommand("load FILES \"" + 
+            Platform.escapeBackslashes(file) + "\"");
   }
 
   /**
@@ -466,4 +470,16 @@ public class JmolCommands extends StructureCommandsBase
 
     return sb;
   }
+
+  @Override
+  public StructureCommandI openSession(String filepath)
+  {
+    return loadFile(filepath);
+  }
+
+  @Override
+  public StructureCommandI closeViewer()
+  {
+    return null; // not an external viewer
+  }
 }