+ /**
+ * View multiple PDB entries, each with associated sequences
+ *
+ * @param pdbs
+ * @param seqsForPdbs
+ * @param ap
+ * @return
+ */
+ public JalviewStructureDisplayI viewStructures(PDBEntry[] pdbs,
+ SequenceI[][] seqsForPdbs, AlignmentPanel ap)
+ {
+ JalviewStructureDisplayI viewer = onlyOnePdb(pdbs, seqsForPdbs, ap);
+ if (viewer != null)
+ {
+ return viewer;
+ }
+ return viewStructures(getViewerType(), pdbs, seqsForPdbs, ap);
+ }
+
+ /**
+ * A strictly temporary method pending JAL-1761 refactoring. Determines if all
+ * the passed PDB entries are the same (this is the case if selected sequences
+ * to view structure for are chains of the same structure). If so, calls the
+ * single-pdb version of viewStructures and returns the viewer, else returns
+ * null.
+ *
+ * @param pdbs
+ * @param seqsForPdbs
+ * @param ap
+ * @return
+ */
+ private JalviewStructureDisplayI onlyOnePdb(PDBEntry[] pdbs,
+ SequenceI[][] seqsForPdbs, AlignmentPanel ap)
+ {
+ List<SequenceI> seqs = new ArrayList<SequenceI>();
+ if (pdbs == null || pdbs.length == 0)
+ {
+ return null;
+ }
+ int i = 0;
+ String firstFile = pdbs[0].getFile();
+ for (PDBEntry pdb : pdbs)
+ {
+ String pdbFile = pdb.getFile();
+ if (pdbFile == null || !pdbFile.equals(firstFile))
+ {
+ return null;
+ }
+ SequenceI[] pdbseqs = seqsForPdbs[i++];
+ if (pdbseqs != null)
+ {
+ for (SequenceI sq : pdbseqs)
+ {
+ seqs.add(sq);
+ }
+ }
+ }
+ return viewStructures(pdbs[0],
+ seqs.toArray(new SequenceI[seqs.size()]), ap);
+ }
+
+ public JalviewStructureDisplayI viewStructures(PDBEntry pdb,
+ SequenceI[] seqsForPdb, AlignmentPanel ap)