new selection manipulation method
[jalview.git] / src / jalview / appletgui / AlignmentPanel.java
index c2bdaf0..874b552 100755 (executable)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4)
- * Copyright (C) 2008 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1)
+ * Copyright (C) 2009 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
  * 
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -228,15 +228,38 @@ public class AlignmentPanel extends Panel implements AdjustmentListener
   public void highlightSearchResults(SearchResults results)
   {
     seqPanel.seqCanvas.highlightSearchResults(results);
-
+  }
+  /**
+   * scroll the view to show the position of the highlighted
+   * region in results (if any)
+   * @param results
+   */
+  public void scrollToPosition(SearchResults results)
+  {
     // do we need to scroll the panel?
-    if (results != null)
+    if (results != null && results.getSize()>0)
     {
-      SequenceI seq = results.getResultSequence(0);
-      int seqIndex = av.alignment.findIndex(seq);
-      int start = seq.findIndex(results.getResultStart(0)) - 1;
-      int end = seq.findIndex(results.getResultEnd(0)) - 1;
-
+      int seqIndex = av.alignment.findIndex(results);
+      if (seqIndex==-1)
+      {
+        return;
+      }
+      SequenceI seq = av.alignment.getSequenceAt(seqIndex);
+      int [] r = results.getResults(seq, seq.getStart(), seq.getEnd());
+      if (r==null)
+      {
+        return;
+      }
+      int start = r[0];
+      int end = r[1];
+      if (start<0)
+      {
+        return;
+      }
+      if (end==seq.getEnd())
+      {
+        return;
+      }
       if (!av.wrapAlignment)
       {
         if ((av.getStartRes() > end)