JAL-1342 new command-line parameter -jabaws <URL>
[jalview.git] / src / jalview / gui / StructureViewer.java
index ce22d84..22f12ea 100644 (file)
  */
 package jalview.gui;
 
-import java.awt.Rectangle;
-
 import jalview.api.structures.JalviewStructureDisplayI;
 import jalview.bin.Cache;
 import jalview.datamodel.PDBEntry;
 import jalview.datamodel.SequenceI;
-import jalview.gui.StructureViewer.Viewer;
 import jalview.structure.StructureSelectionManager;
 
+import java.awt.Rectangle;
+
 /**
  * proxy for handling structure viewers.
  * 
@@ -49,13 +48,14 @@ public class StructureViewer
 
   public Viewer getViewerType()
   {
-    String viewType = Cache.getDefault("STRUCTURE_DISPLAY", "JMOL");
+    String viewType = Cache.getDefault(Preferences.STRUCTURE_DISPLAY,
+            Viewer.JMOL.name());
     return Viewer.valueOf(viewType);
   }
 
   public void setViewerType(Viewer type)
   {
-    Cache.setProperty("STRUCTURE_DISPLAY", type.toString());
+    Cache.setProperty(Preferences.STRUCTURE_DISPLAY, type.name());
   }
 
   public StructureViewer(StructureSelectionManager structureSelectionManager)
@@ -66,17 +66,43 @@ public class StructureViewer
   public JalviewStructureDisplayI viewStructures(AlignmentPanel ap,
           PDBEntry[] pr, SequenceI[][] collateForPDB)
   {
+    return viewStructures(getViewerType(), ap, pr, collateForPDB);
+  }
+
+  public JalviewStructureDisplayI viewStructures(Viewer viewerType,
+          AlignmentPanel ap, PDBEntry[] pr, SequenceI[][] collateForPDB)
+  {
     JalviewStructureDisplayI sview = null;
-    switch (getViewerType())
+    if (viewerType.equals(Viewer.JMOL))
     {
-    case JMOL:
-
       sview = new AppJmol(ap, pr, ap.av.collateForPDB(pr));
+    }
+    else if (viewerType.equals(Viewer.CHIMERA))
+    {
+      sview = new ChimeraViewFrame(ap, pr, ap.av.collateForPDB(pr));
+    }
+    else
+    {
+      Cache.log.error("Unknown structure viewer type "
+              + getViewerType().toString());
+    }
+    return sview;
+  }
 
-      break;
-    case CHIMERA:
-      break;
-    default:
+  public JalviewStructureDisplayI viewStructures(Viewer viewerType,
+          AlignmentPanel ap, PDBEntry pr, SequenceI[] collateForPDB)
+  {
+    JalviewStructureDisplayI sview = null;
+    if (viewerType.equals(Viewer.JMOL))
+    {
+      sview = new AppJmol(pr, collateForPDB, null, ap);
+    }
+    else if (viewerType.equals(Viewer.CHIMERA))
+    {
+      sview = new ChimeraViewFrame(pr, collateForPDB, null, ap);
+    }
+    else
+    {
       Cache.log.error("Unknown structure viewer type "
               + getViewerType().toString());
     }
@@ -86,30 +112,27 @@ public class StructureViewer
   public JalviewStructureDisplayI viewStructures(PDBEntry pdb,
           SequenceI[] sequenceIs, Object object, AlignmentPanel ap)
   {
-    return viewStructures(ap, new PDBEntry[]
-    { pdb }, new SequenceI[][]
-    { sequenceIs });
+    return viewStructures(getViewerType(), ap, pdb, sequenceIs);
   }
 
-  public JalviewStructureDisplayI createView(Viewer jmol, String[] pdbf,
+  public JalviewStructureDisplayI createView(Viewer viewer, String[] pdbf,
           String[] id, SequenceI[][] sq, AlignmentPanel alignPanel,
           boolean useinJmolsuperpos, boolean usetoColourbyseq,
           boolean jmolColouring, String fileloc, Rectangle rect, String vid)
   {
     JalviewStructureDisplayI sview = null;
-    switch (getViewerType())
+    switch (viewer)
     {
     case JMOL:
-
       sview = new AppJmol(pdbf, id, sq, alignPanel, useinJmolsuperpos,
               usetoColourbyseq, jmolColouring, fileloc, rect, vid);
-
       break;
     case CHIMERA:
+      Cache.log.error("Unsupported structure viewer type "
+              + viewer.toString());
       break;
     default:
-      Cache.log.error("Unknown structure viewer type "
-              + getViewerType().toString());
+      Cache.log.error("Unknown structure viewer type " + viewer.toString());
     }
     return sview;
   }