while( !found && seqIndex<av.getAlignment().getHeight())\r
{\r
seq = (Sequence)av.getAlignment().getSequenceAt(seqIndex);\r
-\r
if(av.getSelection().size()>0 && !av.getSelection().contains(seq))\r
{\r
// if a selection has been made, only search within that selection\r
\r
item = seq.getSequence();\r
\r
+ ///Shall we ignore gaps????\r
+ StringBuffer noGaps = new StringBuffer();\r
+ int insertCount=0;\r
+ ArrayList spaces = new ArrayList();\r
+\r
+ for (int j=0; j < item.length(); j++)\r
+ {\r
+\r
+ if(!jalview.util.Comparison.isGap(item.charAt(j)))\r
+ {\r
+ noGaps.append(item.charAt(j));\r
+ spaces.add(new Integer(insertCount));\r
+ }\r
+ else\r
+ insertCount++;\r
+ }\r
+\r
+\r
Pattern pattern = Pattern.compile(searchString);\r
- Matcher matcher = pattern.matcher(item);\r
+ Matcher matcher = pattern.matcher(noGaps);\r
\r
- for(int r = resIndex; r<item.length(); r++)\r
+ for(int r = resIndex; r<noGaps.length(); r++)\r
{\r
\r
if( matcher.find( r ) )\r
resIndex = matcher.start();\r
\r
searchResults.add( Integer.toString( seqIndex) );\r
- searchResults.add( Integer.toString( resIndex) );\r
- searchResults.add( Integer.toString( matcher.end()-1 ) );\r
+ searchResults.add( Integer.toString( resIndex+ Integer.parseInt(spaces.get(resIndex).toString()) ) );\r
+ searchResults.add( Integer.toString( matcher.end()-1 + Integer.parseInt(spaces.get(matcher.end()-1).toString()) ) );\r
if(!findAll)\r
{\r
// thats enough, break and display the result\r