Feature and annotation parsing moved to io
authoramwaterhouse <Andrew Waterhouse>
Fri, 9 Jun 2006 16:20:57 +0000 (16:20 +0000)
committeramwaterhouse <Andrew Waterhouse>
Fri, 9 Jun 2006 16:20:57 +0000 (16:20 +0000)
src/jalview/gui/AlignFrame.java

index 7921ed2..a9a694c 100755 (executable)
@@ -224,19 +224,15 @@ public class AlignFrame
   public void saveAlignmentMenu_actionPerformed(ActionEvent e)\r
   {\r
     JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.\r
-        getProperty(\r
-            "LAST_DIRECTORY"),\r
+        getProperty( "LAST_DIRECTORY"),\r
         new String[]\r
-        {\r
-        "fa, fasta, fastq", "aln", "pfam", "msf", "pir", "blc",\r
-        "jar"\r
-    },\r
+        { "fa, fasta, fastq", "aln", "pfam", "msf", "pir", "blc","jar" },\r
         new String[]\r
-        {\r
-        "Fasta", "Clustal", "PFAM", "MSF", "PIR", "BLC", "Jalview"\r
-    }, currentFileFormat);\r
+        { "Fasta", "Clustal", "PFAM", "MSF", "PIR", "BLC", "Jalview" },\r
+        currentFileFormat,\r
+        false);\r
+\r
 \r
-    chooser.setAcceptAllFileFilterUsed(false);\r
     chooser.setFileView(new JalviewFileView());\r
     chooser.setDialogTitle("Save Alignment to file");\r
     chooser.setToolTipText("Save");\r
@@ -377,6 +373,20 @@ public class AlignFrame
     thread.start();\r
   }\r
 \r
+  public void exportFeatures_actionPerformed(ActionEvent e)\r
+  {\r
+    new AnnotationExporter().exportFeatures(alignPanel);\r
+  }\r
+\r
+  public void exportAnnotations_actionPerformed(ActionEvent e)\r
+  {\r
+    new AnnotationExporter().exportAnnotations(\r
+      alignPanel,\r
+      viewport.alignment.getAlignmentAnnotation()\r
+        );\r
+  }\r
+\r
+\r
   public void associatedData_actionPerformed(ActionEvent e)\r
   {\r
     // Pick the tree file\r
@@ -1386,14 +1396,11 @@ public class AlignFrame
 \r
   public void fetchSeqFeatures_actionPerformed(ActionEvent e)\r
   {\r
-    if (!viewport.alignment.isNucleotide())\r
-    {\r
       new DasSequenceFeatureFetcher(viewport.\r
                                     alignment,\r
                                     alignPanel);\r
       viewport.setShowSequenceFeatures(true);\r
       showSeqFeatures.setSelected(true);\r
-    }\r
   }\r
 \r
 \r
@@ -2621,93 +2628,27 @@ public void showTranslation_actionPerformed(ActionEvent e)
  *\r
  * @param String DOCUMENT ME!\r
  */\r
-public boolean parseGroupsFile(String file)\r
+public boolean parseFeaturesFile(String file, String type)\r
 {\r
-    String line = null;\r
-    try\r
-    {\r
-      BufferedReader in = new BufferedReader(new FileReader(file));\r
-      SequenceI seq = null;\r
-      String type, desc, token;\r
-\r
-      int index, start, end;\r
-      StringTokenizer st;\r
-      SequenceFeature sf;\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
-            alignPanel.seqPanel.seqCanvas.getFeatureRenderer().setColour(type,\r
-                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(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 (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, featureGroup);\r
-\r
-          seq.getDatasetSequence().addSequenceFeature(sf);\r
-        }\r
-      }\r
+    boolean featuresFile = false;\r
+    try{\r
+      featuresFile = new FeaturesFile(file, type).parse(viewport.alignment,\r
+                                         alignPanel.seqPanel.seqCanvas.\r
+                                         getFeatureRenderer().featureColours);\r
     }\r
-    catch (Exception ex)\r
+    catch(Exception ex)\r
     {\r
-      System.out.println(line);\r
       ex.printStackTrace();\r
-      System.out.println("Error parsing groups file: " + ex +"\n"+line);\r
-      return false;\r
     }\r
 \r
-    viewport.showSequenceFeatures = true;\r
-    showSeqFeatures.setSelected(true);\r
-    alignPanel.repaint();\r
-    return true;\r
+    if(featuresFile)\r
+    {\r
+      viewport.showSequenceFeatures = true;\r
+      showSeqFeatures.setSelected(true);\r
+      alignPanel.repaint();\r
+    }\r
+\r
+    return featuresFile;\r
 }\r
 \r
 public void dragEnter(DropTargetDragEvent evt)\r
@@ -2788,12 +2729,13 @@ public void drop(DropTargetDropEvent evt)
    public void loadJalviewDataFile(String file)\r
   {\r
     try{\r
-      boolean isAnnotation = new AnnotationReader().readAnnotationFile(viewport.\r
+      boolean isAnnotation = new AnnotationFile().readAnnotationFile(viewport.\r
           alignment, file);\r
 \r
       if (!isAnnotation)\r
       {\r
-        boolean isGroupsFile = parseGroupsFile(file);\r
+        boolean isGroupsFile = parseFeaturesFile(file,\r
+                                                AppletFormatAdapter.FILE);\r
         if (!isGroupsFile)\r
         {\r
           String protocol = "File";\r