basic implementation of profile display and todos
[jalview.git] / src / jalview / gui / SequenceRenderer.java
index a3dd5a6..1d49da8 100755 (executable)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4)
- * Copyright (C) 2008 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1)
+ * Copyright (C) 2009 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
  * 
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -181,6 +181,7 @@ public class SequenceRenderer
   public synchronized void drawBoxes(SequenceI seq, int start, int end,
           int y1)
   {
+    if (seq==null) return; // fix for racecondition
     int i = start;
     int length = seq.getLength();
 
@@ -324,6 +325,12 @@ public class SequenceRenderer
           {
             graphics.setColor(currentSequenceGroup.textColour);
           }
+          if (currentSequenceGroup.getShowunconserved()) // todo optimize
+          {
+            // todo - use sequence group consensus
+            s = getDisplayChar(av.consensus, i, s, '.');                       
+   
+          }
 
         }
         else
@@ -361,6 +368,11 @@ public class SequenceRenderer
               graphics.setColor(av.textColour2);
             }
           }
+          if (av.showUnconserved)
+          {
+            s = getDisplayChar(av.consensus, i, s, '.');                       
+   
+          }
 
         }
 
@@ -371,6 +383,15 @@ public class SequenceRenderer
       }
     }
   }
+  private char getDisplayChar(AlignmentAnnotation consensus, int position, char s, char c)
+  {
+    char conschar = consensus.annotations[position].displayCharacter.charAt(0);
+    if (conschar!='-' && s==conschar)
+    {
+      s= c;
+    }
+    return s;
+  }
 
   /**
    * DOCUMENT ME!