/*\r
* Jalview - A Sequence Alignment Editor and Viewer\r
- * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
*\r
* This program is free software; you can redistribute it and/or\r
* modify it under the terms of the GNU General Public License\r
\r
package jalview.gui;\r
\r
+import java.util.*;\r
+\r
+import java.awt.*;\r
+import java.awt.event.*;\r
import javax.swing.*;\r
-import java.awt.event.ActionListener;\r
-import java.awt.event.ActionEvent;\r
\r
+import jalview.datamodel.*;\r
import jalview.io.*;\r
-import jalview.datamodel.AlignmentAnnotation;\r
-\r
-import java.awt.Color;\r
-import java.awt.FlowLayout;\r
-import java.util.Vector;\r
-import javax.swing.BorderFactory;\r
-\r
\r
+/**\r
+ * \r
+ * GUI dialog for exporting features or alignment annotations depending upon which method is called.\r
+ * \r
+ * @author AMW\r
+ *\r
+ */\r
public class AnnotationExporter\r
extends JPanel\r
{\r
JInternalFrame frame;\r
AlignmentPanel ap;\r
boolean features = true;\r
- AlignmentAnnotation [] annotations;\r
+ AlignmentAnnotation[] annotations;\r
Vector sequenceGroups;\r
+ Hashtable alignmentProperties;\r
\r
public AnnotationExporter()\r
{\r
{\r
this.ap = ap;\r
features = true;\r
+ CSVFormat.setVisible(false);\r
frame.setTitle("Export Features");\r
}\r
\r
public void exportAnnotations(AlignmentPanel ap,\r
- AlignmentAnnotation [] annotations,\r
- Vector sequenceGroups)\r
+ AlignmentAnnotation[] annotations,\r
+ Vector sequenceGroups,\r
+ Hashtable alProperties)\r
{\r
this.ap = ap;\r
features = false;\r
GFFFormat.setVisible(false);\r
+ CSVFormat.setVisible(true);\r
this.annotations = annotations;\r
this.sequenceGroups = sequenceGroups;\r
+ this.alignmentProperties = alProperties;\r
frame.setTitle("Export Annotations");\r
}\r
\r
public void toFile_actionPerformed(ActionEvent e)\r
{\r
- JalviewFileChooser chooser = new JalviewFileChooser(\r
- jalview.bin.Cache.getProperty( "LAST_DIRECTORY"));\r
+ JalviewFileChooser chooser = new JalviewFileChooser(\r
+ jalview.bin.Cache.getProperty("LAST_DIRECTORY"));\r
\r
- chooser.setFileView(new JalviewFileView());\r
- chooser.setDialogTitle(\r
- features ? "Save Features to File" : "Save Annotation to File");\r
- chooser.setToolTipText("Save");\r
+ chooser.setFileView(new JalviewFileView());\r
+ chooser.setDialogTitle(\r
+ features ? "Save Features to File" : "Save Annotation to File");\r
+ chooser.setToolTipText("Save");\r
\r
- int value = chooser.showSaveDialog(this);\r
+ int value = chooser.showSaveDialog(this);\r
\r
- if (value == JalviewFileChooser.APPROVE_OPTION)\r
+ if (value == JalviewFileChooser.APPROVE_OPTION)\r
+ {\r
+ String text = "No features found on alignment";\r
+ if (features)\r
{\r
- String text = "No features found on alignment";\r
- if (features)\r
+ if (GFFFormat.isSelected())\r
{\r
- if (GFFFormat.isSelected())\r
- text = new FeaturesFile().printGFFFormat(\r
- ap.av.alignment.getDataset().getSequencesArray(),\r
- ap.av.featuresDisplayed);\r
- else\r
- text = new FeaturesFile().printJalviewFormat(\r
- ap.av.alignment.getDataset().getSequencesArray(),\r
- ap.av.featuresDisplayed);\r
+ text = new FeaturesFile().printGFFFormat(\r
+ ap.av.alignment.getDataset().getSequencesArray(),\r
+ ap.av.featuresDisplayed);\r
}\r
else\r
{\r
- text = new AnnotationFile().printAnnotations(\r
- annotations,\r
- sequenceGroups );\r
- }\r
-\r
- try\r
- {\r
- java.io.PrintWriter out = new java.io.PrintWriter(\r
- new java.io.FileWriter(chooser.getSelectedFile()));\r
-\r
- out.print(text);\r
- out.close();\r
+ text = new FeaturesFile().printJalviewFormat(\r
+ ap.av.alignment.getDataset().getSequencesArray(),\r
+ ap.av.featuresDisplayed);\r
}\r
- catch (Exception ex)\r
+ }\r
+ else\r
+ {\r
+ if (CSVFormat.isSelected())\r
{\r
- ex.printStackTrace();\r
+ text = new AnnotationFile().printCSVAnnotations(annotations);\r
+ } else {\r
+ text = new AnnotationFile().printAnnotations(\r
+ annotations,\r
+ sequenceGroups,\r
+ alignmentProperties);\r
}\r
}\r
+\r
+ try\r
+ {\r
+ java.io.PrintWriter out = new java.io.PrintWriter(\r
+ new java.io.FileWriter(chooser.getSelectedFile()));\r
+\r
+ out.print(text);\r
+ out.close();\r
+ }\r
+ catch (Exception ex)\r
+ {\r
+ ex.printStackTrace();\r
+ }\r
+ }\r
+\r
+ close_actionPerformed(null);\r
}\r
\r
public void toTextbox_actionPerformed(ActionEvent e)\r
{\r
String text = "No features found on alignment";\r
- if(features)\r
+ if (features)\r
{\r
if (GFFFormat.isSelected())\r
+ {\r
text = new FeaturesFile().printGFFFormat(\r
ap.av.alignment.getDataset().getSequencesArray(),\r
ap.av.featuresDisplayed);\r
+ }\r
else\r
+ {\r
text = new FeaturesFile().printJalviewFormat(\r
ap.av.alignment.getDataset().getSequencesArray(),\r
- ap.av.featuresDisplayed);\r
+ ap.av.featuresDisplayed);\r
+ }\r
}\r
- else if(!features)\r
+ else if (!features)\r
{\r
- text = new AnnotationFile().printAnnotations(\r
+ if (CSVFormat.isSelected())\r
+ {\r
+ text = new AnnotationFile().printCSVAnnotations(annotations);\r
+ } else {\r
+ text = new AnnotationFile().printAnnotations(\r
annotations,\r
- sequenceGroups );\r
+ sequenceGroups,\r
+ alignmentProperties);\r
+ }\r
}\r
\r
-\r
CutAndPasteTransfer cap = new CutAndPasteTransfer();\r
cap.setText(text);\r
Desktop.addInternalFrame(cap,\r
- (features ? "Features for - " : "Annotations for - ")\r
+ (features ? "Features for - " :\r
+ "Annotations for - ")\r
+ ap.alignFrame.getTitle(),\r
600,\r
500);\r
\r
-\r
+ close_actionPerformed(null);\r
}\r
\r
public void close_actionPerformed(ActionEvent e)\r
{\r
- try{\r
+ try\r
+ {\r
frame.setClosed(true);\r
- }catch(java.beans.PropertyVetoException ex)\r
+ }\r
+ catch (java.beans.PropertyVetoException ex)\r
{}\r
}\r
\r
-\r
-\r
private void jbInit()\r
throws Exception\r
{\r
jalviewFormat.setText("Jalview");\r
GFFFormat.setOpaque(false);\r
GFFFormat.setText("GFF");\r
+ CSVFormat.setOpaque(false);\r
+ CSVFormat.setText("CSV(Spreadsheet)");\r
jLabel1.setHorizontalAlignment(SwingConstants.TRAILING);\r
jLabel1.setText("Format: ");\r
this.setBackground(Color.white);\r
jPanel3.add(jLabel1);\r
jPanel3.add(jalviewFormat);\r
jPanel3.add(GFFFormat);\r
+ jPanel3.add(CSVFormat);\r
buttonGroup.add(jalviewFormat);\r
buttonGroup.add(GFFFormat);\r
+ buttonGroup.add(CSVFormat);\r
this.add(jPanel3, null);\r
this.add(jPanel1, null);\r
}\r
ButtonGroup buttonGroup = new ButtonGroup();\r
JRadioButton jalviewFormat = new JRadioButton();\r
JRadioButton GFFFormat = new JRadioButton();\r
+ JRadioButton CSVFormat = new JRadioButton();\r
JLabel jLabel1 = new JLabel();\r
JPanel jPanel3 = new JPanel();\r
FlowLayout flowLayout1 = new FlowLayout();\r