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
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
\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
*\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
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