diff --git a/uk/ac/sanger/artemis/editor/FastaTextPane.java b/uk/ac/sanger/artemis/editor/FastaTextPane.java
index 3beea64cb7a1339955af7130161b2d2ddcad8fcf..848b53d25c0aebd5ac60b9817c2ac93ca9f92ae5 100644
--- a/uk/ac/sanger/artemis/editor/FastaTextPane.java
+++ b/uk/ac/sanger/artemis/editor/FastaTextPane.java
@@ -61,6 +61,7 @@ public class FastaTextPane extends JScrollPane
protected static int MAX_HITS = 70;
private static boolean remoteMfetch = false;
private static boolean forceUrl = false;
+ private boolean blastPlus = false;
static
{
@@ -159,6 +160,8 @@ public class FastaTextPane extends JScrollPane
if(line.startsWith("BLASTP"))
{
format = "blastp";
+ if(line.indexOf("+") > -1)
+ blastPlus = true;
break;
}
else if(line.indexOf("FASTA") > -1)
@@ -339,25 +342,42 @@ public class FastaTextPane extends JScrollPane
else if(line.startsWith("Query="))
{
int ind2 = 0;
- ind1 = line.indexOf(" letters)");
- if(ind1 == -1)
+ if(blastPlus)
{
- String nextLine = null;
- while((nextLine = buffReader.readLine()).indexOf(" letters)") < 0)
+ ind2 = line.indexOf("Length=");
+ if(ind2 == -1)
{
- len += nextLine.length()+1;
- sbuff.append(nextLine+"\n");
+ while((line = buffReader.readLine()).indexOf("Length=") < 0)
+ {
+ len += line.length()+1;
+ sbuff.append(line+"\n");
+ }
+ ind2 = line.indexOf("Length=");
}
- line = nextLine;
- ind1 = nextLine.indexOf(" letters)");
- ind2 = nextLine.indexOf("(");
+ ind1 = line.length();
+ qlen = Integer.parseInt(line.substring(ind2+7,ind1).trim());
}
else
- ind2 = line.indexOf("(");
+ {
+ ind1 = line.indexOf(" letters)");
+ if(ind1 == -1)
+ {
+ String nextLine = null;
+ while((nextLine = buffReader.readLine()).indexOf(" letters)") < 0)
+ {
+ len += nextLine.length()+1;
+ sbuff.append(nextLine+"\n");
+ }
+ line = nextLine;
+ ind1 = nextLine.indexOf(" letters)");
+ ind2 = nextLine.indexOf("(");
+ }
+ else
+ ind2 = line.indexOf("(");
- qlen = Integer.parseInt(line.substring(ind2+1,ind1).trim());
+ qlen = Integer.parseInt(line.substring(ind2+1,ind1).trim());
+ }
}
-
textPosition += len;
}