JAL-1432 updated copyright notices
[jalview.git] / src / jalview / gui / AnnotationExporter.java
index de6aaa0..9b812af 100755 (executable)
-/*\r
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6)\r
- * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle\r
- * \r
- * This file is part of Jalview.\r
- * \r
- * Jalview is free software: you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License \r
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\r
- * \r
- * Jalview is distributed in the hope that it will be useful, but \r
- * WITHOUT ANY WARRANTY; without even the implied warranty \r
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR \r
- * PURPOSE.  See the GNU General Public License for more details.\r
- * \r
- * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.\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
-\r
-import jalview.datamodel.*;\r
-import jalview.io.*;\r
-\r
-/**\r
- * \r
- * GUI dialog for exporting features or alignment annotations depending upon\r
- * which method is called.\r
- * \r
- * @author AMW\r
- * \r
- */\r
-public class AnnotationExporter extends JPanel\r
-{\r
-  JInternalFrame frame;\r
-\r
-  AlignmentPanel ap;\r
-\r
-  boolean features = true;\r
-\r
-  AlignmentAnnotation[] annotations;\r
-\r
-  Vector sequenceGroups;\r
-\r
-  Hashtable alignmentProperties;\r
-\r
-  public AnnotationExporter()\r
-  {\r
-    try\r
-    {\r
-      jbInit();\r
-    } catch (Exception ex)\r
-    {\r
-      ex.printStackTrace();\r
-    }\r
-\r
-    frame = new JInternalFrame();\r
-    frame.setContentPane(this);\r
-    frame.setLayer(JLayeredPane.PALETTE_LAYER);\r
-    Desktop.addInternalFrame(frame, "", 260, 125);\r
-  }\r
-\r
-  public void exportFeatures(AlignmentPanel ap)\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, 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
-\r
-    chooser.setFileView(new JalviewFileView());\r
-    chooser.setDialogTitle(features ? "Save Features to File"\r
-            : "Save Annotation to File");\r
-    chooser.setToolTipText("Save");\r
-\r
-    int value = chooser.showSaveDialog(this);\r
-\r
-    if (value == JalviewFileChooser.APPROVE_OPTION)\r
-    {\r
-      String text = "No features found on alignment";\r
-      if (features)\r
-      {\r
-        if (GFFFormat.isSelected())\r
-        {\r
-          text = new FeaturesFile().printGFFFormat(ap.av.alignment\r
-                  .getDataset().getSequencesArray(),\r
-                  getDisplayedFeatureCols(), true, ap.av.isShowNpFeats());// ap.av.featuresDisplayed//);\r
-        }\r
-        else\r
-        {\r
-          text = new FeaturesFile().printJalviewFormat(ap.av.alignment\r
-                  .getDataset().getSequencesArray(),\r
-                  getDisplayedFeatureCols(), true, ap.av.isShowNpFeats()); // ap.av.featuresDisplayed);\r
-        }\r
-      }\r
-      else\r
-      {\r
-        if (CSVFormat.isSelected())\r
-        {\r
-          text = new AnnotationFile().printCSVAnnotations(annotations);\r
-        }\r
-        else\r
-        {\r
-          text = new AnnotationFile().printAnnotations(annotations,\r
-                  sequenceGroups, 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
-      } 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
-    {\r
-      if (GFFFormat.isSelected())\r
-      {\r
-        text = new FeaturesFile().printGFFFormat(ap.av.alignment\r
-                .getDataset().getSequencesArray(),\r
-                getDisplayedFeatureCols(), true, ap.av.isShowNpFeats());\r
-      }\r
-      else\r
-      {\r
-        text = new FeaturesFile().printJalviewFormat(ap.av.alignment\r
-                .getDataset().getSequencesArray(),\r
-                getDisplayedFeatureCols(), true, ap.av.isShowNpFeats());\r
-      }\r
-    }\r
-    else if (!features)\r
-    {\r
-      if (CSVFormat.isSelected())\r
-      {\r
-        text = new AnnotationFile().printCSVAnnotations(annotations);\r
-      }\r
-      else\r
-      {\r
-        text = new AnnotationFile().printAnnotations(annotations,\r
-                sequenceGroups, alignmentProperties);\r
-      }\r
-    }\r
-\r
-    CutAndPasteTransfer cap = new CutAndPasteTransfer();\r
-    try\r
-    {\r
-      cap.setText(text);\r
-      Desktop.addInternalFrame(cap, (features ? "Features for - "\r
-              : "Annotations for - ") + ap.alignFrame.getTitle(), 600, 500);\r
-    } catch (OutOfMemoryError oom)\r
-    {\r
-      new OOMWarning("generating "\r
-              + (features ? "Features for - " : "Annotations for - ")\r
-              + ap.alignFrame.getTitle(), oom);\r
-      cap.dispose();\r
-    }\r
-\r
-    close_actionPerformed(null);\r
-  }\r
-\r
-  private Hashtable getDisplayedFeatureCols()\r
-  {\r
-    Hashtable fcols = new Hashtable();\r
-    if (ap.av.featuresDisplayed==null)\r
-    {\r
-      return fcols;\r
-    }\r
-    Enumeration en = ap.av.featuresDisplayed.keys();\r
-    FeatureRenderer fr = ap.seqPanel.seqCanvas.getFeatureRenderer(); // consider\r
-                                                                     // higher\r
-                                                                     // level\r
-                                                                     // method ?\r
-    while (en.hasMoreElements())\r
-    {\r
-      Object col = en.nextElement();\r
-      fcols.put(col, fr.featureColours.get(col));\r
-    }\r
-    return fcols;\r
-  }\r
-\r
-  public void close_actionPerformed(ActionEvent e)\r
-  {\r
-    try\r
-    {\r
-      frame.setClosed(true);\r
-    } catch (java.beans.PropertyVetoException ex)\r
-    {\r
-    }\r
-  }\r
-\r
-  private void jbInit() throws Exception\r
-  {\r
-    this.setLayout(flowLayout1);\r
-    toFile.setText("to File");\r
-    toFile.addActionListener(new ActionListener()\r
-    {\r
-      public void actionPerformed(ActionEvent e)\r
-      {\r
-        toFile_actionPerformed(e);\r
-      }\r
-    });\r
-    toTextbox.setText("to Textbox");\r
-    toTextbox.addActionListener(new ActionListener()\r
-    {\r
-      public void actionPerformed(ActionEvent e)\r
-      {\r
-        toTextbox_actionPerformed(e);\r
-      }\r
-    });\r
-    close.setText("Close");\r
-    close.addActionListener(new ActionListener()\r
-    {\r
-      public void actionPerformed(ActionEvent e)\r
-      {\r
-        close_actionPerformed(e);\r
-      }\r
-    });\r
-    jalviewFormat.setOpaque(false);\r
-    jalviewFormat.setSelected(true);\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.setBorder(BorderFactory.createEtchedBorder());\r
-    jPanel3.setOpaque(false);\r
-    jPanel1.setOpaque(false);\r
-    jPanel1.add(toFile);\r
-    jPanel1.add(toTextbox);\r
-    jPanel1.add(close);\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
-\r
-  JPanel jPanel1 = new JPanel();\r
-\r
-  JButton toFile = new JButton();\r
-\r
-  JButton toTextbox = new JButton();\r
-\r
-  JButton close = new JButton();\r
-\r
-  ButtonGroup buttonGroup = new ButtonGroup();\r
-\r
-  JRadioButton jalviewFormat = new JRadioButton();\r
-\r
-  JRadioButton GFFFormat = new JRadioButton();\r
-\r
-  JRadioButton CSVFormat = new JRadioButton();\r
-\r
-  JLabel jLabel1 = new JLabel();\r
-\r
-  JPanel jPanel3 = new JPanel();\r
-\r
-  FlowLayout flowLayout1 = new FlowLayout();\r
-\r
-}\r
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1)
+ * Copyright (C) 2014 The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
+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.*;
+
+/**
+ * 
+ * GUI dialog for exporting features or alignment annotations depending upon
+ * which method is called.
+ * 
+ * @author AMW
+ * 
+ */
+public class AnnotationExporter extends JPanel
+{
+  JInternalFrame frame;
+
+  AlignmentPanel ap;
+
+  boolean features = true;
+
+  AlignmentAnnotation[] annotations;
+
+  List<SequenceGroup> sequenceGroups;
+
+  Hashtable alignmentProperties;
+
+  public AnnotationExporter()
+  {
+    try
+    {
+      jbInit();
+    } catch (Exception ex)
+    {
+      ex.printStackTrace();
+    }
+
+    frame = new JInternalFrame();
+    frame.setContentPane(this);
+    frame.setLayer(JLayeredPane.PALETTE_LAYER);
+    Desktop.addInternalFrame(frame, "", frame.getPreferredSize().width,
+            frame.getPreferredSize().height);
+  }
+
+  public void exportFeatures(AlignmentPanel ap)
+  {
+    this.ap = ap;
+    features = true;
+    CSVFormat.setVisible(false);
+    frame.setTitle("Export Features");
+  }
+
+  public void exportAnnotations(AlignmentPanel ap,
+          AlignmentAnnotation[] annotations, List<SequenceGroup> list,
+          Hashtable alProperties)
+  {
+    this.ap = ap;
+    features = false;
+    GFFFormat.setVisible(false);
+    CSVFormat.setVisible(true);
+    this.annotations = annotations;
+    this.sequenceGroups = list;
+    this.alignmentProperties = alProperties;
+    frame.setTitle("Export Annotations");
+  }
+
+  public void toFile_actionPerformed(ActionEvent e)
+  {
+    JalviewFileChooser chooser = new JalviewFileChooser(
+            jalview.bin.Cache.getProperty("LAST_DIRECTORY"));
+
+    chooser.setFileView(new JalviewFileView());
+    chooser.setDialogTitle(features ? "Save Features to File"
+            : "Save Annotation to File");
+    chooser.setToolTipText("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(),
+                  getDisplayedFeatureCols(), true, ap.av.isShowNpFeats());// ap.av.featuresDisplayed//);
+        }
+        else
+        {
+          text = new FeaturesFile().printJalviewFormat(ap.av.getAlignment()
+                  .getDataset().getSequencesArray(),
+                  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);
+        }
+      }
+
+      try
+      {
+        java.io.PrintWriter out = new java.io.PrintWriter(
+                new java.io.FileWriter(chooser.getSelectedFile()));
+
+        out.print(text);
+        out.close();
+      } catch (Exception ex)
+      {
+        ex.printStackTrace();
+      }
+    }
+
+    close_actionPerformed(null);
+  }
+
+  public void toTextbox_actionPerformed(ActionEvent e)
+  {
+    String text = "No features found on alignment";
+    if (features)
+    {
+      if (GFFFormat.isSelected())
+      {
+        text = new FeaturesFile().printGFFFormat(ap.av.getAlignment()
+                .getDataset().getSequencesArray(),
+                getDisplayedFeatureCols(), true, ap.av.isShowNpFeats());
+      }
+      else
+      {
+        text = new FeaturesFile().printJalviewFormat(ap.av.getAlignment()
+                .getDataset().getSequencesArray(),
+                getDisplayedFeatureCols(), true, ap.av.isShowNpFeats());
+      }
+    }
+    else if (!features)
+    {
+      if (CSVFormat.isSelected())
+      {
+        text = new AnnotationFile().printCSVAnnotations(annotations);
+      }
+      else
+      {
+        text = new AnnotationFile().printAnnotations(annotations,
+                sequenceGroups, alignmentProperties);
+      }
+    }
+
+    CutAndPasteTransfer cap = new CutAndPasteTransfer();
+    try
+    {
+      cap.setText(text);
+      Desktop.addInternalFrame(cap, (features ? "Features for - "
+              : "Annotations for - ") + ap.alignFrame.getTitle(), 600, 500);
+    } catch (OutOfMemoryError oom)
+    {
+      new OOMWarning("generating "
+              + (features ? "Features for - " : "Annotations for - ")
+              + ap.alignFrame.getTitle(), oom);
+      cap.dispose();
+    }
+
+    close_actionPerformed(null);
+  }
+
+  private Hashtable getDisplayedFeatureCols()
+  {
+    Hashtable fcols = new Hashtable();
+    if (ap.av.featuresDisplayed == null)
+    {
+      return fcols;
+    }
+    Enumeration en = ap.av.featuresDisplayed.keys();
+    FeatureRenderer fr = ap.seqPanel.seqCanvas.getFeatureRenderer(); // consider
+                                                                     // higher
+                                                                     // level
+                                                                     // method ?
+    while (en.hasMoreElements())
+    {
+      Object col = en.nextElement();
+      fcols.put(col, fr.featureColours.get(col));
+    }
+    return fcols;
+  }
+
+  public void close_actionPerformed(ActionEvent e)
+  {
+    try
+    {
+      frame.setClosed(true);
+    } catch (java.beans.PropertyVetoException ex)
+    {
+    }
+  }
+
+  private void jbInit() throws Exception
+  {
+    this.setLayout(new BorderLayout());
+
+    toFile.setText("to File");
+    toFile.addActionListener(new ActionListener()
+    {
+      public void actionPerformed(ActionEvent e)
+      {
+        toFile_actionPerformed(e);
+      }
+    });
+    toTextbox.setText("to Textbox");
+    toTextbox.addActionListener(new ActionListener()
+    {
+      public void actionPerformed(ActionEvent e)
+      {
+        toTextbox_actionPerformed(e);
+      }
+    });
+    close.setText("Close");
+    close.addActionListener(new ActionListener()
+    {
+      public void actionPerformed(ActionEvent e)
+      {
+        close_actionPerformed(e);
+      }
+    });
+    jalviewFormat.setOpaque(false);
+    jalviewFormat.setSelected(true);
+    jalviewFormat.setText("Jalview");
+    GFFFormat.setOpaque(false);
+    GFFFormat.setText("GFF");
+    CSVFormat.setOpaque(false);
+    CSVFormat.setText("CSV(Spreadsheet)");
+    jLabel1.setHorizontalAlignment(SwingConstants.TRAILING);
+    jLabel1.setText("Format: ");
+    this.setBackground(Color.white);
+    jPanel3.setBorder(BorderFactory.createEtchedBorder());
+    jPanel3.setOpaque(false);
+    jPanel1.setOpaque(false);
+    jPanel1.add(toFile);
+    jPanel1.add(toTextbox);
+    jPanel1.add(close);
+    jPanel3.add(jLabel1);
+    jPanel3.add(jalviewFormat);
+    jPanel3.add(GFFFormat);
+    jPanel3.add(CSVFormat);
+    buttonGroup.add(jalviewFormat);
+    buttonGroup.add(GFFFormat);
+    buttonGroup.add(CSVFormat);
+    this.add(jPanel3, BorderLayout.CENTER);
+    this.add(jPanel1, BorderLayout.SOUTH);
+  }
+
+  JPanel jPanel1 = new JPanel();
+
+  JButton toFile = new JButton();
+
+  JButton toTextbox = new JButton();
+
+  JButton close = new JButton();
+
+  ButtonGroup buttonGroup = new ButtonGroup();
+
+  JRadioButton jalviewFormat = new JRadioButton();
+
+  JRadioButton GFFFormat = new JRadioButton();
+
+  JRadioButton CSVFormat = new JRadioButton();
+
+  JLabel jLabel1 = new JLabel();
+
+  JPanel jPanel3 = new JPanel();
+
+  FlowLayout flowLayout1 = new FlowLayout();
+
+}