+ if (userSelectedSeq != null)
+ {
+ selectedSequence = userSelectedSeq;
+ }
+ PDBEntry fileEntry = new AssociatePdbFileWithSeq()
+ .associatePdbWithSeq(selectedPdbFileName,
+ DataSourceType.FILE,
+ selectedSequence, true, Desktop.instance);
+
+ launchStructureViewer(ssm, new PDBEntry[] { fileEntry }, ap,
+ new SequenceI[] { selectedSequence });
+ }
+ closeAction();
+ }
+ }).start();
+ }
+
+ private PDBEntry getFindEntry(String id, Vector<PDBEntry> pdbEntries)
+ {
+ Objects.requireNonNull(id);
+ Objects.requireNonNull(pdbEntries);
+ PDBEntry foundEntry = null;
+ for (PDBEntry entry : pdbEntries)
+ {
+ if (entry.getId().equalsIgnoreCase(id))
+ {
+ return entry;
+ }
+ }
+ return foundEntry;
+ }
+
+ private void launchStructureViewer(StructureSelectionManager ssm,
+ final PDBEntry[] pdbEntriesToView,
+ final AlignmentPanel alignPanel, SequenceI[] sequences)
+ {
+ ssm.setProgressBar(MessageManager
+ .getString("status.launching_3d_structure_viewer"));
+ final StructureViewer sViewer = new StructureViewer(ssm);
+
+ if (SiftsSettings.isMapWithSifts())
+ {
+ ArrayList<SequenceI> seqsWithoutSourceDBRef = new ArrayList<SequenceI>();
+ for (SequenceI seq : sequences)
+ {
+ if (seq.getSourceDBRef() == null && seq.getDBRefs() == null)
+ {
+ seqsWithoutSourceDBRef.add(seq);
+ continue;
+ }
+ }
+ if (!seqsWithoutSourceDBRef.isEmpty())
+ {
+ int y = seqsWithoutSourceDBRef.size();
+ ssm.setProgressBar(null);
+ ssm.setProgressBar(MessageManager.formatMessage(
+ "status.fetching_dbrefs_for_sequences_without_valid_refs",
+ y));
+ SequenceI[] seqWithoutSrcDBRef = new SequenceI[y];
+ int x = 0;
+ for (SequenceI fSeq : seqsWithoutSourceDBRef)
+ {
+ seqWithoutSrcDBRef[x++] = fSeq;
+ }
+ new DBRefFetcher(seqWithoutSrcDBRef).fetchDBRefs(true);
+ }
+ }
+ if (pdbEntriesToView.length > 1)
+ {
+ ArrayList<SequenceI[]> seqsMap = new ArrayList<SequenceI[]>();
+ for (SequenceI seq : sequences)
+ {
+ seqsMap.add(new SequenceI[] { seq });
+ }
+ SequenceI[][] collatedSeqs = seqsMap.toArray(new SequenceI[0][0]);
+ ssm.setProgressBar(null);
+ ssm.setProgressBar(MessageManager
+ .getString("status.fetching_3d_structures_for_selected_entries"));
+ sViewer.viewStructures(pdbEntriesToView, collatedSeqs, alignPanel);
+ }
+ else
+ {
+ ssm.setProgressBar(null);
+ ssm.setProgressBar(MessageManager.formatMessage(
+ "status.fetching_3d_structures_for",
+ pdbEntriesToView[0].getId()));
+ sViewer.viewStructures(pdbEntriesToView[0], sequences, alignPanel);