/**
* Data structure to hold and manipulate a multiple sequence alignment
*/
+/**
+ * @author JimP
+ *
+ */
public class Alignment implements AlignmentI
{
protected Alignment dataset;
{
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);
}
}
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)
{
}
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<temp.length) {
+ temp[p] = annotations[i];
+ }
}
}