import jalview.structure.StructureSelectionManager;
import jalview.util.MessageManager;
import jalview.viewmodel.AlignmentViewport;
+import jalview.ws.DBRefFetcher;
+import jalview.ws.DBRefFetcher.FetchFinishedListenerI;
import jalview.ws.SequenceFetcher;
import jalview.ws.jws1.Discoverer;
import jalview.ws.jws2.Jws2Discoverer;
break;
}
}
- Alignment al = makeCrossReferencesAlignment(
+ AlignmentI al = makeCrossReferencesAlignment(
alignment.getDataset(), xrefs);
AlignFrame newFrame = new AlignFrame(al, DEFAULT_WIDTH,
}
/**
- * Makes an alignment containing the given sequences; the sequences are
- * added to the given alignment dataset, and the dataset is set on (shared
- * by) the new alignment
+ * Makes an alignment containing the given sequences. If this is of the
+ * same type as the given dataset (nucleotide/protein), then the new
+ * alignment shares the same dataset, and its dataset sequences are added
+ * to it. Otherwise a new dataset sequence is created for the
+ * cross-references.
*
* @param dataset
* @param seqs
* @return
*/
- protected Alignment makeCrossReferencesAlignment(Alignment dataset,
- Alignment seqs)
+ protected AlignmentI makeCrossReferencesAlignment(AlignmentI dataset,
+ AlignmentI seqs)
{
+ boolean sameType = dataset.isNucleotide() == seqs.isNucleotide();
+
SequenceI[] sprods = new SequenceI[seqs.getHeight()];
for (int s = 0; s < sprods.length; s++)
{
sprods[s] = (seqs.getSequenceAt(s)).deriveSequence();
- if (dataset.getSequences() == null
- || !dataset.getSequences().contains(
- sprods[s].getDatasetSequence()))
+ if (sameType)
{
- dataset.addSequence(sprods[s].getDatasetSequence());
+ if (dataset.getSequences() == null
+ || !dataset.getSequences().contains(
+ sprods[s].getDatasetSequence()))
+ {
+ dataset.addSequence(sprods[s].getDatasetSequence());
+ }
}
sprods[s].updatePDBIds();
}
Alignment al = new Alignment(sprods);
- al.setDataset(dataset);
+ if (sameType)
+ {
+ al.setDataset((Alignment) dataset);
+ }
+ else
+ {
+ al.createDatasetAlignment();
+ }
return al;
}
{
new Thread(new Runnable()
{
-
@Override
public void run()
{
- boolean isNuclueotide = alignPanel.alignFrame.getViewport()
+ boolean isNucleotide = alignPanel.alignFrame.getViewport()
.getAlignment().isNucleotide();
- new jalview.ws.DBRefFetcher(alignPanel.av
+ DBRefFetcher dbRefFetcher = new DBRefFetcher(alignPanel.av
.getSequenceSelection(), alignPanel.alignFrame, null,
- alignPanel.alignFrame.featureSettings, isNuclueotide)
+ alignPanel.alignFrame.featureSettings, isNucleotide);
+ dbRefFetcher.addListener(new FetchFinishedListenerI()
+ {
+ @Override
+ public void finished()
+ {
+ AlignFrame.this.setMenusForViewport();
+ }
+ });
+ dbRefFetcher
.fetchDBRefs(false);
}
}).start();
@Override
public void run()
{
- boolean isNuclueotide = alignPanel.alignFrame
+ boolean isNucleotide = alignPanel.alignFrame
.getViewport().getAlignment()
.isNucleotide();
- new jalview.ws.DBRefFetcher(alignPanel.av
- .getSequenceSelection(),
+ DBRefFetcher dbRefFetcher = new DBRefFetcher(
+ alignPanel.av.getSequenceSelection(),
alignPanel.alignFrame, dassource,
alignPanel.alignFrame.featureSettings,
- isNuclueotide).fetchDBRefs(false);
+ isNucleotide);
+ dbRefFetcher
+ .addListener(new FetchFinishedListenerI()
+ {
+ @Override
+ public void finished()
+ {
+ AlignFrame.this.setMenusForViewport();
+ }
+ });
+ dbRefFetcher.fetchDBRefs(false);
}
}).start();
}
@Override
public void run()
{
- boolean isNuclueotide = alignPanel.alignFrame
+ boolean isNucleotide = alignPanel.alignFrame
.getViewport().getAlignment()
.isNucleotide();
- new jalview.ws.DBRefFetcher(alignPanel.av
- .getSequenceSelection(),
+ DBRefFetcher dbRefFetcher = new DBRefFetcher(
+ alignPanel.av.getSequenceSelection(),
alignPanel.alignFrame, dassource,
alignPanel.alignFrame.featureSettings,
- isNuclueotide).fetchDBRefs(false);
+ isNucleotide);
+ dbRefFetcher
+ .addListener(new FetchFinishedListenerI()
+ {
+ @Override
+ public void finished()
+ {
+ AlignFrame.this.setMenusForViewport();
+ }
+ });
+ dbRefFetcher.fetchDBRefs(false);
}
}).start();
}
@Override
public void run()
{
- boolean isNuclueotide = alignPanel.alignFrame
+ boolean isNucleotide = alignPanel.alignFrame
.getViewport().getAlignment()
.isNucleotide();
- new jalview.ws.DBRefFetcher(alignPanel.av
- .getSequenceSelection(),
+ DBRefFetcher dbRefFetcher = new DBRefFetcher(
+ alignPanel.av.getSequenceSelection(),
alignPanel.alignFrame, dassrc,
alignPanel.alignFrame.featureSettings,
- isNuclueotide).fetchDBRefs(false);
+ isNucleotide);
+ dbRefFetcher
+ .addListener(new FetchFinishedListenerI()
+ {
+ @Override
+ public void finished()
+ {
+ AlignFrame.this.setMenusForViewport();
+ }
+ });
+ dbRefFetcher.fetchDBRefs(false);
}
}).start();
}