JAL-3830 Remove dock icon for -h too
[jalview.git] / src / jalview / gui / StructureViewer.java
index 5effa1a..6cef665 100644 (file)
@@ -54,6 +54,16 @@ public class StructureViewer
    */
   private boolean superposeAdded = true;
 
+  /**
+   * whether to open structures in their own thread or not
+   */
+  private boolean async = true;
+
+  public void setAsync(boolean b)
+  {
+    async = b;
+  }
+
   public enum ViewerType
   {
     JMOL, CHIMERA, CHIMERAX, PYMOL
@@ -119,6 +129,12 @@ public class StructureViewer
   public JalviewStructureDisplayI viewStructures(PDBEntry[] pdbs,
           SequenceI[] seqs, AlignmentPanel ap)
   {
+    return viewStructures(pdbs, seqs, ap, null);
+  }
+
+  public JalviewStructureDisplayI viewStructures(PDBEntry[] pdbs,
+          SequenceI[] seqs, AlignmentPanel ap, ViewerType viewerType)
+  {
     JalviewStructureDisplayI viewer = onlyOnePdb(pdbs, seqs, ap);
     if (viewer != null)
     {
@@ -128,7 +144,8 @@ public class StructureViewer
       return viewer;
     }
 
-    ViewerType viewerType = getViewerType();
+    if (viewerType == null)
+      viewerType = getViewerType();
 
     Map<PDBEntry, SequenceI[]> seqsForPdbs = getSequencesForPdbs(pdbs,
             seqs);
@@ -139,7 +156,8 @@ public class StructureViewer
     if (sview != null)
     {
       sview.setAlignAddedStructures(superposeAdded);
-      new Thread(new Runnable()
+
+      Runnable viewRunnable = new Runnable()
       {
         @Override
         public void run()
@@ -158,7 +176,15 @@ public class StructureViewer
 
           sview.updateTitleAndMenus();
         }
-      }).start();
+      };
+      if (async)
+      {
+        new Thread(viewRunnable).start();
+      }
+      else
+      {
+        viewRunnable.run();
+      }
       return sview;
     }
 
@@ -296,9 +322,20 @@ public class StructureViewer
 
   JalviewStructureDisplayI sview = null;
 
+  public JalviewStructureDisplayI getJalviewStructureDisplay()
+  {
+    return sview;
+  }
+
   public JalviewStructureDisplayI viewStructures(PDBEntry pdb,
           SequenceI[] seqsForPdb, AlignmentPanel ap)
   {
+    return viewStructures(pdb, seqsForPdb, ap, null);
+  }
+
+  public JalviewStructureDisplayI viewStructures(PDBEntry pdb,
+          SequenceI[] seqsForPdb, AlignmentPanel ap, ViewerType viewerType)
+  {
     if (sview != null)
     {
       sview.setAlignAddedStructures(superposeAdded);
@@ -311,7 +348,8 @@ public class StructureViewer
       sview.raiseViewer();
       return sview;
     }
-    ViewerType viewerType = getViewerType();
+    if (viewerType == null)
+      viewerType = getViewerType();
     if (viewerType.equals(ViewerType.JMOL))
     {
       sview = new AppJmol(pdb, seqsForPdb, null, ap);