X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FStructureViewer.java;h=189d490880ba8c563fe46180be6fa21db93e727b;hb=a5be53df96dabea00429121a742ae476872640eb;hp=21b298414c68b6fa80ed655b346ec5d25aafdce0;hpb=0a1556c9d4503b4832d0ca83346c4394b8539016;p=jalview.git diff --git a/src/jalview/gui/StructureViewer.java b/src/jalview/gui/StructureViewer.java index 21b2984..189d490 100644 --- a/src/jalview/gui/StructureViewer.java +++ b/src/jalview/gui/StructureViewer.java @@ -136,14 +136,16 @@ public class StructureViewer protected JalviewStructureDisplayI viewStructures(ViewerType viewerType, PDBEntry[] pdbs, SequenceI[][] seqsForPdbs, AlignmentPanel ap) { + PDBEntry[] pdbsForFile = getUniquePdbFiles(pdbs); JalviewStructureDisplayI sview = null; if (viewerType.equals(ViewerType.JMOL)) { - sview = new AppJmol(ap, pdbs, ap.av.collateForPDB(pdbs)); + sview = new AppJmol(ap, pdbsForFile, ap.av.collateForPDB(pdbsForFile)); } else if (viewerType.equals(ViewerType.CHIMERA)) { - sview = new ChimeraViewFrame(pdbs, ap.av.collateForPDB(pdbs), ap); + sview = new ChimeraViewFrame(pdbsForFile, + ap.av.collateForPDB(pdbsForFile), ap); } else { @@ -153,6 +155,36 @@ public class StructureViewer return sview; } + /** + * Convert the array of PDBEntry into an array with no filename repeated + * + * @param pdbs + * @return + */ + static PDBEntry[] getUniquePdbFiles(PDBEntry[] pdbs) + { + if (pdbs == null) + { + return null; + } + List uniques = new ArrayList(); + List filesSeen = new ArrayList(); + for (PDBEntry entry : pdbs) + { + String file = entry.getFile(); + if (file == null) + { + uniques.add(entry); + } + else if (!filesSeen.contains(file)) + { + uniques.add(entry); + filesSeen.add(file); + } + } + return uniques.toArray(new PDBEntry[uniques.size()]); + } + protected JalviewStructureDisplayI viewStructures(ViewerType viewerType, PDBEntry pdb, SequenceI[] seqsForPdb, AlignmentPanel ap) {