{
if (dataset != null)
{
+ // maintain dataset integrity
if (snew.getDatasetSequence() != null)
{
getDataset().addSequence(snew.getDatasetSequence());
}
else
{
- Sequence ds = new Sequence(snew.getName(),
- AlignSeq.extractGaps("-. ",
- snew.getSequenceAsString()),
- snew.getStart(),
- snew.getEnd());
-
- snew.setDatasetSequence(ds);
- getDataset().addSequence(ds);
+ // derive new sequence
+ SequenceI adding = snew.deriveSequence();
+ getDataset().addSequence(adding.getDatasetSequence());
+ snew = adding;
}
}
- sequences.addElement(snew);
-
- hiddenSequences.adjustHeightSequenceAdded();
+ if (sequences==null) {
+ initAlignment(new SequenceI[] { snew });
+ } else {
+ sequences.addElement(snew);
+ }
+ if (hiddenSequences!=null)
+ hiddenSequences.adjustHeightSequenceAdded();
}
/** Adds a sequence to the alignment. Recalculates maxLength and size.
return groups;
}
- public void destroyAlignment()
+ public void finalize()
{
if(getDataset()!=null)
- getDataset().destroyAlignment();
+ getDataset().finalize();
dataset = null;
sequences = null;
*/
public void deleteAnnotation(AlignmentAnnotation aa)
{
+ if(aa.sequenceRef!=null)
+ aa.sequenceRef.removeAlignmentAnnotation(aa);
+
int aSize = 1;
if (annotations != null)