smoother scroll-to-position action
authorjprocter <Jim Procter>
Fri, 19 Jun 2009 09:56:12 +0000 (09:56 +0000)
committerjprocter <Jim Procter>
Fri, 19 Jun 2009 09:56:12 +0000 (09:56 +0000)
src/jalview/gui/AlignmentPanel.java

index 608d29f..17a24f6 100755 (executable)
@@ -248,6 +248,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
    * @return false if results were not found
    */
   public boolean scrollToPosition(SearchResults results, boolean redrawOverview) {
+    int startv,endv,starts,ends,width;
     // TODO: properly locate search results in view when large numbers of hidden columns exist before highlighted region
     // do we need to scroll the panel?
     // TODO: tons of nullpointereexceptions raised here.
@@ -261,6 +262,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
       SequenceI seq = av.alignment.getSequenceAt(seqIndex);
       
       int [] r = results.getResults(seq, 0, av.alignment.getWidth()); // results.getResults(seq, seq.getStart(), seq.getEnd());
+      // TODO: VAMSAS: fix hidden column issue where scroll to left from C terminus is not visible
       if (r==null)
       {
         return false;
@@ -277,13 +279,18 @@ public class AlignmentPanel extends GAlignmentPanel implements
       }
       if (!av.wrapAlignment)
       {
-        if ((av.getStartRes() >= start)
-                || (av.getEndRes() <= end))
+        if ((startv=av.getStartRes()) >= start)
         {
           setScrollValues(start-1, seqIndex);
-        } else if ((av.getStartSeq() > seqIndex) || (av.getEndSeq() < seqIndex))
+        } else if
+                ((endv=av.getEndRes()) <= end)
         {
+          setScrollValues(startv+1+end-endv, seqIndex);
+        } else if ((starts=av.getStartSeq()) > seqIndex) {
           setScrollValues(av.getStartRes(), seqIndex);
+        } else if ((ends=av.getEndSeq()) <= seqIndex)
+        {
+          setScrollValues(av.getStartRes(), starts+seqIndex-ends+1);
         }
       }
       else
@@ -483,6 +490,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
    */
   public void setScrollValues(int x, int y)
   {
+//    System.err.println("Scroll to "+x+","+y);
     if (av==null || av.alignment==null)
     {
       return;