Bamboo test#12 reporting stack trace for ViewportRanges by EventQueue
[jalview.git] / src / jalview / viewmodel / ViewportRanges.java
index 9f54964..f42e730 100644 (file)
@@ -23,6 +23,8 @@ package jalview.viewmodel;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.HiddenColumns;
 
+import java.util.Arrays;
+
 /**
  * Supplies and updates viewport properties relating to position such as: start
  * and end residues and sequences; ideally will serve hidden columns/rows too.
@@ -72,10 +74,25 @@ public class ViewportRanges extends ViewportProperties
     this.startRes = 0;
     this.endRes = alignment.getWidth() - 1;
     this.startSeq = 0;
-    this.endSeq = alignment.getHeight() - 1;
+    this.setEndSeqTest(alignment.getHeight() - 1);
     this.al = alignment;
   }
 
+  public static String sTest = "";
+
+  private void setEndSeqTest(int val)
+  {
+    String st = Thread.currentThread().toString();
+    sTest += "ViewPortRanges.setEndseqTest " + val + " "
+            + st + "\n";
+    if (st.indexOf("Event") >= 0)
+    {
+      sTest += Arrays.toString(new NullPointerException().getStackTrace())
+              .substring(0, 500)
+              + "\n";
+    }
+    endSeq = val;
+  }
   /**
    * Get alignment width in cols, including hidden cols
    */
@@ -142,17 +159,6 @@ public class ViewportRanges extends ViewportProperties
       return; // BH 2019.07.27 standard check for no changes
     }
 
-    // listeners include:
-
-    // jalview.gui.SeqCanvas[,0,0,568x90,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
-    // STARTRES, STARTRESANDSEQ
-    // jalview.gui.IdCanvas[,0,0,112x90,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=java.awt.Dimension[width=112,height=0]]
-    // jalview.gui.ScalePanel[,0,0,594x17,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
-    // jalview.gui.AnnotationPanel[,0,0,0x162,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=java.awt.Dimension[width=1,height=162]]
-    // jalview.gui.AlignmentPanel[,0,0,706x133,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777225,maximumSize=,minimumSize=,preferredSize=java.awt.Dimension[width=220,height=166]]
-    // jalview.gui.OverviewPanel[,0,0,543x135,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=java.awt.Dimension[width=543,height=135]]
-
-
     // "STARTRES" is a misnomer here -- really "STARTORENDRES"
     // note that this could be "no change" if the range is just being expanded
     changeSupport.firePropertyChange(STARTRES, oldstartres, startRes);
@@ -224,7 +230,7 @@ public class ViewportRanges extends ViewportProperties
   public void setStartSeq(int seq)
   {
     int height = getViewportHeight();
-    int startseq = Math.max(seq, getVisibleAlignmentHeight() - height);
+    int startseq = Math.min(seq, getVisibleAlignmentHeight() - height);
     // BH 2019.07.27 cosmetic only -- was:
     // if (startseq + height - 1 > getVisibleAlignmentHeight() - 1)
     // {
@@ -297,15 +303,15 @@ public class ViewportRanges extends ViewportProperties
     int oldendseq = this.endSeq;
     if (end >= visibleHeight)
     {
-      endSeq = Math.max(visibleHeight - 1, 0);
+      setEndSeqTest(Math.max(visibleHeight - 1, 0));
     }
     else if (end < 0)
     {
-      endSeq = 0;
+      setEndSeqTest(0);
     }
     else
     {
-      endSeq = end;
+      setEndSeqTest(end);
     }
     return new int[] { oldstartseq, oldendseq };
   }
@@ -335,7 +341,6 @@ public class ViewportRanges extends ViewportProperties
    */
   public void setStartResAndSeq(int res, int seq)
   {
-    // from Overview only
     int width = getViewportWidth();
     int[] oldresvalues = updateStartEndRes(res, res + width - 1);
 
@@ -468,8 +473,6 @@ public class ViewportRanges extends ViewportProperties
     {
       vpstart = visHeight - h;
     }
-    // System.out.println("ViewportRanges setviewportStartAndHeight " + vpstart
-    // + " " + start + " " + h + " " + getVisibleAlignmentHeight());
 
     setStartEndSeq(vpstart, vpstart + h - 1);
   }
@@ -661,10 +664,7 @@ public class ViewportRanges extends ViewportProperties
   }
 
   /**
-   * Set the viewport location so that a position is visible. From
-   * SeqPanel.scrollToVisible(true) only, from AlignFrame keyboard actions
-   * SeqPanel.scrollCursor[Row(VK_S)/Column(VK_C)/RowAndColumn(VK_ENTER,COMMA)/Position(VK_P)]
-   * 
+   * Set the viewport location so that a position is visible
    * 
    * @param x
    *          column to be visible: absolute position in alignment
@@ -830,4 +830,11 @@ public class ViewportRanges extends ViewportProperties
 
     return maxScroll;
   }
+
+  @Override
+  public String toString()
+  {
+    return "[ViewportRange startRes=" + startRes + " endRes=" + endRes
+            + " startSeq=" + startSeq + " endSeq=" + endSeq + "]";
+  }
 }