convenient creation of 'score only' annotation.
[jalview.git] / src / jalview / datamodel / AlignmentAnnotation.java
index 3ad05ea..d3d36d2 100755 (executable)
@@ -57,12 +57,12 @@ public class AlignmentAnnotation
   /**
    * Score associated with label and description.
    */
-  public float score;
+  public double score= Double.NaN;
   /**
    * flag indicating if annotation has a score.
    */
   public boolean hasScore=false;
-  
+
   public GraphLine threshold;
 
   // Graphical hints and tips
@@ -96,6 +96,8 @@ public class AlignmentAnnotation
 
   public static final int LINE_GRAPH = 2;
 
+  public boolean belowAlignment = true;
+
 
   public static int getGraphValueFromString(String string)
   {
@@ -118,7 +120,8 @@ public class AlignmentAnnotation
    *
    * @param label DOCUMENT ME!
    * @param description DOCUMENT ME!
-   * @param annotations DOCUMENT ME!
+   * @param annotations DOCUMENT ME!about:blank
+Loading...
    */
   public AlignmentAnnotation(String label, String description,
                              Annotation[] annotations)
@@ -149,8 +152,10 @@ public class AlignmentAnnotation
       }
 
       if(annotations[i].displayCharacter==null)
+      {
+        padGaps = false;
         continue;
-
+      }
 
       if (annotations[i].displayCharacter.length() == 1
           && !annotations[i].displayCharacter.equals("H")
@@ -223,11 +228,13 @@ public class AlignmentAnnotation
    * if appropriate.
    */
   private void validateRangeAndDisplay() {
+
     if (annotations==null)
     {
       visible=false; // try to prevent renderer from displaying.
       return; // this is a non-annotation row annotation - ie a sequence score.
     }
+
     int graphType = graph;
     float min = graphMin;
     float max = graphMax;
@@ -301,6 +308,11 @@ public class AlignmentAnnotation
     this.height = annotation.height;
     this.label = annotation.label;
     this.padGaps = annotation.padGaps;
+    this.visible = annotation.visible;
+    if (this.hasScore = annotation.hasScore)
+    {
+      this.score = annotation.score;
+    }
     if (threshold!=null) {
       threshold = new GraphLine(annotation.threshold);
     }
@@ -349,6 +361,8 @@ public class AlignmentAnnotation
    */
   public void restrict(int startRes, int endRes)
   {
+    if (annotations==null)
+      return;
     Annotation[] temp = new Annotation[endRes-startRes+1];
     if (startRes<annotations.length)
     {
@@ -471,13 +485,13 @@ public class AlignmentAnnotation
     {
       return;
     }
+    sequenceRef=seqRef;
     if (annotations==null)
     {
       return;
     }
     sequenceMapping = new java.util.Hashtable();
 
-    sequenceRef = seqRef;
     int seqPos;
 
     for (int i = 0; i < annotations.length; i++)
@@ -604,7 +618,7 @@ public class AlignmentAnnotation
   /**
    * @return the score
    */
-  public float getScore()
+  public double getScore()
   {
     return score;
   }
@@ -612,16 +626,28 @@ public class AlignmentAnnotation
   /**
    * @param score the score to set
    */
-  public void setScore(float score)
+  public void setScore(double score)
   {
+    hasScore=true;
     this.score = score;
   }
   /**
-   * 
+   *
    * @return true if annotation has an associated score
    */
   public boolean hasScore()
   {
-    return hasScore;
+    return hasScore || !Double.isNaN(score);
+  }
+  /**
+   * Score only annotation
+   * @param label
+   * @param description
+   * @param score
+   */
+  public AlignmentAnnotation(String label, String description, double score)
+  {
+    this(label, description, null);
+    setScore(score);
   }
 }