JAL-629 move SubId to more logical place. Attempt removal of annotations in a better...
[jalview.git] / src / jalview / ext / jmol / JalviewJmolBinding.java
index f133f20..21a19ae 100644 (file)
@@ -45,7 +45,7 @@ import jalview.api.AlignmentViewPanel;
 import jalview.api.FeatureRenderer;
 import jalview.api.FeatureSettingsModelI;
 import jalview.api.SequenceRenderer;
-import jalview.bin.Cache;
+import jalview.bin.Console;
 import jalview.datamodel.PDBEntry;
 import jalview.datamodel.SequenceI;
 import jalview.gui.AppJmol;
@@ -122,9 +122,22 @@ public abstract class JalviewJmolBinding extends AAStructureBindingModel
 
   private String jmolScript(String script)
   {
-    Cache.debug(">>Jmol>> " + script);
-    String s = jmolViewer.evalStringQuiet(script); // scriptWait(script); BH
-    Cache.debug("<<Jmol<< " + s);
+    return jmolScript(script, false);
+  }
+
+  private String jmolScript(String script, boolean useScriptWait)
+  {
+    Console.debug(">>Jmol>> " + script);
+    String s;
+    if (useScriptWait)
+    {
+      s = jmolViewer.scriptWait(script);
+    }
+    else
+    {
+      s = jmolViewer.evalStringQuiet(script); // scriptWait(script); BH
+    }
+    Console.debug("<<Jmol<< " + s);
 
     return s;
   }
@@ -254,22 +267,47 @@ public abstract class JalviewJmolBinding extends AAStructureBindingModel
   {
     if (atoms != null)
     {
+      boolean useScriptWait = atoms.size() > 1;
       if (resetLastRes.length() > 0)
       {
-        jmolScript(resetLastRes.toString());
+        jmolScript(resetLastRes.toString(), useScriptWait);
         resetLastRes.setLength(0);
       }
       for (AtomSpec atom : atoms)
       {
         highlightAtom(atom.getAtomIndex(), atom.getPdbResNum(),
-                atom.getChain(), atom.getPdbFile());
+                atom.getChain(), atom.getPdbFile(), useScriptWait);
       }
+      // Highlight distances between atoms with a 'measure' command - not yet
+      // working
+      // if (atoms.size() >= 2)
+      // {
+      // StringBuilder sb = new StringBuilder();
+      // for (int a = 0; a < atoms.size(); a++)
+      // {
+      // AtomSpec speca = atoms.get(a);
+      // String a_model = getModelIdForFile(speca.getPdbFile());
+      // for (int b = a + 1; b < atoms.size(); b++)
+      // {
+      // AtomSpec specb = atoms.get(b);
+      // String b_model = getModelIdForFile(speca.getPdbFile());
+      // sb.append("measure ALL (" + speca.getAtomIndex() + " and */"
+      // + a_model + ") (" + specb.getAtomIndex() + " and */"
+      // + b_model + ");");
+      // }
+      // }
+      // jmolHistory(false, useScriptWait);
+      // jmolScript(sb.toString(), useScriptWait);
+      // jmolHistory(true, useScriptWait);
+      // }
+
     }
+
   }
 
   // jmol/ssm only
   public void highlightAtom(int atomIndex, int pdbResNum, String chain,
-          String pdbfile)
+          String pdbfile, boolean useScriptWait)
   {
     String modelId = getModelIdForFile(pdbfile);
     if (modelId.isEmpty())
@@ -277,7 +315,7 @@ public abstract class JalviewJmolBinding extends AAStructureBindingModel
       return;
     }
 
-    jmolHistory(false);
+    jmolHistory(false, useScriptWait);
 
     StringBuilder selection = new StringBuilder(32);
     StringBuilder cmd = new StringBuilder(64);
@@ -295,15 +333,21 @@ public abstract class JalviewJmolBinding extends AAStructureBindingModel
     resetLastRes.append(selection).append(";wireframe 0;").append(selection)
             .append(" and not hetero; spacefill 0;");
 
-    jmolScript(cmd.toString());
-    jmolHistory(true);
+    jmolScript(cmd.toString(), useScriptWait);
+    jmolHistory(true, useScriptWait);
   }
 
   private boolean debug = true;
 
   private void jmolHistory(boolean enable)
   {
-    jmolScript("History " + ((debug || enable) ? "on" : "off"));
+    jmolHistory(enable, false);
+  }
+
+  private void jmolHistory(boolean enable, boolean useScriptWait)
+  {
+    jmolScript("History " + ((debug || enable) ? "on" : "off"),
+            useScriptWait);
   }
 
   public void loadInline(String string)