JAL-34 fix up comparison annotation so it gets shown and scaled properly
[jalview.git] / src / jalview / viewmodel / AlignmentViewport.java
index 3ab2fce..22d863a 100644 (file)
@@ -60,6 +60,7 @@ import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceCollectionI;
 import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
+import jalview.gui.AlignmentPanel;
 import jalview.gui.QuitHandler;
 import jalview.project.Jalview2XML;
 import jalview.renderer.ResidueShader;
@@ -903,8 +904,8 @@ public abstract class AlignmentViewport
         if (calculator.getRegisteredWorkersOfClass(
                 AlignmentComparisonThread.class) == null)
         {
-          calculator
-                  .registerWorker(new AlignmentComparisonThread(this, ap));
+          initAlignmentComparison(ap);
+          ap.adjustAnnotationHeight();
         }
       }
     }
@@ -1347,6 +1348,10 @@ public abstract class AlignmentViewport
    */
   private boolean followHighlight = true;
 
+  private AlignmentAnnotation aligComparison;
+
+  private boolean showComparison = true;
+
   /**
    * Property change listener for changes in alignment
    * 
@@ -2095,6 +2100,40 @@ public abstract class AlignmentViewport
     }
   }
 
+  private void initAlignmentComparison(final AlignmentViewPanel ap)
+  {
+    if (getCodingComplement() == null
+            || getCodingComplement().isNucleotide() != isNucleotide())
+    {
+      return;
+    }
+
+    if (aligComparison == null)
+    {
+      aligComparison = new AlignmentAnnotation("Comparision",
+              MessageManager.getString("label.alignment_comparison_descr"),
+              new Annotation[1], 0f, 100f, AlignmentAnnotation.BAR_GRAPH);
+      aligComparison.hasText = true;
+      aligComparison.autoCalculated = true;
+
+      if (showComparison)
+      {
+        alignment.addAnnotation(aligComparison);
+      }
+    }
+
+    if (calculator.getRegisteredWorkersOfClass(
+            AlignmentComparisonThread.class) == null)
+    {
+      calculator.registerWorker(new AlignmentComparisonThread(this, ap));
+    }
+  }
+  @Override
+  public AlignmentAnnotation getComparisonAnnotation()
+  {
+    return aligComparison;
+  }
+
   /*
    * (non-Javadoc)
    *