Sequence label colour stored for each sequence group
[jalview.git] / src / jalview / datamodel / SequenceGroup.java
index 18fb53b..6ded8bd 100755 (executable)
@@ -26,8 +26,7 @@ import jalview.analysis.*;
 import jalview.schemes.*;
 
 /**
- * DOCUMENT ME!
- *
+ * Collects a set contiguous ranges on a set of sequences
  * @author $author$
  * @version $Revision$
  */
@@ -47,7 +46,8 @@ public class SequenceGroup
   public ColourSchemeI cs;
   int startRes = 0;
   int endRes = 0;
-  Color outlineColour = Color.black;
+  public Color outlineColour = Color.black;
+  public Color idColour = null; 
   public int thresholdTextColour = 0;
   public Color textColour = Color.black;
   public Color textColour2 = Color.white;
@@ -63,14 +63,14 @@ public class SequenceGroup
   /**
    * Creates a new SequenceGroup object.
    *
-   * @param sequences DOCUMENT ME!
-   * @param groupName DOCUMENT ME!
-   * @param scheme DOCUMENT ME!
-   * @param displayBoxes DOCUMENT ME!
-   * @param displayText DOCUMENT ME!
-   * @param colourText DOCUMENT ME!
-   * @param start DOCUMENT ME!
-   * @param end DOCUMENT ME!
+   * @param sequences 
+   * @param groupName 
+   * @param scheme 
+   * @param displayBoxes 
+   * @param displayText 
+   * @param colourText 
+   * @param start first column of group
+   * @param end last column of group
    */
   public SequenceGroup(Vector sequences, String groupName,
                        ColourSchemeI scheme, boolean displayBoxes,
@@ -111,8 +111,25 @@ public class SequenceGroup
 
         if (seq.getAnnotation() != null)
         {
+          AlignmentAnnotation[] alann = align.getAlignmentAnnotation();
+          // Only copy annotation that is either a score or referenced by the alignment's annotation vector
           for (int a = 0; a < seq.getAnnotation().length; a++)
           {
+            AlignmentAnnotation tocopy = seq.getAnnotation()[a];
+            if (alann!=null)
+            {
+              boolean found=false;
+              for (int pos=0;pos<alann.length; pos++)
+              {
+                if (alann[pos]==tocopy)
+                { 
+                  found=true;
+                  break;
+                }
+              }
+              if (!found)
+                continue;
+            }
             AlignmentAnnotation newannot = new AlignmentAnnotation(seq
                     .getAnnotation()[a]);
             newannot.restrict(startRes, endRes);
@@ -320,10 +337,10 @@ public class SequenceGroup
   }
 
   /**
-   * DOCUMENT ME!
+   * Add s to this sequence group
    *
-   * @param s DOCUMENT ME!
-   * @param recalc DOCUMENT ME!
+   * @param s alignment sequence to be added
+   * @param recalc true means Group's conservation should be recalculated
    */
   public void addSequence(SequenceI s, boolean recalc)
   {
@@ -339,7 +356,7 @@ public class SequenceGroup
   }
 
   /**
-   * DOCUMENT ME!
+   * calculate residue conservation for group
    */
   public void recalcConservation()
   {
@@ -609,4 +626,20 @@ public class SequenceGroup
 
     return seqs;
   }
+
+  /**
+   * @return the idColour
+   */
+  public Color getIdColour()
+  {
+    return idColour;
+  }
+
+  /**
+   * @param idColour the idColour to set
+   */
+  public void setIdColour(Color idColour)
+  {
+    this.idColour = idColour;
+  }
 }