JAL-1264 first cut of panel for annotation show/hide options
[jalview.git] / src / jalview / datamodel / SequenceGroup.java
index f3cf291..17348c2 100755 (executable)
  */
 package jalview.datamodel;
 
-import java.util.*;
+import jalview.analysis.AAFrequency;
+import jalview.analysis.Conservation;
+import jalview.schemes.ColourSchemeI;
+import jalview.schemes.ResidueProperties;
+
+import java.awt.Color;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.Hashtable;
 import java.util.List;
-
-import java.awt.*;
-
-import jalview.analysis.*;
-import jalview.schemes.*;
+import java.util.Map;
+import java.util.Vector;
 
 /**
  * Collects a set contiguous ranges on a set of sequences
@@ -289,11 +294,13 @@ public class SequenceGroup implements AnnotatedCollectionI
     return eres;
   }
 
+  @Override
   public List<SequenceI> getSequences()
   {
     return sequences;
   }
 
+  @Override
   public List<SequenceI> getSequences(
           Map<SequenceI, SequenceCollectionI> hiddenReps)
   {
@@ -307,7 +314,7 @@ public class SequenceGroup implements AnnotatedCollectionI
       SequenceI seq;
       for (int i = 0; i < sequences.size(); i++)
       {
-        seq = (SequenceI) sequences.elementAt(i);
+        seq = sequences.elementAt(i);
         allSequences.addElement(seq);
         if (hiddenReps.containsKey(seq))
         {
@@ -472,7 +479,7 @@ public class SequenceGroup implements AnnotatedCollectionI
   }
 
   /**
-   * Max Gaps Threshold (percent) for performing a conservation calculation 
+   * Max Gaps Threshold (percent) for performing a conservation calculation
    */
   private int consPercGaps = 25;
 
@@ -486,7 +493,8 @@ public class SequenceGroup implements AnnotatedCollectionI
 
   /**
    * set Max Gaps Threshold (percent) for performing a conservation calculation
-   * @param consPercGaps 
+   * 
+   * @param consPercGaps
    */
   public void setConsPercGaps(int consPercGaps)
   {
@@ -537,7 +545,7 @@ public class SequenceGroup implements AnnotatedCollectionI
       }
       if (cs != null)
       {
-        cs.alignmentChanged(context!=null ? context : this, null);
+        cs.alignmentChanged(context != null ? context : this, null);
       }
     } catch (java.lang.OutOfMemoryError err)
     {
@@ -586,9 +594,10 @@ public class SequenceGroup implements AnnotatedCollectionI
     consensus.annotations = new Annotation[aWidth]; // should be alignment width
 
     AAFrequency.completeConsensus(consensus, cnsns, startRes, endRes + 1,
-            ignoreGapsInConsensus, showSequenceLogo, nseq); // TODO: setting container
-                                                      // for
-                                                      // ignoreGapsInConsensusCalculation);
+            ignoreGapsInConsensus, showSequenceLogo, nseq); // TODO: setting
+                                                            // container
+    // for
+    // ignoreGapsInConsensusCalculation);
   }
 
   /**
@@ -633,6 +642,7 @@ public class SequenceGroup implements AnnotatedCollectionI
    * 
    * @return the first column selected by this group. Runs from 0<=i<N_cols
    */
+  @Override
   public int getStartRes()
   {
     return startRes;
@@ -642,6 +652,7 @@ public class SequenceGroup implements AnnotatedCollectionI
    * 
    * @return the groups last selected column. Runs from 0<=i<N_cols
    */
+  @Override
   public int getEndRes()
   {
     return endRes;
@@ -687,7 +698,7 @@ public class SequenceGroup implements AnnotatedCollectionI
    */
   public SequenceI getSequenceAt(int i)
   {
-    return (SequenceI) sequences.elementAt(i);
+    return sequences.elementAt(i);
   }
 
   /**
@@ -758,17 +769,18 @@ public class SequenceGroup implements AnnotatedCollectionI
    * 
    * @return DOCUMENT ME!
    */
+  @Override
   public int getWidth()
   {
     // MC This needs to get reset when characters are inserted and deleted
     if (sequences.size() > 0)
     {
-      width = ((SequenceI) sequences.elementAt(0)).getLength();
+      width = sequences.elementAt(0).getLength();
     }
 
     for (int i = 1; i < sequences.size(); i++)
     {
-      SequenceI seq = (SequenceI) sequences.elementAt(i);
+      SequenceI seq = sequences.elementAt(i);
 
       if (seq.getLength() > width)
       {
@@ -1209,7 +1221,7 @@ public class SequenceGroup implements AnnotatedCollectionI
     // TODO add in other methods like 'getAlignmentAnnotation(String label),
     // etc'
     ArrayList<AlignmentAnnotation> annot = new ArrayList<AlignmentAnnotation>();
-    for (SequenceI seq : (Vector<SequenceI>) sequences)
+    for (SequenceI seq : sequences)
     {
       AlignmentAnnotation[] aa = seq.getAnnotation();
       if (aa != null)
@@ -1248,20 +1260,47 @@ public class SequenceGroup implements AnnotatedCollectionI
     return aa;
   }
 
+  /**
+   * Answer true if any annotation matches the calcId passed in (if not null).
+   * 
+   * @param calcId
+   * @return
+   */
+  public boolean hasAnnotation(String calcId)
+  {
+    if (calcId != null && !"".equals(calcId))
+    {
+      for (AlignmentAnnotation a : getAlignmentAnnotation())
+      {
+        if (a.getCalcId() == calcId)
+        {
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+
   public void clear()
   {
     sequences.clear();
   }
+
   private AnnotatedCollectionI context;
+
   /**
    * set the alignment or group context for this group
+   * 
    * @param context
    */
   public void setContext(AnnotatedCollectionI context)
   {
-    this.context = context; 
+    this.context = context;
   }
-  /* (non-Javadoc)
+
+  /*
+   * (non-Javadoc)
+   * 
    * @see jalview.datamodel.AnnotatedCollectionI#getContext()
    */
   @Override