/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9.0b1)
- * 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.
*
Cache.setProperty(Preferences.STRUCTURE_DISPLAY, type.name());
}
- public StructureViewer(StructureSelectionManager structureSelectionManager)
+ public StructureViewer(
+ StructureSelectionManager structureSelectionManager)
{
ssm = structureSelectionManager;
}
}
}
}
- return viewStructures(pdbs[0],
- seqs.toArray(new SequenceI[seqs.size()]), ap);
+ return viewStructures(pdbs[0], seqs.toArray(new SequenceI[seqs.size()]),
+ ap);
}
public JalviewStructureDisplayI viewStructures(PDBEntry pdb,
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
{
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<PDBEntry> uniques = new ArrayList<PDBEntry>();
+ List<String> filesSeen = new ArrayList<String>();
+ 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)
{
* @param vid
* @return
*/
- public JalviewStructureDisplayI createView(ViewerType type,
- String[] pdbf, String[] id, SequenceI[][] sq,
- AlignmentPanel alignPanel, StructureViewerModel viewerData,
- String fileloc, Rectangle rect, String vid)
+ 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();
useinViewerSuperpos, viewerColouring, fileloc, rect, vid);
break;
case CHIMERA:
- Cache.log.error("Unsupported structure viewer type "
- + type.toString());
+ Cache.log.error(
+ "Unsupported structure viewer type " + type.toString());
break;
default:
Cache.log.error("Unknown structure viewer type " + type.toString());