X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FAlignment.java;h=afe70328877239ab9a727083384405a44644bb14;hb=25e662ba13098a2a0085b44c44bd1193d683e3d7;hp=64b79b7416d1381b1cb921bcef718354f36f41c7;hpb=482e093c4670a813c9eec254990178b209e32dbc;p=jalview.git diff --git a/src/jalview/datamodel/Alignment.java b/src/jalview/datamodel/Alignment.java index 64b79b7..afe7032 100755 --- a/src/jalview/datamodel/Alignment.java +++ b/src/jalview/datamodel/Alignment.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4) - * Copyright (C) 2008 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1) + * Copyright (C) 2009 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -25,6 +25,10 @@ import jalview.analysis.*; /** * Data structure to hold and manipulate a multiple sequence alignment */ +/** + * @author JimP + * + */ public class Alignment implements AlignmentI { protected Alignment dataset; @@ -352,6 +356,14 @@ public class Alignment implements AlignmentI { if (groups.contains(g)) { + if (annotations!=null && annotations.length>0) + { + if (g.hasAnnotationRows()) + { // remove any annotation references. + deleteAnnotation(g.getConsensus());// todo - create=false flag so we don't create another object unnecessarily + deleteAnnotation(g.getConservationRow()); + } + } groups.removeElement(g); } } @@ -606,14 +618,19 @@ public class Alignment implements AlignmentI return swap; } - /** - * DOCUMENT ME! - * - * @param aa - * DOCUMENT ME! + /* (non-Javadoc) + * @see jalview.datamodel.AlignmentI#addAnnotation(jalview.datamodel.AlignmentAnnotation) */ public void addAnnotation(AlignmentAnnotation aa) { + addAnnotation(aa, -1); + } + + /* (non-Javadoc) + * @see jalview.datamodel.AlignmentI#addAnnotation(jalview.datamodel.AlignmentAnnotation, int) + */ + public void addAnnotation(AlignmentAnnotation aa, int pos) + { int aSize = 1; if (annotations != null) { @@ -621,16 +638,24 @@ public class Alignment implements AlignmentI } AlignmentAnnotation[] temp = new AlignmentAnnotation[aSize]; - - temp[aSize - 1] = aa; - int i = 0; - + if (pos==-1 || pos>=aSize) { + temp[aSize - 1] = aa; + } else { + temp[pos] = aa; + } if (aSize > 1) { - for (i = 0; i < (aSize - 1); i++) + int p=0; + for (i = 0; i < (aSize-1); i++,p++) { - temp[i] = annotations[i]; + if (p==pos) + { + p++; + } + if (p