selection area search bugs fixed
authoramwaterhouse <Andrew Waterhouse>
Wed, 16 Mar 2005 14:51:41 +0000 (14:51 +0000)
committeramwaterhouse <Andrew Waterhouse>
Wed, 16 Mar 2005 14:51:41 +0000 (14:51 +0000)
src/jalview/gui/Finder.java

index 8567451..7483a0a 100755 (executable)
@@ -94,7 +94,7 @@ public class Finder extends GFinder
     String item=null;\r
     boolean found = false;\r
 \r
-    /// is the searchString a residue number?\r
+    ////// is the searchString a residue number?\r
     try{\r
       int res = Integer.parseInt(searchString);\r
       found = true;\r
@@ -109,6 +109,8 @@ public class Finder extends GFinder
       searchResults.add( Integer.toString( seq.findIndex(res)-1 ) );\r
 \r
     }catch(NumberFormatException ex){}\r
+    ///////////////////////////////////////////////\r
+\r
 \r
     jalview.schemes.UserColourScheme ucs = new jalview.schemes.UserColourScheme();\r
     Color [] newColors = new Color[24];\r
@@ -121,30 +123,27 @@ public class Finder extends GFinder
 \r
     int end = av.alignment.getHeight();\r
 \r
-\r
-    SequenceGroup rubberband = av.getSelectionGroup();\r
-    if(rubberband!=null)\r
-      end = rubberband.getEndRes();\r
-\r
-\r
+    SequenceGroup selection = av.getSelectionGroup();\r
+    if(selection!=null)\r
+     if(selection.getSize()<1 || (selection.getEndRes()-selection.getStartRes()<2))\r
+      selection = null;\r
 \r
     while( !found && seqIndex<end)\r
     {\r
-      seq = (Sequence)av.getAlignment().getSequenceAt(seqIndex);\r
+      seq = (Sequence)av.alignment.getSequenceAt(seqIndex);\r
 \r
-      if(   av.getSelectionGroup().getSize()>0 && !av.getSelectionGroup().sequences.contains(seq)\r
-            || (rubberband!=null && !rubberband.sequences.contains(seq))  )\r
+\r
+      if(selection!=null && !selection.sequences.contains(seq))\r
       {\r
-        // if a selection has been made, only search within that selection\r
         seqIndex++;\r
         resIndex=0;\r
         continue;\r
       }\r
 \r
-      item = seq.getSequence();\r
+      item = seq.getSequence().toUpperCase();\r
 \r
-      if(rubberband!=null)\r
-        item = item.substring(0, rubberband.getEndRes()+1);\r
+      if(selection!=null && selection.getEndRes()<av.alignment.getWidth())\r
+          item = item.substring(0, selection.getEndRes()+1);\r
 \r
       ///Shall we ignore gaps????\r
       StringBuffer noGaps = new StringBuffer();\r
@@ -172,9 +171,7 @@ public class Finder extends GFinder
        if( regex.searchFrom( noGaps.toString(), r ) )\r
        {\r
          resIndex = regex.matchedFrom();\r
-\r
-\r
-         if(rubberband!=null && ( resIndex+ Integer.parseInt(spaces.get(resIndex).toString()) )<rubberband.getStartRes())\r
+         if(selection!=null && ( resIndex+ Integer.parseInt(spaces.get(resIndex).toString()) )<selection.getStartRes())\r
            continue;\r
 \r
          searchResults.add( Integer.toString( seqIndex) );\r