Add jvsuffix and dbref to menu
[jalview.git] / src / jalview / appletgui / AlignFrame.java
index b632442..6e2d32b 100755 (executable)
@@ -29,7 +29,7 @@ import java.awt.event.*;
 import java.util.*;\r
 import java.io.InputStreamReader;\r
 import java.io.BufferedReader;\r
-import java.io.FileReader;\r
+import java.net.URL;\r
 \r
 public class AlignFrame\r
     extends GAlignFrame\r
@@ -147,33 +147,36 @@ public class AlignFrame
    * @param String DOCUMENT ME!\r
    */\r
 \r
-  public void parseGroupsFile(String file)\r
+  public void parseFeaturesFile(String file)\r
   {\r
     try\r
     {\r
-      BufferedReader in = new BufferedReader(new FileReader(file));\r
+      URL url = new URL(file);\r
+\r
+      BufferedReader in =  new BufferedReader(new InputStreamReader(url.openStream()));\r
       SequenceI seq = null;\r
-      String line, text, token;\r
-      UserColourScheme ucs;\r
+      String line, type, desc, token;\r
+\r
       int index, start, end;\r
       StringTokenizer st;\r
-      SequenceGroup sg;\r
+      SequenceFeature sf;\r
+      FeatureRenderer fr = alignPanel.seqPanel.seqCanvas.getFeatureRenderer();\r
       int lineNo = 0;\r
       while ( (line = in.readLine()) != null)\r
       {\r
         lineNo++;\r
         st = new StringTokenizer(line, "\t");\r
-        if (st.countTokens() != 6)\r
+        if (st.countTokens() == 2)\r
         {\r
-          System.out.println("Groups file " + file +\r
-                             " is invalid. Read help file.\nLine: \n"\r
-              +lineNo +": "+line);\r
-          break;\r
+          type = st.nextToken();\r
+          UserColourScheme ucs = new UserColourScheme(st.nextToken());\r
+          fr.setColour(type, ucs.findColour("A"));\r
+          continue;\r
         }\r
 \r
         while (st.hasMoreElements())\r
         {\r
-          text = st.nextToken();\r
+          desc = st.nextToken();\r
           token = st.nextToken();\r
           if (!token.equals("ID_NOT_SPECIFIED"))\r
           {\r
@@ -188,20 +191,29 @@ public class AlignFrame
 \r
           start = Integer.parseInt(st.nextToken());\r
           end = Integer.parseInt(st.nextToken());\r
-          ucs = new UserColourScheme(st.nextToken());\r
 \r
           seq = viewport.alignment.getSequenceAt(index);\r
           start = seq.findIndex(start) - 1;\r
           end = seq.findIndex(end) - 1;\r
 \r
-          sg = new SequenceGroup(text, ucs, true, true, false, start, end);\r
-          sg.addSequence(seq, false);\r
+          type = st.nextToken();\r
 \r
-          viewport.alignment.addGroup(sg);\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);\r
+\r
+          seq.addSequenceFeature(sf);\r
         }\r
       }\r
 \r
+      viewport.showSequenceFeatures = true;\r
+      ((Alignment)viewport.alignment).featuresAdded = true;\r
+\r
       alignPanel.repaint();\r
 \r
     }\r
@@ -229,8 +241,9 @@ public class AlignFrame
                                      "Alignment output - " + e.getActionCommand(),\r
                                      600, 500);\r
     cap.setText(new AppletFormatAdapter().formatSequences(e.getActionCommand(),\r
-                                              viewport.getAlignment().\r
-                                              getSequences()));\r
+                                              viewport.getAlignment().getSequences(),\r
+                                                      viewport.showDBPrefix,\r
+                                                      viewport.showJVSuffix));\r
   }\r
 \r
   public void closeMenuItem_actionPerformed(ActionEvent e)\r
@@ -851,13 +864,21 @@ public class AlignFrame
     new FontChooser(alignPanel);\r
   }\r
 \r
-  protected void fullSeqId_actionPerformed(ActionEvent e)\r
+  public void dbref_actionPerformed(ItemEvent e)\r
+  {\r
+    viewport.showDBPrefix = dbref.getState();\r
+    alignPanel.fontChanged();\r
+    alignPanel.repaint();\r
+  }\r
+\r
+  public void seqLimits_itemStateChanged(ItemEvent e)\r
   {\r
-    viewport.setShowFullId(fullSeqId.getState());\r
+    viewport.setShowJVSuffix(seqLimits.getState());\r
     alignPanel.fontChanged();\r
     alignPanel.repaint();\r
   }\r
 \r
+\r
   protected void colourTextMenuItem_actionPerformed(ActionEvent e)\r
   {\r
     viewport.setColourText(colourTextMenuItem.getState());\r
@@ -1348,7 +1369,7 @@ public class AlignFrame
 \r
   protected void documentation_actionPerformed(ActionEvent e)\r
   {\r
-    jalview.bin.JalviewLite.showURL("http://www.jalview.org/help.html");\r
+    showURL("http://www.jalview.org/help.html");\r
   }\r
 \r
   protected void about_actionPerformed(ActionEvent e)\r
@@ -1415,4 +1436,36 @@ public class AlignFrame
     jalview.bin.JalviewLite.addFrame(frame, "Jalview", 580, 200);\r
 \r
   }\r
+\r
+  /**\r
+   * Displays the given URL in a new browser window\r
+   *\r
+   * @param url URL to display in browser window.\r
+   * <br>New window will be named "HELP_WINDOW"\r
+   */\r
+  public void showURL(String url)\r
+  {\r
+    showURL(url, "HELP");\r
+  }\r
+\r
+  public void showURL(String url, String target)\r
+  {\r
+    if (applet == null)\r
+    {\r
+      System.out.println("Not running as applet - no browser available.");\r
+    }\r
+    else\r
+    {\r
+      try\r
+      {\r
+        applet.getAppletContext().showDocument(new java.net.URL(url),\r
+                                               target);\r
+      }\r
+      catch (Exception ex)\r
+      {\r
+        ex.printStackTrace();\r
+      }\r
+    }\r
+  }\r
+\r
 }\r