allow an alignment annotation row to be removed and re-inserted without losing any...
authorjprocter <Jim Procter>
Thu, 21 Apr 2011 13:17:07 +0000 (13:17 +0000)
committerjprocter <Jim Procter>
Thu, 21 Apr 2011 13:17:07 +0000 (13:17 +0000)
src/jalview/datamodel/Alignment.java
src/jalview/datamodel/AlignmentI.java

index 42559c6..4e279d3 100755 (executable)
@@ -652,6 +652,11 @@ public class Alignment implements AlignmentI
    */
   public boolean deleteAnnotation(AlignmentAnnotation aa)
   {
+    return deleteAnnotation(aa, true);
+  }
+  
+  public boolean deleteAnnotation(AlignmentAnnotation aa, boolean unhook)
+  {
     int aSize = 1;
 
     if (annotations != null)
@@ -683,7 +688,9 @@ public class Alignment implements AlignmentI
     if (swap)
     {
       annotations = temp;
-      unhookAnnotation(aa);
+      if (unhook) {
+        unhookAnnotation(aa);
+      }
     }
     return swap;
   }
index 8b947eb..2e0903d 100755 (executable)
@@ -204,7 +204,7 @@ public interface AlignmentI
 
   /**
    * Deletes a specific AlignmentAnnotation from the alignment, and removes its
-   * reference from any SequenceI object's annotation if and only if aa is
+   * reference from any SequenceI or SequenceGroup object's annotation if and only if aa is
    * contained within the alignment's annotation vector. Otherwise, it will do
    * nothing.
    * 
@@ -215,6 +215,20 @@ public interface AlignmentI
   public boolean deleteAnnotation(AlignmentAnnotation aa);
 
   /**
+   * Deletes a specific AlignmentAnnotation from the alignment, and optionally removes any
+   * reference from any SequenceI or SequenceGroup object's annotation if and only if aa is
+   * contained within the alignment's annotation vector. Otherwise, it will do
+   * nothing.
+   * 
+   * @param aa
+   *          the annotation to delete
+   * @param unhook
+   *          flag indicating if any references should be removed from annotation - use this if you intend to add the annotation back into the alignment
+   * @return true if annotation was deleted from this alignment.
+   */
+  public boolean deleteAnnotation(AlignmentAnnotation aa, boolean unhook);
+
+  /**
    * Get the annotation associated with this alignment (this can be null if no
    * annotation has ever been created on the alignment)
    *