X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FAlignment.java;h=34cc78febab20e05262abdb28bebdc41e9bc2f99;hb=9ca6b95ab67df6eaeea56765cc293133da436e76;hp=ddb58c3870ffaa3ae246aeaf7d9bf67ae0348e75;hpb=c39e588784c0fbb64c7dabfcae8db4faedde10e6;p=jalview.git diff --git a/src/jalview/datamodel/Alignment.java b/src/jalview/datamodel/Alignment.java index ddb58c3..34cc78f 100755 --- a/src/jalview/datamodel/Alignment.java +++ b/src/jalview/datamodel/Alignment.java @@ -40,6 +40,8 @@ public class Alignment HiddenSequences hiddenSequences = new HiddenSequences(this); + public Hashtable alignmentProperties; + private void initAlignment(SequenceI[] seqs) { int i = 0; @@ -139,25 +141,26 @@ public class Alignment { 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. @@ -182,10 +185,10 @@ public class Alignment return groups; } - public void destroyAlignment() + public void finalize() { if(getDataset()!=null) - getDataset().destroyAlignment(); + getDataset().finalize(); dataset = null; sequences = null; @@ -465,6 +468,9 @@ public class Alignment */ public void deleteAnnotation(AlignmentAnnotation aa) { + if(aa.sequenceRef!=null) + aa.sequenceRef.removeAlignmentAnnotation(aa); + int aSize = 1; if (annotations != null) @@ -698,4 +704,21 @@ public class Alignment return cal; } + public void setProperty(Object key, Object value) + { + if(alignmentProperties==null) + alignmentProperties = new Hashtable(); + + alignmentProperties.put(key,value); + } + + public Object getProperty(Object key) + { + if(alignmentProperties!=null) + return alignmentProperties.get(key); + else + return null; + } + + }