JAL-629 Test and fix --annotation --ssannotation args. Added a viewerType arg/subval...
[jalview.git] / src / jalview / gui / StructureChooser.java
index 7d2d907..35972b0 100644 (file)
@@ -67,6 +67,7 @@ import jalview.fts.core.FTSRestRequest;
 import jalview.fts.core.FTSRestResponse;
 import jalview.fts.service.pdb.PDBFTSRestClient;
 import jalview.fts.service.threedbeacons.TDB_FTSData;
+import jalview.gui.StructureViewer.ViewerType;
 import jalview.gui.structurechooser.PDBStructureChooserQuerySource;
 import jalview.gui.structurechooser.StructureChooserQuerySource;
 import jalview.gui.structurechooser.ThreeDBStructureChooserQuerySource;
@@ -1344,6 +1345,15 @@ public class StructureChooser extends GStructureChooser
           StructureSelectionManager ssm, final PDBEntry[] pdbEntriesToView,
           final AlignmentPanel alignPanel, SequenceI[] sequences)
   {
+    return launchStructureViewer(ssm, pdbEntriesToView, alignPanel,
+            sequences, null);
+  }
+
+  private StructureViewer launchStructureViewer(
+          StructureSelectionManager ssm, final PDBEntry[] pdbEntriesToView,
+          final AlignmentPanel alignPanel, SequenceI[] sequences,
+          ViewerType viewerType)
+  {
     long progressId = sequences.hashCode();
     setProgressBar(MessageManager
             .getString("status.launching_3d_structure_viewer"), progressId);
@@ -1408,7 +1418,8 @@ public class StructureChooser extends GStructureChooser
               MessageManager.getString(
                       "status.fetching_3d_structures_for_selected_entries"),
               progressId);
-      theViewer.viewStructures(pdbEntriesToView, sequences, alignPanel);
+      theViewer.viewStructures(pdbEntriesToView, sequences, alignPanel,
+              viewerType);
     }
     else
     {
@@ -1416,7 +1427,8 @@ public class StructureChooser extends GStructureChooser
               "status.fetching_3d_structures_for",
               pdbEntriesToView[0].getId()), progressId);
       // Can we pass a pre-computeMappinged pdbFile?
-      theViewer.viewStructures(pdbEntriesToView[0], sequences, alignPanel);
+      theViewer.viewStructures(pdbEntriesToView[0], sequences, alignPanel,
+              viewerType);
     }
     setProgressBar(null, progressId);
     // remember the last viewer we used...
@@ -1721,20 +1733,20 @@ public class StructureChooser extends GStructureChooser
           boolean doXferSettings)
   {
     openStructureFileForSequence(ssm, sc, ap, seq, prompt, sFilename, tft,
-            paeFilename, false, true, doXferSettings);
+            paeFilename, false, true, doXferSettings, null);
   }
 
   public static void openStructureFileForSequence(
           StructureSelectionManager ssm, StructureChooser sc,
           AlignmentPanel ap, SequenceI seq, boolean prompt,
           String sFilename, TFType tft, String paeFilename,
-          boolean forceHeadless, boolean showAnnotations,
-          boolean doXferSettings)
+          boolean forceHeadless, boolean showRefAnnotations,
+          boolean doXferSettings, ViewerType viewerType)
   {
     boolean headless = forceHeadless;
     if (sc == null)
     {
-      headless = true;
+      // headless = true;
       prompt = false;
       sc = new StructureChooser(new SequenceI[] { seq }, seq, ap, false);
     }
@@ -1747,14 +1759,15 @@ public class StructureChooser extends GStructureChooser
 
     // if headless, "false" in the sc constructor above will avoid GUI behaviour
     // in sc.launchStructureViewer()
-    sc.launchStructureViewer(ssm, new PDBEntry[] { fileEntry }, ap,
-            new SequenceI[]
-            { seq });
+    if (!headless && !(viewerType == null))
+      sc.launchStructureViewer(ssm, new PDBEntry[] { fileEntry }, ap,
+              new SequenceI[]
+              { seq }, viewerType);
 
     if (headless)
       sc.mainFrame.dispose();
 
-    if (showAnnotations)
+    if (showRefAnnotations)
       showReferenceAnnotationsForSequence(ap.alignFrame, seq);
   }