Merge commit 'ab43013b7e357b84b4abade0dba949668dfb2a0e' into develop
[jalview.git] / src / jalview / gui / StructureViewer.java
index 22f12ea..be126db 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2b1)
  * Copyright (C) 2014 The Jalview Authors
  * 
  * This file is part of Jalview.
@@ -24,6 +24,7 @@ import jalview.api.structures.JalviewStructureDisplayI;
 import jalview.bin.Cache;
 import jalview.datamodel.PDBEntry;
 import jalview.datamodel.SequenceI;
+import jalview.datamodel.StructureViewerModel;
 import jalview.structure.StructureSelectionManager;
 
 import java.awt.Rectangle;
@@ -41,19 +42,19 @@ public class StructureViewer
 {
   StructureSelectionManager ssm;
 
-  public enum Viewer
+  public enum ViewerType
   {
     JMOL, CHIMERA
   };
 
-  public Viewer getViewerType()
+  public ViewerType getViewerType()
   {
     String viewType = Cache.getDefault(Preferences.STRUCTURE_DISPLAY,
-            Viewer.JMOL.name());
-    return Viewer.valueOf(viewType);
+            ViewerType.JMOL.name());
+    return ViewerType.valueOf(viewType);
   }
 
-  public void setViewerType(Viewer type)
+  public void setViewerType(ViewerType type)
   {
     Cache.setProperty(Preferences.STRUCTURE_DISPLAY, type.name());
   }
@@ -69,15 +70,15 @@ public class StructureViewer
     return viewStructures(getViewerType(), ap, pr, collateForPDB);
   }
 
-  public JalviewStructureDisplayI viewStructures(Viewer viewerType,
+  public JalviewStructureDisplayI viewStructures(ViewerType viewerType,
           AlignmentPanel ap, PDBEntry[] pr, SequenceI[][] collateForPDB)
   {
     JalviewStructureDisplayI sview = null;
-    if (viewerType.equals(Viewer.JMOL))
+    if (viewerType.equals(ViewerType.JMOL))
     {
       sview = new AppJmol(ap, pr, ap.av.collateForPDB(pr));
     }
-    else if (viewerType.equals(Viewer.CHIMERA))
+    else if (viewerType.equals(ViewerType.CHIMERA))
     {
       sview = new ChimeraViewFrame(ap, pr, ap.av.collateForPDB(pr));
     }
@@ -89,15 +90,15 @@ public class StructureViewer
     return sview;
   }
 
-  public JalviewStructureDisplayI viewStructures(Viewer viewerType,
+  public JalviewStructureDisplayI viewStructures(ViewerType viewerType,
           AlignmentPanel ap, PDBEntry pr, SequenceI[] collateForPDB)
   {
     JalviewStructureDisplayI sview = null;
-    if (viewerType.equals(Viewer.JMOL))
+    if (viewerType.equals(ViewerType.JMOL))
     {
       sview = new AppJmol(pr, collateForPDB, null, ap);
     }
-    else if (viewerType.equals(Viewer.CHIMERA))
+    else if (viewerType.equals(ViewerType.CHIMERA))
     {
       sview = new ChimeraViewFrame(pr, collateForPDB, null, ap);
     }
@@ -115,24 +116,42 @@ public class StructureViewer
     return viewStructures(getViewerType(), ap, pdb, sequenceIs);
   }
 
-  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)
+  /**
+   * Create a new panel controlling a structure viewer.
+   * 
+   * @param type
+   * @param pdbf
+   * @param id
+   * @param sq
+   * @param alignPanel
+   * @param viewerData
+   * @param fileloc
+   * @param rect
+   * @param vid
+   * @return
+   */
+  public JalviewStructureDisplayI createView(ViewerType type,
+          String[] pdbf, String[] id, SequenceI[][] sq,
+          AlignmentPanel alignPanel, StructureViewerModel viewerData, String fileloc,
+          Rectangle rect, String vid)
   {
+    final boolean useinViewerSuperpos = viewerData.isAlignWithPanel();
+    final boolean usetoColourbyseq = viewerData.isColourWithAlignPanel();
+    final boolean viewerColouring = viewerData.isColourByViewer();
+
     JalviewStructureDisplayI sview = null;
-    switch (viewer)
+    switch (type)
     {
     case JMOL:
-      sview = new AppJmol(pdbf, id, sq, alignPanel, useinJmolsuperpos,
-              usetoColourbyseq, jmolColouring, fileloc, rect, vid);
+      sview = new AppJmol(pdbf, id, sq, alignPanel, usetoColourbyseq,
+              useinViewerSuperpos, viewerColouring, fileloc, rect, vid);
       break;
     case CHIMERA:
       Cache.log.error("Unsupported structure viewer type "
-              + viewer.toString());
+              + type.toString());
       break;
     default:
-      Cache.log.error("Unknown structure viewer type " + viewer.toString());
+      Cache.log.error("Unknown structure viewer type " + type.toString());
     }
     return sview;
   }