X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FStructureViewer.java;h=189d490880ba8c563fe46180be6fa21db93e727b;hb=c0b7a760fe1ced5fe25ee3c3fd272e03f7526fa2;hp=df5a6c42de04e113a7003dd1d50592a17ed0f721;hpb=17e77c3f2949a0729322b4a8d907f3f34b6a9914;p=jalview.git diff --git a/src/jalview/gui/StructureViewer.java b/src/jalview/gui/StructureViewer.java index df5a6c4..189d490 100644 --- a/src/jalview/gui/StructureViewer.java +++ b/src/jalview/gui/StructureViewer.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9) - * Copyright (C) 2015 The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * @@ -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) {