2 * Jalview - A Sequence Alignment Editor and Viewer
\r
3 * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
\r
5 * This program is free software; you can redistribute it and/or
\r
6 * modify it under the terms of the GNU General Public License
\r
7 * as published by the Free Software Foundation; either version 2
\r
8 * of the License, or (at your option) any later version.
\r
10 * This program is distributed in the hope that it will be useful,
\r
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
13 * GNU General Public License for more details.
\r
15 * You should have received a copy of the GNU General Public License
\r
16 * along with this program; if not, write to the Free Software
\r
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
\r
20 package jalview.gui;
\r
22 import javax.swing.*;
\r
23 import java.awt.event.ActionListener;
\r
24 import java.awt.event.ActionEvent;
\r
26 import jalview.io.*;
\r
27 import jalview.datamodel.AlignmentAnnotation;
\r
29 import java.awt.Color;
\r
30 import java.awt.FlowLayout;
\r
31 import java.util.Vector;
\r
32 import javax.swing.BorderFactory;
\r
35 public class AnnotationExporter
\r
38 JInternalFrame frame;
\r
40 boolean features = true;
\r
41 AlignmentAnnotation [] annotations;
\r
42 Vector sequenceGroups;
\r
44 public AnnotationExporter()
\r
50 catch (Exception ex)
\r
52 ex.printStackTrace();
\r
55 frame = new JInternalFrame();
\r
56 frame.setContentPane(this);
\r
57 frame.setLayer(JLayeredPane.PALETTE_LAYER);
\r
58 Desktop.addInternalFrame(frame,
\r
63 public void exportFeatures(AlignmentPanel ap)
\r
67 frame.setTitle("Export Features");
\r
70 public void exportAnnotations(AlignmentPanel ap,
\r
71 AlignmentAnnotation [] annotations,
\r
72 Vector sequenceGroups)
\r
76 GFFFormat.setVisible(false);
\r
77 this.annotations = annotations;
\r
78 this.sequenceGroups = sequenceGroups;
\r
79 frame.setTitle("Export Annotations");
\r
82 public void toFile_actionPerformed(ActionEvent e)
\r
84 JalviewFileChooser chooser = new JalviewFileChooser(
\r
85 jalview.bin.Cache.getProperty( "LAST_DIRECTORY"));
\r
87 chooser.setFileView(new JalviewFileView());
\r
88 chooser.setDialogTitle(
\r
89 features ? "Save Features to File" : "Save Annotation to File");
\r
90 chooser.setToolTipText("Save");
\r
92 int value = chooser.showSaveDialog(this);
\r
94 if (value == JalviewFileChooser.APPROVE_OPTION)
\r
96 String text = "No features found on alignment";
\r
99 if (GFFFormat.isSelected())
\r
100 text = new FeaturesFile().printGFFFormat(
\r
101 ap.av.alignment.getDataset().getSequencesArray(),
\r
102 ap.av.featuresDisplayed);
\r
104 text = new FeaturesFile().printJalviewFormat(
\r
105 ap.av.alignment.getDataset().getSequencesArray(),
\r
106 ap.av.featuresDisplayed);
\r
110 text = new AnnotationFile().printAnnotations(
\r
117 java.io.PrintWriter out = new java.io.PrintWriter(
\r
118 new java.io.FileWriter(chooser.getSelectedFile()));
\r
123 catch (Exception ex)
\r
125 ex.printStackTrace();
\r
130 public void toTextbox_actionPerformed(ActionEvent e)
\r
132 String text = "No features found on alignment";
\r
135 if (GFFFormat.isSelected())
\r
136 text = new FeaturesFile().printGFFFormat(
\r
137 ap.av.alignment.getDataset().getSequencesArray(),
\r
138 ap.av.featuresDisplayed);
\r
140 text = new FeaturesFile().printJalviewFormat(
\r
141 ap.av.alignment.getDataset().getSequencesArray(),
\r
142 ap.av.featuresDisplayed);
\r
146 text = new AnnotationFile().printAnnotations(
\r
152 CutAndPasteTransfer cap = new CutAndPasteTransfer();
\r
154 Desktop.addInternalFrame(cap,
\r
155 (features ? "Features for - " : "Annotations for - ")
\r
156 + ap.alignFrame.getTitle(),
\r
163 public void close_actionPerformed(ActionEvent e)
\r
166 frame.setClosed(true);
\r
167 }catch(java.beans.PropertyVetoException ex)
\r
173 private void jbInit()
\r
176 this.setLayout(flowLayout1);
\r
177 toFile.setText("to File");
\r
178 toFile.addActionListener(new ActionListener()
\r
180 public void actionPerformed(ActionEvent e)
\r
182 toFile_actionPerformed(e);
\r
185 toTextbox.setText("to Textbox");
\r
186 toTextbox.addActionListener(new ActionListener()
\r
188 public void actionPerformed(ActionEvent e)
\r
190 toTextbox_actionPerformed(e);
\r
193 close.setText("Close");
\r
194 close.addActionListener(new ActionListener()
\r
196 public void actionPerformed(ActionEvent e)
\r
198 close_actionPerformed(e);
\r
201 jalviewFormat.setOpaque(false);
\r
202 jalviewFormat.setSelected(true);
\r
203 jalviewFormat.setText("Jalview");
\r
204 GFFFormat.setOpaque(false);
\r
205 GFFFormat.setText("GFF");
\r
206 jLabel1.setHorizontalAlignment(SwingConstants.TRAILING);
\r
207 jLabel1.setText("Format: ");
\r
208 this.setBackground(Color.white);
\r
209 jPanel3.setBorder(BorderFactory.createEtchedBorder());
\r
210 jPanel3.setOpaque(false);
\r
211 jPanel1.setOpaque(false);
\r
212 jPanel1.add(toFile);
\r
213 jPanel1.add(toTextbox);
\r
214 jPanel1.add(close);
\r
215 jPanel3.add(jLabel1);
\r
216 jPanel3.add(jalviewFormat);
\r
217 jPanel3.add(GFFFormat);
\r
218 buttonGroup.add(jalviewFormat);
\r
219 buttonGroup.add(GFFFormat);
\r
220 this.add(jPanel3, null);
\r
221 this.add(jPanel1, null);
\r
224 JPanel jPanel1 = new JPanel();
\r
225 JButton toFile = new JButton();
\r
226 JButton toTextbox = new JButton();
\r
227 JButton close = new JButton();
\r
228 ButtonGroup buttonGroup = new ButtonGroup();
\r
229 JRadioButton jalviewFormat = new JRadioButton();
\r
230 JRadioButton GFFFormat = new JRadioButton();
\r
231 JLabel jLabel1 = new JLabel();
\r
232 JPanel jPanel3 = new JPanel();
\r
233 FlowLayout flowLayout1 = new FlowLayout();
\r