JAL-3490 match count independent of contiguous matches count
[jalview.git] / src / jalview / appletgui / AlignmentPanel.java
index 4147177..365f886 100644 (file)
@@ -46,8 +46,8 @@ import java.awt.event.ComponentEvent;
 import java.beans.PropertyChangeEvent;
 import java.util.List;
 
-public class AlignmentPanel extends Panel implements AdjustmentListener,
-        AlignmentViewPanel, ViewportListenerI
+public class AlignmentPanel extends Panel
+        implements AdjustmentListener, AlignmentViewPanel, ViewportListenerI
 {
 
   public AlignViewport av;
@@ -73,23 +73,6 @@ public class AlignmentPanel extends Panel implements AdjustmentListener,
   // this value is set false when selection area being dragged
   boolean fastPaint = true;
 
-  @Override
-  public void finalize() throws Throwable
-  {
-    alignFrame = null;
-    av = null;
-    vpRanges = null;
-    seqPanel = null;
-    seqPanelHolder = null;
-    sequenceHolderPanel = null;
-    scalePanel = null;
-    scalePanelHolder = null;
-    annotationPanel = null;
-    annotationPanelHolder = null;
-    annotationSpaceFillerHolder = null;
-    super.finalize();
-  }
-
   public AlignmentPanel(AlignFrame af, final AlignViewport av)
   {
     try
@@ -234,10 +217,10 @@ public class AlignmentPanel extends Panel implements AdjustmentListener,
     idPanel.idCanvas.image = null;
     FontMetrics fm = getFontMetrics(av.getFont());
 
-    scalePanel.setSize(new Dimension(10, av.getCharHeight()
-            + fm.getDescent()));
-    idwidthAdjuster.setSize(new Dimension(10, av.getCharHeight()
-            + fm.getDescent()));
+    scalePanel.setSize(
+            new Dimension(10, av.getCharHeight() + fm.getDescent()));
+    idwidthAdjuster.setSize(
+            new Dimension(10, av.getCharHeight() + fm.getDescent()));
     av.updateSequenceIdColours();
     annotationPanel.image = null;
     int ap = annotationPanel.adjustPanelHeight(false);
@@ -358,11 +341,10 @@ public class AlignmentPanel extends Panel implements AdjustmentListener,
    * @return false if results were not found
    */
   public boolean scrollToPosition(SearchResultsI results,
-          int verticalOffset,
-          boolean redrawOverview, boolean centre)
+          int verticalOffset, boolean redrawOverview, boolean centre)
   {
     // do we need to scroll the panel?
-    if (results != null && results.getSize() > 0)
+    if (results != null && results.getCount() > 0)
     {
       AlignmentI alignment = av.getAlignment();
       int seqIndex = alignment.findIndex(results);
@@ -380,8 +362,8 @@ public class AlignmentPanel extends Panel implements AdjustmentListener,
       {
         if (JalviewLite.debug)
         {// DEBUG
-          System.out
-                  .println("DEBUG: scroll didn't happen - results not within alignment : "
+          System.out.println(
+                  "DEBUG: scroll didn't happen - results not within alignment : "
                           + seq.getStart() + "," + seq.getEnd());
         }
         return false;
@@ -405,7 +387,8 @@ public class AlignmentPanel extends Panel implements AdjustmentListener,
        */
       if (centre)
       {
-        int offset = (vpRanges.getEndRes() - vpRanges.getStartRes() + 1) / 2 - 1;
+        int offset = (vpRanges.getEndRes() - vpRanges.getStartRes() + 1) / 2
+                - 1;
         start = Math.max(start - offset, 0);
         end = end + offset - 1;
         // end = Math.min(end + offset, seq.getEnd() - 1);
@@ -438,8 +421,8 @@ public class AlignmentPanel extends Panel implements AdjustmentListener,
     if (av.hasHiddenColumns())
     {
       AlignmentI al = av.getAlignment();
-      start = al.getHiddenColumns().findColumnPosition(ostart);
-      end = al.getHiddenColumns().findColumnPosition(end);
+      start = al.getHiddenColumns().absoluteToVisibleColumn(ostart);
+      end = al.getHiddenColumns().absoluteToVisibleColumn(end);
       if (start == end)
       {
         if (!scrollToNearest && !al.getHiddenColumns().isVisible(ostart))
@@ -518,8 +501,8 @@ public class AlignmentPanel extends Panel implements AdjustmentListener,
         /*
          * Scroll down to make end of search results visible
          */
-        setScrollValues(vpRanges.getStartRes(), starts + seqIndex - ends
-                + 1);
+        setScrollValues(vpRanges.getStartRes(),
+                starts + seqIndex - ends + 1);
       }
       /*
        * Else results are already visible - no need to scroll
@@ -530,7 +513,7 @@ public class AlignmentPanel extends Panel implements AdjustmentListener,
       vpRanges.scrollToWrappedVisible(start);
     }
 
-    paintAlignment(redrawOverview);
+    paintAlignment(redrawOverview, false);
     return true;
   }
 
@@ -571,15 +554,15 @@ public class AlignmentPanel extends Panel implements AdjustmentListener,
     // this is called after loading new annotation onto alignment
     if (alignFrame.getSize().height == 0)
     {
-      System.out
-              .println("adjustAnnotationHeight frame size zero NEEDS FIXING");
+      System.out.println(
+              "adjustAnnotationHeight frame size zero NEEDS FIXING");
     }
     fontChanged();
     validateAnnotationDimensions(true);
     apvscroll.addNotify();
     hscroll.addNotify();
     validate();
-    paintAlignment(true);
+    paintAlignment(true, false);
   }
 
   /**
@@ -605,8 +588,8 @@ public class AlignmentPanel extends Panel implements AdjustmentListener,
        */
       if (annotationHeight + alignmentHeight > availableHeight)
       {
-        annotationHeight = Math.min(annotationHeight, availableHeight - 2
-                * rowHeight);
+        annotationHeight = Math.min(annotationHeight,
+                availableHeight - 2 * rowHeight);
       }
     }
     else
@@ -623,13 +606,13 @@ public class AlignmentPanel extends Panel implements AdjustmentListener,
     annotationPanel.setSize(new Dimension(d.width, annotationHeight));
     annotationPanelHolder.setSize(new Dimension(d.width, annotationHeight));
     // seqPanelHolder.setSize(d.width, seqandannot - height);
-    seqPanel.seqCanvas
-            .setSize(d.width, seqPanel.seqCanvas.getSize().height);
+    seqPanel.seqCanvas.setSize(d.width,
+            seqPanel.seqCanvas.getSize().height);
 
     Dimension e = idPanel.getSize();
     alabels.setSize(new Dimension(e.width, annotationHeight));
-    annotationSpaceFillerHolder.setSize(new Dimension(e.width,
-            annotationHeight));
+    annotationSpaceFillerHolder
+            .setSize(new Dimension(e.width, annotationHeight));
 
     int s = apvscroll.getValue();
     if (s > mheight - annotationHeight)
@@ -643,7 +626,7 @@ public class AlignmentPanel extends Panel implements AdjustmentListener,
 
   public void setWrapAlignment(boolean wrap)
   {
-    vpRanges.setStartSeq(0);
+    vpRanges.setStartEndSeq(0, vpRanges.getVisibleAlignmentHeight());
     vpRanges.setStartRes(0);
     scalePanelHolder.setVisible(!wrap);
 
@@ -686,14 +669,9 @@ public class AlignmentPanel extends Panel implements AdjustmentListener,
     }
     else
     {
-      int width = av.getAlignment().getWidth();
+      int width = av.getAlignment().getVisibleWidth();
       int height = av.getAlignment().getHeight();
 
-      if (av.hasHiddenColumns())
-      {
-        width = av.getAlignment().getHiddenColumns()
-                .findColumnPosition(width);
-      }
       if (x < 0)
       {
         x = 0;
@@ -930,7 +908,8 @@ public class AlignmentPanel extends Panel implements AdjustmentListener,
    * Repaint the alignment and annotations, and, optionally, any overview window
    */
   @Override
-  public void paintAlignment(boolean updateOverview)
+  public void paintAlignment(boolean updateOverview,
+          boolean updateStructures)
   {
     final AnnotationSorter sorter = new AnnotationSorter(getAlignment(),
             av.isShowAutocalculatedAbove());
@@ -938,13 +917,14 @@ public class AlignmentPanel extends Panel implements AdjustmentListener,
             av.getSortAnnotationsBy());
     repaint();
 
-    if (updateOverview)
+    if (updateStructures)
     {
-      // TODO: determine if this paintAlignment changed structure colours
       jalview.structure.StructureSelectionManager
               .getStructureSelectionManager(av.applet)
               .sequenceColoursChanged(this);
-
+    }
+    if (updateOverview)
+    {
       if (overviewPanel != null)
       {
         overviewPanel.updateOverviewImage();
@@ -1156,7 +1136,7 @@ public class AlignmentPanel extends Panel implements AdjustmentListener,
 
   @Override
   /**
-   * Property change event fired when a change is made to the viewport ranges 
+   * Property change event fired when a change is made to the viewport ranges
    * object associated with this alignment panel's viewport
    */
   public void propertyChange(PropertyChangeEvent evt)