JAL-4071 first working prototype
[jalview.git] / src / jalview / gui / AlignmentPanel.java
index e84aae0..9280fb1 100644 (file)
  */
 package jalview.gui;
 
-import jalview.analysis.AnnotationSorter;
-import jalview.api.AlignViewportI;
-import jalview.api.AlignmentViewPanel;
-import jalview.bin.Cache;
-import jalview.bin.Console;
-import jalview.bin.Jalview;
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.HiddenColumns;
-import jalview.datamodel.SearchResultsI;
-import jalview.datamodel.SequenceFeature;
-import jalview.datamodel.SequenceGroup;
-import jalview.datamodel.SequenceI;
-import jalview.gui.ImageExporter.ImageWriterI;
-import jalview.io.HTMLOutput;
-import jalview.jbgui.GAlignmentPanel;
-import jalview.math.AlignmentDimension;
-import jalview.schemes.ResidueProperties;
-import jalview.structure.StructureSelectionManager;
-import jalview.util.Comparison;
-import jalview.util.ImageMaker;
-import jalview.util.MessageManager;
-import jalview.viewmodel.ViewportListenerI;
-import jalview.viewmodel.ViewportRanges;
-
 import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Container;
@@ -68,6 +44,31 @@ import java.util.List;
 
 import javax.swing.SwingUtilities;
 
+import jalview.analysis.AnnotationSorter;
+import jalview.api.AlignViewportI;
+import jalview.api.AlignmentViewPanel;
+import jalview.bin.Cache;
+import jalview.bin.Console;
+import jalview.bin.Jalview;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.HiddenColumns;
+import jalview.datamodel.SearchResultsI;
+import jalview.datamodel.SequenceFeature;
+import jalview.datamodel.SequenceGroup;
+import jalview.datamodel.SequenceI;
+import jalview.gui.ImageExporter.ImageWriterI;
+import jalview.io.HTMLOutput;
+import jalview.jbgui.GAlignmentPanel;
+import jalview.math.AlignmentDimension;
+import jalview.schemes.ResidueProperties;
+import jalview.structure.StructureSelectionManager;
+import jalview.util.Comparison;
+import jalview.util.ImageMaker;
+import jalview.util.MessageManager;
+import jalview.viewmodel.ViewportListenerI;
+import jalview.viewmodel.ViewportRanges;
+import jalview.workers.VisibleFeaturesAnnotationTracks;
+
 /**
  * DOCUMENT ME!
  * 
@@ -115,6 +116,8 @@ public class AlignmentPanel extends GAlignmentPanel implements
 
   private CalculationChooser calculationDialog;
 
+  private VisibleFeaturesAnnotationTracks featureCounter;
+
   /**
    * Creates a new AlignmentPanel object.
    * 
@@ -130,6 +133,8 @@ public class AlignmentPanel extends GAlignmentPanel implements
     setIdPanel(new IdPanel(av, this));
 
     setScalePanel(new ScalePanel(av, this));
+    featureCounter = new VisibleFeaturesAnnotationTracks(av,
+            seqPanel.seqCanvas.fr);
 
     idPanelHolder.add(getIdPanel(), BorderLayout.CENTER);
     idwidthAdjuster = new IdwidthAdjuster(this);
@@ -179,6 +184,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
     });
 
     final AlignmentPanel ap = this;
+
     propertyChangeListener = new PropertyChangeListener()
     {
       @Override
@@ -824,6 +830,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
   public void paintAlignment(boolean updateOverview,
           boolean updateStructures)
   {
+    featureCounter.updateFeatureAnnotationTracks();
     final AnnotationSorter sorter = new AnnotationSorter(getAlignment(),
             av.isShowAutocalculatedAbove());
     sorter.sort(getAlignment().getAlignmentAnnotation(),
@@ -1450,6 +1457,11 @@ public class AlignmentPanel extends GAlignmentPanel implements
       annotationPanel = null;
     }
 
+    if (featureCounter != null)
+    {
+      featureCounter.tidyUp();
+      featureCounter = null;
+    }
     if (av != null)
     {
       av.removePropertyChangeListener(propertyChangeListener);