Parse HTML links from jalview features file
[jalview.git] / src / jalview / appletgui / AlignFrame.java
index 1ecf254..a68c797 100755 (executable)
@@ -148,106 +148,35 @@ public class AlignFrame extends Frame implements ActionListener,
    * @param String DOCUMENT ME!\r
    */\r
 \r
-  public void parseFeaturesFile(String file)\r
+  public void parseFeaturesFile(String file, String type)\r
   {\r
-    String line = null;\r
-    try\r
+    Hashtable featureLinks = new Hashtable();\r
+    boolean featuresFile = false;\r
+    try{\r
+      featuresFile = new jalview.io.FeaturesFile(file, type).parse(viewport.alignment,\r
+                                         alignPanel.seqPanel.seqCanvas.\r
+                                         getFeatureRenderer().featureColours,\r
+                                         featureLinks,\r
+                                         true);\r
+    }\r
+    catch(Exception ex)\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
-      int lineNo = 0;\r
-      String featureGroup = null;\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
-          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
-        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(\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, featureGroup);\r
-\r
-          seq.addSequenceFeature(sf);\r
-        }\r
-      }\r
+      ex.printStackTrace();\r
+    }\r
 \r
+    if(featuresFile)\r
+    {\r
+      if(featureLinks.size()>0)\r
+        alignPanel.seqPanel.seqCanvas\r
+            .getFeatureRenderer().featureLinks = featureLinks;\r
       viewport.showSequenceFeatures = true;\r
       sequenceFeatures.setState(true);\r
-\r
       alignPanel.repaint();\r
-\r
-    }\r
-    catch (Exception ex)\r
-    {\r
-      ex.printStackTrace();\r
-      System.out.println("Error parsing groups file: " + ex +"\n"+line);\r
     }\r
+\r
   }\r
 \r
+\r
   public void keyPressed(KeyEvent evt)\r
   {\r
     if (viewport.cursorMode\r
@@ -1733,7 +1662,7 @@ public void itemStateChanged(ItemEvent evt)
         g.drawString("If  you use JalView, please cite:", x, y += fh + 8);\r
         g.drawString("\"Clamp, M., Cuff, J., Searle, S. M. and Barton, G. J. (2004), The Jalview Java Alignment Editor\"",\r
                      x, y += fh);\r
-        g.drawString("Bioinformatics,  2004 12;426-7.", x, y += fh);\r
+        g.drawString("Bioinformatics,  2004 20;426-7.", x, y += fh);\r
       }\r
     }\r
 \r