JAL-1476 - don't send broken commands to Jmol when no columns exist to superimpose...
[jalview.git] / src / jalview / ext / jmol / JalviewJmolBinding.java
index f31272a..46c94c4 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
- * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1)
+ * Copyright (C) 2014 The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
@@ -14,6 +14,7 @@
  * PURPOSE.  See the GNU General Public License for more details.
  * 
  * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.ext.jmol;
 
@@ -542,22 +543,27 @@ public abstract class JalviewJmolBinding implements StructureListener,
             molsel.append(chainCd);
             molsel.append("}");
           }
-          selcom[pdbfnum] = molsel.toString();
-          selectioncom.append("((");
-          selectioncom.append(selcom[pdbfnum].substring(1,
-                  selcom[pdbfnum].length() - 1));
-          selectioncom.append(" )& ");
-          selectioncom.append(pdbfnum + 1);
-          selectioncom.append(".1)");
-          if (pdbfnum < files.length - 1)
+          if (molsel.length() > 1)
           {
-            selectioncom.append("|");
+            selcom[pdbfnum] = molsel.toString();
+            selectioncom.append("((");
+            selectioncom.append(selcom[pdbfnum].substring(1,
+                    selcom[pdbfnum].length() - 1));
+            selectioncom.append(" )& ");
+            selectioncom.append(pdbfnum + 1);
+            selectioncom.append(".1)");
+            if (pdbfnum < files.length - 1)
+            {
+              selectioncom.append("|");
+            }
+          } else {
+            selcom[pdbfnum] = null;
           }
         }
       }
       for (int pdbfnum = 0; pdbfnum < files.length; pdbfnum++)
       {
-        if (pdbfnum == refStructure)
+        if (pdbfnum == refStructure || selcom[pdbfnum]==null || selcom[refStructure]==null)
         {
           continue;
         }
@@ -581,13 +587,17 @@ public abstract class JalviewJmolBinding implements StructureListener,
         }
         command.append(" ROTATE TRANSLATE;\n");
       }
-      System.out.println("Select regions:\n" + selectioncom.toString());
-      evalStateCommand("select *; cartoons off; backbone; select ("
-              + selectioncom.toString() + "); cartoons; ");
-      // selcom.append("; ribbons; ");
-      System.out.println("Superimpose command(s):\n" + command.toString());
-
-      evalStateCommand(command.toString());
+      if (selectioncom.length() > 0)
+      {
+        System.out.println("Select regions:\n" + selectioncom.toString());
+        evalStateCommand("select *; cartoons off; backbone; select ("
+                + selectioncom.toString() + "); cartoons; ");
+        // selcom.append("; ribbons; ");
+        System.out
+                .println("Superimpose command(s):\n" + command.toString());
+
+        evalStateCommand(command.toString());
+      }
     }
     if (selectioncom.length() > 0)
     {// finally, mark all regions that were superposed.