X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=01353d893f56dfd4803356249fd9db4fff83586d;hb=a23cc416cd520ac6dec6052591575b264f5d25bc;hp=cd9c5337c23744694350cacc5292b7ca24791f4e;hpb=2a9991ef1eb02d97e9c8ed1644f292117ae6f600;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index cd9c533..01353d8 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -20,52 +20,6 @@ */ package jalview.gui; -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.Rectangle; -import java.awt.Toolkit; -import java.awt.datatransfer.Clipboard; -import java.awt.datatransfer.DataFlavor; -import java.awt.datatransfer.StringSelection; -import java.awt.datatransfer.Transferable; -import java.awt.dnd.DnDConstants; -import java.awt.dnd.DropTargetDragEvent; -import java.awt.dnd.DropTargetDropEvent; -import java.awt.dnd.DropTargetEvent; -import java.awt.dnd.DropTargetListener; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.awt.event.KeyAdapter; -import java.awt.event.KeyEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.awt.print.PageFormat; -import java.awt.print.PrinterJob; -import java.beans.PropertyChangeEvent; -import java.io.File; -import java.net.URL; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Deque; -import java.util.Enumeration; -import java.util.Hashtable; -import java.util.List; -import java.util.Set; -import java.util.Vector; - -import javax.swing.JCheckBoxMenuItem; -import javax.swing.JEditorPane; -import javax.swing.JInternalFrame; -import javax.swing.JLayeredPane; -import javax.swing.JMenu; -import javax.swing.JMenuItem; -import javax.swing.JOptionPane; -import javax.swing.JRadioButtonMenuItem; -import javax.swing.JScrollPane; -import javax.swing.SwingUtilities; - import jalview.analysis.AAFrequency; import jalview.analysis.AlignmentSorter; import jalview.analysis.AlignmentUtils; @@ -74,6 +28,7 @@ import jalview.analysis.CrossRef; import jalview.analysis.Dna; import jalview.analysis.ParseProperties; import jalview.analysis.SequenceIdMatcher; +import jalview.api.AlignExportSettingI; import jalview.api.AlignViewControllerGuiI; import jalview.api.AlignViewControllerI; import jalview.api.AlignViewportI; @@ -144,6 +99,52 @@ import jalview.ws.jws2.Jws2Discoverer; import jalview.ws.jws2.jabaws2.Jws2Instance; import jalview.ws.seqfetcher.DbSourceProxy; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Rectangle; +import java.awt.Toolkit; +import java.awt.datatransfer.Clipboard; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.StringSelection; +import java.awt.datatransfer.Transferable; +import java.awt.dnd.DnDConstants; +import java.awt.dnd.DropTargetDragEvent; +import java.awt.dnd.DropTargetDropEvent; +import java.awt.dnd.DropTargetEvent; +import java.awt.dnd.DropTargetListener; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.print.PageFormat; +import java.awt.print.PrinterJob; +import java.beans.PropertyChangeEvent; +import java.io.File; +import java.net.URL; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Deque; +import java.util.Enumeration; +import java.util.Hashtable; +import java.util.List; +import java.util.Set; +import java.util.Vector; + +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JEditorPane; +import javax.swing.JInternalFrame; +import javax.swing.JLayeredPane; +import javax.swing.JMenu; +import javax.swing.JMenuItem; +import javax.swing.JOptionPane; +import javax.swing.JRadioButtonMenuItem; +import javax.swing.JScrollPane; +import javax.swing.SwingUtilities; + /** * DOCUMENT ME! * @@ -305,7 +306,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (hiddenSeqs != null && hiddenSeqs.length > 0) { viewport.hideSequence(hiddenSeqs); - viewport.setHasHiddenRows(true); } alignPanel = new AlignmentPanel(this, viewport); addAlignmentPanel(alignPanel, true); @@ -1140,8 +1140,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, return false; } - ExportData exportData = getAlignmentForExport(); - FormatAdapter f = new FormatAdapter(viewport); + ExportData exportData = getAlignmentForExport(format); + FormatAdapter f = new FormatAdapter(alignPanel); String output = f.formatSequences(format, exportData.getAlignment(), // class cast exceptions will // occur in the distant future @@ -1213,13 +1213,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, protected void outputText_actionPerformed(ActionEvent e) { - ExportData exportData = getAlignmentForExport(); + ExportData exportData = getAlignmentForExport(e.getActionCommand()); + if (exportData.getSettings().isCancelled()) + { + return; + } CutAndPasteTransfer cap = new CutAndPasteTransfer(); cap.setForInput(null); - try { - cap.setText(new FormatAdapter(viewport).formatSequences( + cap.setText(new FormatAdapter(alignPanel, exportData.getSettings()) + .formatSequences( e.getActionCommand(), exportData.getAlignment(), exportData.getOmitHidden(), exportData.getStartEndPostions(), @@ -1235,13 +1239,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } - public ExportData getAlignmentForExport() + public ExportData getAlignmentForExport(String exportFomat) { AlignmentI alignmentToExport = null; String[] omitHidden = null; int[] alignmentStartEnd = new int[2]; - FeatureRenderer fr = new FeatureRenderer(this.alignPanel); - viewport.setFeatureRenderer(fr); + HiddenSequences hiddenSeqs = viewport.getAlignment() .getHiddenSequences(); @@ -1250,36 +1253,28 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, alignmentStartEnd = new int[] { 0, alignmentToExport.getWidth() - 1 }; - if (viewport.hasHiddenColumns() || hiddenSeqs.getSize() > 0) - { - int reply = JOptionPane - .showInternalConfirmDialog( - Desktop.desktop, - MessageManager - .getString("label.alignment_contains_hidden_columns"), - MessageManager - .getString("action.save_omit_hidden_columns"), - JOptionPane.YES_NO_OPTION, - JOptionPane.QUESTION_MESSAGE); + boolean hasHiddenSeqs = hiddenSeqs.getSize() > 0; + AlignExportSettingI settings = new AlignExportSettings(hasHiddenSeqs, + viewport.hasHiddenColumns(), exportFomat); + settings.isExportAnnotations(); - if (reply == JOptionPane.YES_OPTION) - { - // export only visible region - omitHidden = viewport.getViewAsString(false); - alignmentToExport = viewport.getAlignment(); - alignmentStartEnd = getStartEnd(alignmentStartEnd, viewport - .getColumnSelection().getHiddenColumns()); - viewport.setIncludeHiddenRegion(false); - } - else - { - // export all region including visible - alignmentToExport = hiddenSeqs.getFullAlignment(); - viewport.setIncludeHiddenRegion(true); - } + if (viewport.hasHiddenColumns() && !settings.isExportHiddenColumns()) + { + omitHidden = viewport.getViewAsString(false); } - return new ExportData(alignmentToExport, omitHidden, alignmentStartEnd); + if (hasHiddenSeqs && settings.isExportHiddenSequences()) + { + alignmentToExport = hiddenSeqs.getFullAlignment(); + } + else + { + alignmentToExport = viewport.getAlignment(); + alignmentStartEnd = getStartEnd(alignmentStartEnd, viewport + .getColumnSelection().getHiddenColumns()); + } + return new ExportData(alignmentToExport, omitHidden, alignmentStartEnd, + settings); } private static int[] getStartEnd(int[] aligmentStartEnd, @@ -1352,17 +1347,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override protected void htmlMenuItem_actionPerformed(ActionEvent e) { - // new HTMLOutput(alignPanel, - // alignPanel.getSeqPanel().seqCanvas.getSequenceRenderer(), - // alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer()); new HtmlSvgOutput(null, alignPanel); } @Override public void bioJSMenuItem_actionPerformed(ActionEvent e) { - BioJsHTMLOutput bjs = new BioJsHTMLOutput(alignPanel, - alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer()); + BioJsHTMLOutput bjs = new BioJsHTMLOutput(alignPanel); bjs.exportJalviewAlignmentAsBioJsHtmlFile(); } public void createImageMap(File file, String image) @@ -6088,11 +6079,15 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, private int[] startEnd; - public ExportData(AlignmentI align, String[] ommit, int[] startEnd) + private AlignExportSettingI settings; + + public ExportData(AlignmentI align, String[] ommit, int[] startEnd, + AlignExportSettingI settings) { this.alignment = align; this.omitHidden = ommit; this.startEnd = startEnd; + this.settings = settings; } public AlignmentI getAlignment() @@ -6124,6 +6119,16 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { this.startEnd = startEnd; } + + public AlignExportSettingI getSettings() + { + return settings; + } + + public void setSettings(AlignExportSettingI settings) + { + this.settings = settings; + } } }