+ public JalviewStructureDisplayI viewStructures(PDBEntry pdb,
+ SequenceI[] seqsForPdb, AlignmentPanel ap)
+ {
+ if (sview != null)
+ {
+ sview.setAlignAddedStructures(superposeAdded);
+ String pdbId = pdb.getId();
+ if (!sview.addAlreadyLoadedFile(seqsForPdb, null, ap, pdbId))
+ {
+ sview.addToExistingViewer(pdb, seqsForPdb, null, ap, pdbId);
+ }
+ sview.updateTitleAndMenus();
+ sview.raiseViewer();
+ return sview;
+ }
+ ViewerType viewerType = getViewerType();
+ if (viewerType.equals(ViewerType.JMOL))
+ {
+ sview = new AppJmol(pdb, seqsForPdb, null, ap);
+ }
+ else if (viewerType.equals(ViewerType.CHIMERA))
+ {
+ sview = new ChimeraViewFrame(pdb, seqsForPdb, null, ap);
+ }
+ else if (viewerType.equals(ViewerType.CHIMERAX))
+ {
+ sview = new ChimeraXViewFrame(pdb, seqsForPdb, null, ap);
+ }
+ else if (viewerType.equals(ViewerType.PYMOL))
+ {
+ sview = new PymolViewer(pdb, seqsForPdb, null, ap);
+ }
+ else
+ {
+ Cache.log.error(UNKNOWN_VIEWER_TYPE + getViewerType().toString());
+ }
+ return sview;
+ }
+
+ /**
+ * Creates a new panel controlling a structure viewer
+ *
+ * @param type
+ * @param alignPanel
+ * @param viewerData
+ * @param sessionFile
+ * @param vid
+ * @return
+ */
+ public static JalviewStructureDisplayI createView(ViewerType type,
+ AlignmentPanel alignPanel, StructureViewerModel viewerData,
+ String sessionFile, String vid)
+ {
+ JalviewStructureDisplayI viewer = null;
+ switch (type)
+ {
+ case JMOL:
+ viewer = new AppJmol(viewerData, alignPanel, sessionFile, vid);
+ // todo or construct and then openSession(sessionFile)?