StringTokenizer st;\r
SequenceFeature sf;\r
FeatureRenderer fr = alignPanel.seqPanel.seqCanvas.getFeatureRenderer();\r
- int lineNo = 0;\r
- String featureGroup = null;\r
+ String featureGroup = null, groupLink = null;\r
+ Hashtable typeLink = new Hashtable();\r
+\r
while ( (line = in.readLine()) != null)\r
{\r
- lineNo++;\r
st = new StringTokenizer(line, "\t");\r
- if (st.countTokens() == 2)\r
+ if(!st.hasMoreTokens())\r
+ continue;\r
+\r
+ if (st.countTokens() < 4)\r
{\r
type = st.nextToken();\r
if(type.equalsIgnoreCase("startgroup"))\r
{\r
featureGroup = st.nextToken();\r
+ if (st.hasMoreElements())\r
+ {\r
+ groupLink = st.nextToken();\r
+ fr.addFeatureLink(featureGroup, groupLink);\r
+ }\r
}\r
else if(type.equalsIgnoreCase("endgroup"))\r
{\r
//but at present theres no way of showing more than 1 group\r
st.nextToken();\r
featureGroup = null;\r
+ groupLink = null;\r
}\r
else\r
{\r
UserColourScheme ucs = new UserColourScheme(st.nextToken());\r
fr.setColour(type, ucs.findColour("A"));\r
+ if (st.hasMoreElements())\r
+ {\r
+ String link = st.nextToken();\r
+ typeLink.put(type, link);\r
+ fr.addFeatureLink(type, link);\r
+ }\r
+\r
}\r
continue;\r
}\r
while (st.hasMoreElements())\r
{\r
desc = st.nextToken();\r
+\r
token = st.nextToken();\r
if (!token.equals("ID_NOT_SPECIFIED"))\r
{\r
fr.setColour(type, ucs.findColour("A"));\r
}\r
\r
- sf = new SequenceFeature(type, desc, "", start, end, featureGroup);\r
-\r
+ sf = new SequenceFeature(type, desc, start, end, 0f, featureGroup);\r
seq.addSequenceFeature(sf);\r
+\r
+ if(groupLink!=null)\r
+ {\r
+ sf.addLink(groupLink);\r
+ sf.description += "%LINK%";\r
+ }\r
+ if(typeLink.containsKey(type))\r
+ {\r
+ sf.addLink(typeLink.get(type).toString());\r
+ sf.description += "%LINK%";\r
+ }\r
+\r
+ parseDescriptionHTML(sf);\r
}\r
}\r
\r
}\r
}\r
\r
+ void parseDescriptionHTML(SequenceFeature sf)\r
+ {\r
+ StringBuffer sb = new StringBuffer();\r
+ StringTokenizer st = new StringTokenizer(sf.getDescription(), "<");\r
+ String token, link;\r
+ while(st.hasMoreElements())\r
+ {\r
+ token = st.nextToken("<>");\r
+ if(token.equalsIgnoreCase("html") || token.startsWith("/"))\r
+ continue;\r
+\r
+ if(token.startsWith("a href="))\r
+ {\r
+ link = token.substring(token.indexOf("\"")+1, token.length()-1);\r
+ String label = st.nextToken("<>");\r
+ sf.addLink(label+"|"+link);\r
+ sb.append(label+"%LINK%");\r
+ }\r
+ else if(token.equalsIgnoreCase("br"))\r
+ sb.append("\n");\r
+ else\r
+ sb.append(token);\r
+ }\r
+\r
+ sf.description = sb.toString();\r
+ }\r
+\r
public void keyPressed(KeyEvent evt)\r
{\r
if (viewport.cursorMode\r