JAL-1933 basic hack to get gap counts shown as an annotation row.
[jalview.git] / src / jalview / viewmodel / AlignmentViewport.java
index fecccb0..560ff59 100644 (file)
@@ -688,6 +688,8 @@ public abstract class AlignmentViewport implements AlignViewportI,
 
   protected AlignmentAnnotation complementConsensus;
 
+  protected AlignmentAnnotation gapcounts;
+
   protected AlignmentAnnotation strucConsensus;
 
   protected AlignmentAnnotation conservation;
@@ -790,6 +792,12 @@ public abstract class AlignmentViewport implements AlignViewportI,
   }
 
   @Override
+  public AlignmentAnnotation getAlignmentGapAnnotation()
+  {
+    return gapcounts;
+  }
+
+  @Override
   public AlignmentAnnotation getComplementConsensusAnnotation()
   {
     return complementConsensus;
@@ -829,7 +837,7 @@ public abstract class AlignmentViewport implements AlignViewportI,
   public void updateConsensus(final AlignmentViewPanel ap)
   {
     // see note in mantis : issue number 8585
-    if (consensus == null || !autoCalculateConsensus)
+    if ((consensus == null || gapcounts == null) || !autoCalculateConsensus)
     {
       return;
     }
@@ -1903,6 +1911,10 @@ public abstract class AlignmentViewport implements AlignViewportI,
       consensus = new AlignmentAnnotation("Consensus", "PID",
               new Annotation[1], 0f, 100f, AlignmentAnnotation.BAR_GRAPH);
       initConsensus(consensus);
+      gapcounts = new AlignmentAnnotation("Gaps", "Number of Gaps",
+              new Annotation[1], 0f, alignment.getHeight(),
+              AlignmentAnnotation.LINE_GRAPH);
+      initGapCounts(gapcounts);
 
       initComplementConsensus();
     }
@@ -1955,6 +1967,20 @@ public abstract class AlignmentViewport implements AlignViewportI,
     }
   }
 
+  // these should be extracted from the view model - style and settings for
+  // derived annotation
+  private void initGapCounts(AlignmentAnnotation gapcounts)
+  {
+    gapcounts.hasText = false;
+    gapcounts.autoCalculated = true;
+    gapcounts.graph = AlignmentAnnotation.BAR_GRAPH;
+
+    if (showConsensus)
+    {
+      alignment.addAnnotation(gapcounts);
+    }
+  }
+
   private void initConservation()
   {
     if (showConservation)