X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAnnotationExporter.java;h=0d47e36bdd5c71d1dec26f62d42113a650ee363c;hb=37de9310bec3501cbc6381e0c3dcb282fcaad812;hp=61c5ee13114b4a0b9de4d00e34a8dd60945d10f7;hpb=72b3f05a1157da32ada5aea139139996dddea219;p=jalview.git diff --git a/src/jalview/gui/AnnotationExporter.java b/src/jalview/gui/AnnotationExporter.java index 61c5ee1..0d47e36 100644 --- a/src/jalview/gui/AnnotationExporter.java +++ b/src/jalview/gui/AnnotationExporter.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2) - * Copyright (C) 2014 The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * @@ -20,17 +20,32 @@ */ package jalview.gui; -import java.util.*; -import java.util.List; - -import java.awt.*; -import java.awt.event.*; -import javax.swing.*; - -import jalview.datamodel.*; -import jalview.io.*; +import jalview.api.FeatureColourI; +import jalview.datamodel.AlignmentAnnotation; +import jalview.datamodel.SequenceI; +import jalview.io.AnnotationFile; +import jalview.io.FeaturesFile; +import jalview.io.JalviewFileChooser; +import jalview.io.JalviewFileView; import jalview.util.MessageManager; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.FlowLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.Map; + +import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; +import javax.swing.JButton; +import javax.swing.JInternalFrame; +import javax.swing.JLabel; +import javax.swing.JLayeredPane; +import javax.swing.JPanel; +import javax.swing.JRadioButton; +import javax.swing.SwingConstants; + /** * * GUI dialog for exporting features or alignment annotations depending upon @@ -47,11 +62,9 @@ public class AnnotationExporter extends JPanel boolean features = true; - AlignmentAnnotation[] annotations; + private AlignmentAnnotation[] annotations; - List sequenceGroups; - - Hashtable alignmentProperties; + private boolean wholeView; public AnnotationExporter() { @@ -75,21 +88,33 @@ public class AnnotationExporter extends JPanel this.ap = ap; features = true; CSVFormat.setVisible(false); - frame.setTitle("Export Features"); + frame.setTitle(MessageManager.getString("label.export_features")); } - public void exportAnnotations(AlignmentPanel ap, - AlignmentAnnotation[] annotations, List list, - Hashtable alProperties) + public void exportAnnotations(AlignmentPanel ap) { this.ap = ap; + annotations = ap.av.isShowAnnotation() ? null : ap.av.getAlignment() + .getAlignmentAnnotation(); + wholeView = true; + startExportAnnotation(); + } + + public void exportAnnotations(AlignmentPanel alp, + AlignmentAnnotation[] toExport) + { + ap = alp; + annotations = toExport; + wholeView = false; + startExportAnnotation(); + } + + private void startExportAnnotation() + { features = false; GFFFormat.setVisible(false); CSVFormat.setVisible(true); - this.annotations = annotations; - this.sequenceGroups = list; - this.alignmentProperties = alProperties; - frame.setTitle("Export Annotations"); + frame.setTitle(MessageManager.getString("label.export_annotations")); } public void toFile_actionPerformed(ActionEvent e) @@ -98,44 +123,16 @@ public class AnnotationExporter extends JPanel jalview.bin.Cache.getProperty("LAST_DIRECTORY")); chooser.setFileView(new JalviewFileView()); - chooser.setDialogTitle(features ? "Save Features to File" - : "Save Annotation to File"); + chooser.setDialogTitle(features ? MessageManager + .getString("label.save_features_to_file") : MessageManager + .getString("label.save_annotation_to_file")); chooser.setToolTipText(MessageManager.getString("action.save")); int value = chooser.showSaveDialog(this); if (value == JalviewFileChooser.APPROVE_OPTION) { - String text = "No features found on alignment"; - if (features) - { - if (GFFFormat.isSelected()) - { - text = new FeaturesFile().printGFFFormat(ap.av.getAlignment() - .getDataset().getSequencesArray(), ap - .getFeatureRenderer().getDisplayedFeatureCols(), true, - ap.av.isShowNpFeats());// ap.av.featuresDisplayed//); - } - else - { - text = new FeaturesFile().printJalviewFormat(ap.av.getAlignment() - .getDataset().getSequencesArray(), ap - .getFeatureRenderer().getDisplayedFeatureCols(), true, - ap.av.isShowNpFeats()); // ap.av.featuresDisplayed); - } - } - else - { - if (CSVFormat.isSelected()) - { - text = new AnnotationFile().printCSVAnnotations(annotations); - } - else - { - text = new AnnotationFile().printAnnotations(annotations, - sequenceGroups, alignmentProperties); - } - } + String text = getFileContents(); try { @@ -153,25 +150,37 @@ public class AnnotationExporter extends JPanel close_actionPerformed(null); } - public void toTextbox_actionPerformed(ActionEvent e) + private String getFileContents() { - String text = "No features found on alignment"; + String text = MessageManager + .getString("label.no_features_on_alignment"); if (features) { + Map displayedFeatureColours = ap + .getFeatureRenderer().getDisplayedFeatureCols(); + FeaturesFile formatter = new FeaturesFile(); + SequenceI[] sequences = ap.av.getAlignment().getSequencesArray(); + Map featureColours = ap.getFeatureRenderer() + .getDisplayedFeatureCols(); + boolean includeNonPositional = ap.av.isShowNPFeats(); if (GFFFormat.isSelected()) { - text = new FeaturesFile().printGFFFormat(ap.av.getAlignment() - .getDataset().getSequencesArray(), ap.getFeatureRenderer() - .getDisplayedFeatureCols(), true, ap.av.isShowNpFeats()); + text = new FeaturesFile().printGffFormat(ap.av.getAlignment() + .getDataset().getSequencesArray(), displayedFeatureColours, + true, ap.av.isShowNPFeats()); + text = formatter.printGffFormat(sequences, featureColours, true, + includeNonPositional); } else { text = new FeaturesFile().printJalviewFormat(ap.av.getAlignment() - .getDataset().getSequencesArray(), ap.getFeatureRenderer() - .getDisplayedFeatureCols(), true, ap.av.isShowNpFeats()); + .getDataset().getSequencesArray(), displayedFeatureColours, + true, ap.av.isShowNPFeats()); // ap.av.featuresDisplayed); + text = formatter.printJalviewFormat(sequences, featureColours, + true, includeNonPositional); } } - else if (!features) + else { if (CSVFormat.isSelected()) { @@ -179,30 +188,45 @@ public class AnnotationExporter extends JPanel } else { - text = new AnnotationFile().printAnnotations(annotations, - sequenceGroups, alignmentProperties); + if (wholeView) + { + text = new AnnotationFile().printAnnotationsForView(ap.av); + } + else + { + text = new AnnotationFile().printAnnotations(annotations, null, + null); + } } } + return text; + } + public void toTextbox_actionPerformed(ActionEvent e) + { CutAndPasteTransfer cap = new CutAndPasteTransfer(); + try { + String text = getFileContents(); cap.setText(text); Desktop.addInternalFrame( cap, (features ? MessageManager.formatMessage( - "label.features_for_params", new String[] - { ap.alignFrame.getTitle() }) : MessageManager - .formatMessage("label.annotations_for_params", - new String[] - { ap.alignFrame.getTitle() })), 600, 500); + "label.features_for_params", + new String[] { ap.alignFrame.getTitle() }) + : MessageManager.formatMessage( + "label.annotations_for_params", + new String[] { ap.alignFrame.getTitle() })), + 600, 500); } catch (OutOfMemoryError oom) { new OOMWarning((features ? MessageManager.formatMessage( - "label.generating_features_for_params", new String[] - { ap.alignFrame.getTitle() }) : MessageManager.formatMessage( - "label.generating_annotations_for_params", new String[] - { ap.alignFrame.getTitle() })), oom); + "label.generating_features_for_params", + new String[] { ap.alignFrame.getTitle() }) + : MessageManager.formatMessage( + "label.generating_annotations_for_params", + new String[] { ap.alignFrame.getTitle() })), oom); cap.dispose(); } @@ -226,6 +250,7 @@ public class AnnotationExporter extends JPanel toFile.setText(MessageManager.getString("label.to_file")); toFile.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { toFile_actionPerformed(e); @@ -234,6 +259,7 @@ public class AnnotationExporter extends JPanel toTextbox.setText(MessageManager.getString("label.to_textbox")); toTextbox.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { toTextbox_actionPerformed(e); @@ -242,6 +268,7 @@ public class AnnotationExporter extends JPanel close.setText(MessageManager.getString("action.close")); close.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { close_actionPerformed(e); @@ -295,5 +322,4 @@ public class AnnotationExporter extends JPanel JPanel jPanel3 = new JPanel(); FlowLayout flowLayout1 = new FlowLayout(); - }