fixes bug 0013013 but reveals lack of a 'features retrieved' flag that should be...
[jalview.git] / src / jalview / appletgui / AlignFrame.java
index 96dc64b..03c0db9 100755 (executable)
@@ -140,19 +140,30 @@ public class AlignFrame extends Frame implements ActionListener,
 \r
   public void parseFeaturesFile(String file)\r
   {\r
+    String line = null;\r
     try\r
     {\r
-      URL url = new URL(file);\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
-      BufferedReader in =  new BufferedReader(new InputStreamReader(url.openStream()));\r
       SequenceI seq = null;\r
-      String line, type, desc, token;\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
       int lineNo = 0;\r
+      String featureGroup = null;\r
       while ( (line = in.readLine()) != null)\r
       {\r
         lineNo++;\r
@@ -160,8 +171,22 @@ public class AlignFrame extends Frame implements ActionListener,
         if (st.countTokens() == 2)\r
         {\r
           type = st.nextToken();\r
-          UserColourScheme ucs = new UserColourScheme(st.nextToken());\r
-          fr.setColour(type, ucs.findColour("A"));\r
+          if(type.equalsIgnoreCase("startgroup"))\r
+          {\r
+            featureGroup = st.nextToken();\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
+          }\r
+          else\r
+          {\r
+            UserColourScheme ucs = new UserColourScheme(st.nextToken());\r
+            fr.setColour(type, ucs.findColour("A"));\r
+          }\r
           continue;\r
         }\r
 \r
@@ -195,6 +220,7 @@ public class AlignFrame extends Frame implements ActionListener,
           }\r
 \r
           sf = new SequenceFeature(type, desc, "", start, end);\r
+          sf.setFeatureGroup(featureGroup);\r
 \r
           seq.addSequenceFeature(sf);\r
         }\r
@@ -212,7 +238,7 @@ public class AlignFrame extends Frame implements ActionListener,
     catch (Exception ex)\r
     {\r
       ex.printStackTrace();\r
-      System.out.println("Error parsing groups file: " + ex);\r
+      System.out.println("Error parsing groups file: " + ex +"\n"+line);\r
     }\r
   }\r
 \r