- String line = null;\r
- try\r
- {\r
- BufferedReader in = null;\r
- java.io.InputStream is = getClass().getResourceAsStream("/" + file);\r
- if (is != null)\r
- {\r
- in = new BufferedReader(new java.io.InputStreamReader(is));\r
- }\r
- else\r
- {\r
- URL url = new URL(file);\r
- in = new BufferedReader(new InputStreamReader(url.openStream()));\r
- }\r
-\r
- SequenceI seq = null;\r
- String type, desc, token;\r
-\r
- int index, start, end;\r
- StringTokenizer st;\r
- SequenceFeature sf;\r
- FeatureRenderer fr = alignPanel.seqPanel.seqCanvas.getFeatureRenderer();\r
- String featureGroup = null, groupLink = null;\r
- Hashtable typeLink = new Hashtable();\r
-\r
- while ( (line = in.readLine()) != null)\r
- {\r
- st = new StringTokenizer(line, "\t");\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
- //We should check whether this is the current group,\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
-\r
- while (st.hasMoreElements())\r
- {\r
- desc = st.nextToken();\r
-\r
- token = st.nextToken();\r
- if (!token.equals("ID_NOT_SPECIFIED"))\r
- {\r
- index = viewport.alignment.findIndex(viewport.alignment.findName(\r
- token));\r
- st.nextToken();\r
- }\r
- else\r
- {\r
- index = Integer.parseInt(st.nextToken());\r
- }\r
-\r
- start = Integer.parseInt(st.nextToken());\r
- end = Integer.parseInt(st.nextToken());\r
-\r
- seq = viewport.alignment.getSequenceAt(index);\r
-\r
- type = st.nextToken();\r
-\r
- if(fr.getColour(type)==null)\r
- {\r
- // Probably the old style groups file\r
- UserColourScheme ucs = new UserColourScheme(type);\r
- fr.setColour(type, ucs.findColour("A"));\r
- }\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
- viewport.showSequenceFeatures = true;\r
- sequenceFeatures.setState(true);\r
-\r
- alignPanel.repaint();\r
-\r