X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;fp=src%2Fjalview%2Fgui%2FAlignFrame.java;h=ad2bbc33beceaeeac8c5c17058ad1cd1fa87b03d;hb=4660fcf0745dbc1f6f6e7241b398301f93edb548;hp=553ddd2c6b215c19e94004e2fb710a6ae923b424;hpb=fd9ed8df6a98c86228100aa4e9d6698c87a61c08;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index 553ddd2..ad2bbc3 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -20,6 +20,52 @@ */ 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; @@ -51,6 +97,7 @@ import jalview.datamodel.AlignmentI; import jalview.datamodel.AlignmentOrder; import jalview.datamodel.AlignmentView; import jalview.datamodel.ColumnSelection; +import jalview.datamodel.HiddenSequences; import jalview.datamodel.PDBEntry; import jalview.datamodel.SeqCigar; import jalview.datamodel.Sequence; @@ -97,52 +144,6 @@ 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! * @@ -1120,32 +1121,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, return false; } - String[] omitHidden = null; - - if (viewport.hasHiddenColumns()) - { - 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); - - if (reply == JOptionPane.YES_OPTION) - { - omitHidden = viewport.getViewAsString(false); - } - } - FeatureRenderer fr = new FeatureRenderer(this.alignPanel); - viewport.setFeatureRenderer(fr); + ExportData exportData = getAlignmentForExport(); FormatAdapter f = new FormatAdapter(viewport); String output = f.formatSequences(format, - viewport.getAlignment(), // class cast exceptions will + exportData.getAlignment(), // class cast exceptions will // occur in the distant future - omitHidden, f.getCacheSuffixDefault(format), + exportData.getOmitHidden(), f.getCacheSuffixDefault(format), viewport.getColumnSelection()); if (output == null) @@ -1186,6 +1167,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, return success; } + private void warningMessage(String warning, String title) { if (new jalview.util.Platform().isHeadless()) @@ -1210,10 +1192,38 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override protected void outputText_actionPerformed(ActionEvent e) { + + ExportData exportData = getAlignmentForExport(); + CutAndPasteTransfer cap = new CutAndPasteTransfer(); + cap.setForInput(null); + + try + { + cap.setText(new FormatAdapter(viewport).formatSequences( + e.getActionCommand(), + exportData.getAlignment(), + exportData.getOmitHidden(), + viewport.getColumnSelection())); + Desktop.addInternalFrame(cap, MessageManager.formatMessage( + "label.alignment_output_command", new Object[] + { e.getActionCommand() }), 600, 500); + } catch (OutOfMemoryError oom) + { + new OOMWarning("Outputting alignment as " + e.getActionCommand(), oom); + cap.dispose(); + } + + } + + public ExportData getAlignmentForExport() + { + AlignmentI alignmentToExport = null; String[] omitHidden = null; FeatureRenderer fr = new FeatureRenderer(this.alignPanel); viewport.setFeatureRenderer(fr); - if (viewport.hasHiddenColumns()) + HiddenSequences hiddenSeqs = viewport.getAlignment() + .getHiddenSequences(); + if (viewport.hasHiddenColumns() || hiddenSeqs.getSize() > 0) { int reply = JOptionPane .showInternalConfirmDialog( @@ -1229,26 +1239,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { omitHidden = viewport.getViewAsString(false); } + else + { + alignmentToExport = viewport.getAlignment().getHiddenSequences() + .getFullAlignment(); + } } - - CutAndPasteTransfer cap = new CutAndPasteTransfer(); - cap.setForInput(null); - - try + if (alignmentToExport == null) { - cap.setText(new FormatAdapter(viewport).formatSequences( - e.getActionCommand(), - viewport.getAlignment(), omitHidden, - viewport.getColumnSelection())); - Desktop.addInternalFrame(cap, MessageManager.formatMessage( - "label.alignment_output_command", new Object[] - { e.getActionCommand() }), 600, 500); - } catch (OutOfMemoryError oom) - { - new OOMWarning("Outputting alignment as " + e.getActionCommand(), oom); - cap.dispose(); + alignmentToExport = viewport.getAlignment(); } - + return new ExportData(alignmentToExport, omitHidden); } /** @@ -5993,6 +5994,64 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, sf.setComplementVisible(this, show); } } + + public class ExportData + { + private AlignmentI alignment; + + private String[] omitHidden; + + public ExportData(AlignmentI align, String[] ommit) + { + this.alignment = align; + this.omitHidden = ommit; + System.out.println(); + } + + public AlignmentI getAlignment() + { + return alignment; + } + + public void setAlignment(AlignmentI alignment) + { + this.alignment = alignment; + } + + public String[] getOmitHidden() + { + return omitHidden; + } + + public void setOmitHidden(String[] omitHidden) + { + this.omitHidden = omitHidden; + } + } + + @Override + public void hideColumns(List colsToHide) + { + for (int[] colRange : colsToHide) + { + viewport.hideColumns(colRange[0], colRange[1]); + } + + } + + @Override + public void syncHiddenSequences() + { + AlignmentI al = viewport.getAlignment(); + HiddenSequences hiddenSeqs = al.getHiddenSequences(); + for (SequenceI seq : al.getSequencesArray()) + { + if (seq.isHidden()) + { + hiddenSeqs.hideSequence(seq); + } + } + } } class PrintThread extends Thread