Merge branch 'docs/2_8_1_Release' into Release_2_8_1_Branch
[jalview.git] / src / jalview / datamodel / SequenceGroup.java
index 5d0841e..a01c0a5 100755 (executable)
@@ -1,5 +1,5 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1)
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.1)
  * Copyright (C) 2014 The Jalview Authors
  * 
  * This file is part of Jalview.
@@ -470,12 +470,28 @@ public class SequenceGroup implements AnnotatedCollectionI
   }
 
   /**
-   * Max Gaps Threshold for performing a conservation calculation TODO: make
-   * this a configurable property - or global to an alignment view
+   * Max Gaps Threshold (percent) for performing a conservation calculation 
    */
   private int consPercGaps = 25;
 
   /**
+   * @return Max Gaps Threshold for performing a conservation calculation
+   */
+  public int getConsPercGaps()
+  {
+    return consPercGaps;
+  }
+
+  /**
+   * set Max Gaps Threshold (percent) for performing a conservation calculation
+   * @param consPercGaps 
+   */
+  public void setConsPercGaps(int consPercGaps)
+  {
+    this.consPercGaps = consPercGaps;
+  }
+
+  /**
    * calculate residue conservation for group - but only if necessary.
    */
   public void recalcConservation()
@@ -484,10 +500,6 @@ public class SequenceGroup implements AnnotatedCollectionI
     {
       return;
     }
-    if (cs != null)
-    {
-      cs.alignmentChanged(this, null);
-    }
     try
     {
       Hashtable cnsns[] = AAFrequency.calculate(sequences, startRes,
@@ -499,7 +511,6 @@ public class SequenceGroup implements AnnotatedCollectionI
       if (cs != null)
       {
         cs.setConsensus(cnsns);
-        cs.alignmentChanged(this, null);
       }
 
       if ((conservation != null)
@@ -519,10 +530,13 @@ public class SequenceGroup implements AnnotatedCollectionI
           if (cs.conservationApplied())
           {
             cs.setConservation(c);
-            cs.alignmentChanged(this, null);
           }
         }
       }
+      if (cs != null)
+      {
+        cs.alignmentChanged(context!=null ? context : this, null);
+      }
     } catch (java.lang.OutOfMemoryError err)
     {
       // TODO: catch OOM
@@ -1195,11 +1209,15 @@ public class SequenceGroup implements AnnotatedCollectionI
     ArrayList<AlignmentAnnotation> annot = new ArrayList<AlignmentAnnotation>();
     for (SequenceI seq : (Vector<SequenceI>) sequences)
     {
-      for (AlignmentAnnotation al : seq.getAnnotation())
+      AlignmentAnnotation[] aa = seq.getAnnotation();
+      if (aa != null)
       {
-        if (al.groupRef == this)
+        for (AlignmentAnnotation al : aa)
         {
-          annot.add(al);
+          if (al.groupRef == this)
+          {
+            annot.add(al);
+          }
         }
       }
     }
@@ -1232,4 +1250,21 @@ public class SequenceGroup implements AnnotatedCollectionI
   {
     sequences.clear();
   }
+  private AnnotatedCollectionI context;
+  /**
+   * set the alignment or group context for this group
+   * @param context
+   */
+  public void setContext(AnnotatedCollectionI context)
+  {
+    this.context = context; 
+  }
+  /* (non-Javadoc)
+   * @see jalview.datamodel.AnnotatedCollectionI#getContext()
+   */
+  @Override
+  public AnnotatedCollectionI getContext()
+  {
+    return context;
+  }
 }