+ try\r
+ {\r
+ BufferedReader in = new BufferedReader(new FileReader(file));\r
+ SequenceI seq = null;\r
+ String line, type, desc, token;\r
+\r
+ int index, start, end;\r
+ StringTokenizer st;\r
+ SequenceFeature sf;\r
+ int lineNo = 0;\r
+ while ( (line = in.readLine()) != null)\r
+ {\r
+ lineNo++;\r
+ st = new StringTokenizer(line, "\t");\r
+ if (st.countTokens() == 2)\r
+ {\r
+ type = st.nextToken();\r
+ UserColourScheme ucs = new UserColourScheme(st.nextToken());\r
+ alignPanel.seqPanel.seqCanvas.getFeatureRenderer().setColour(type, ucs.findColour("A"));\r
+ continue;\r
+ }\r
+\r
+ while (st.hasMoreElements())\r
+ {\r
+ desc = st.nextToken();\r
+ token = st.nextToken();\r
+ if (!token.equals("ID_NOT_SPECIFIED"))\r
+ {\r
+ index = viewport.alignment.findIndex(viewport.alignment.findName(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
+ start = seq.findIndex(start) - 1;\r
+ end = seq.findIndex(end) - 1;\r
+\r
+ type = st.nextToken();\r
+\r
+ if (alignPanel.seqPanel.seqCanvas.getFeatureRenderer().getColour(type) == null)\r
+ {\r
+ // Probably the old style groups file\r
+ UserColourScheme ucs = new UserColourScheme(type);\r
+ alignPanel.seqPanel.seqCanvas.getFeatureRenderer().setColour(type, ucs.findColour("A"));\r
+ }\r
+\r
+ sf = new SequenceFeature(type, desc, "", start, end);\r
+\r
+ seq.getDatasetSequence().addSequenceFeature(sf);\r
+ }\r
+ }\r
+ }\r
+ catch (Exception ex)\r
+ {\r
+ System.out.println("Error parsing groups file: " + ex);\r
+ return false;\r
+ }\r