X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignExportSettings.java;h=fbe12d83065eb55c74a0fa332694ede35f51cfe7;hb=2cbf9d005db462396fa1dc0750aa63a2e6cd0735;hp=201570e00612f7bf11434b162002c9faf3487316;hpb=8d037894e71f86cf2a9d7218b65c46e63904e50d;p=jalview.git diff --git a/src/jalview/gui/AlignExportSettings.java b/src/jalview/gui/AlignExportSettings.java index 201570e..fbe12d8 100644 --- a/src/jalview/gui/AlignExportSettings.java +++ b/src/jalview/gui/AlignExportSettings.java @@ -21,16 +21,20 @@ package jalview.gui; import jalview.api.AlignExportSettingI; +import jalview.api.AlignViewportI; import jalview.bin.Jalview; +import jalview.datamodel.AlignExportSettingBeanI; +import jalview.datamodel.AlignmentExportData; +import jalview.datamodel.AlignmentI; +import jalview.datamodel.HiddenSequences; import jalview.io.FileFormatI; import jalview.jbgui.GAlignExportSettings; import jalview.util.MessageManager; +import jalview.util.dialogrunner.RunResponse; import java.awt.event.ActionEvent; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; +import java.awt.event.ActionListener; -import javax.swing.JDialog; import javax.swing.JOptionPane; @SuppressWarnings("serial") @@ -39,86 +43,154 @@ public class AlignExportSettings extends GAlignExportSettings { boolean cancelled = false; - JDialog dialog; + JvOptionPane dialog; - public AlignExportSettings(boolean hasHiddenSeq, boolean hasHiddenCols, - FileFormatI format) + AlignmentPanel alignPanel; + + /** + * settings provided at construction override the GUI + */ + AlignExportSettingBeanI override=null; + + public AlignExportSettings(AlignmentPanel alignmentPanel, + FileFormatI format, AlignExportSettingBeanI exportSettings) { - super(hasHiddenSeq, hasHiddenCols, format); - if (!Jalview.isHeadlessMode() && isShowDialog()) - { + super(alignmentPanel.getAlignViewport().hasHiddenRows(), + alignmentPanel.getAlignViewport().hasHiddenColumns(), format); + this.alignPanel = alignmentPanel; + override = exportSettings; + } + + /** + * @param viewport + * @return a bean with data for export + */ + @Override + public AlignmentExportData getAlignExportData() + { + // settings.isExportAnnotations(); - JOptionPane pane = new JOptionPane(null, JOptionPane.DEFAULT_OPTION, - JvOptionPane.DEFAULT_OPTION, null, new Object[] - { this }); - dialog = pane.createDialog(Desktop.desktop, - MessageManager.getString("label.export_settings")); - dialog.addWindowListener(new WindowAdapter() - { - @Override - public void windowClosing(WindowEvent e) - { - cancelled = true; - } - }); - dialog.pack(); - dialog.setVisible(true); - dialog.setContentPane(this); - dialog.validate(); + AlignmentI alignmentToExport = null; + String[] omitHidden = null; + AlignViewportI viewport = alignPanel.getAlignViewport(); + + alignmentToExport = viewport.getAlignment(); + if (viewport.hasHiddenColumns() && !isExportHiddenColumns()) + { + omitHidden = viewport.getViewAsString(false, + isExportHiddenSequences()); + } + + int[] alignmentStartEnd = new int[2]; + if (viewport.hasHiddenRows() && isExportHiddenSequences()) + { + alignmentToExport = viewport.getAlignment().getHiddenSequences() + .getFullAlignment(); + } + else + { + alignmentToExport = viewport.getAlignment(); } + alignmentStartEnd = viewport.getAlignment().getHiddenColumns() + .getVisibleStartAndEndIndex(alignmentToExport.getWidth()); + AlignmentExportData ed = new AlignmentExportData(alignmentToExport, + omitHidden, alignmentStartEnd, this); + return ed; } @Override public void ok_actionPerformed(ActionEvent e) { cancelled = false; - dialog.setVisible(false); - dialog.dispose(); } @Override public void cancel_actionPerformed(ActionEvent e) { cancelled = true; - dialog.setVisible(false); - dialog.dispose(); } @Override public boolean isExportHiddenSequences() { - return chkHiddenSeqs.isSelected(); + return override!=null ? override.isExportHiddenSequences() : chkHiddenSeqs.isSelected(); } @Override public boolean isExportHiddenColumns() { - return chkHiddenCols.isSelected(); + return override!=null ? override.isExportHiddenColumns() : chkHiddenCols.isSelected(); } @Override public boolean isExportAnnotations() { - return chkExportAnnots.isSelected(); + return override!=null ? override.isExportAnnotations() : chkExportAnnots.isSelected(); } @Override public boolean isExportFeatures() { - return chkExportFeats.isSelected(); + return override!=null ? override.isExportFeatures() : chkExportFeats.isSelected(); } @Override public boolean isExportGroups() { - return chkExportGrps.isSelected(); + return override!=null ? override.isExportGroups() : chkExportGrps.isSelected(); } @Override public boolean isCancelled() { - return cancelled; + return override!=null ? override.isCancelled() : cancelled; + } + + ActionListener afterShownAction = null; + + @Override + public void addActionListener(ActionListener actionListener) + { + afterShownAction = actionListener; + } + + @Override + public void doShowSettings() + { + if (!Jalview.isHeadlessMode() && override==null && isShowDialog()) + { + + dialog = JvOptionPane.newOptionDialog(alignPanel); + + dialog.response(new RunResponse(JvOptionPane.OK_OPTION) + { + public void run() + { + ok_actionPerformed(null); + afterShownAction.actionPerformed(null); + } + }).defaultResponse(new Runnable() + { + @Override + public void run() + { + cancelled=true; + afterShownAction.actionPerformed(null); + } + }); + String ok = MessageManager.getString("action.ok"), + cancel = MessageManager.getString("action.cancel"); + dialog.showInternalDialog(this, + MessageManager.getString("label.export_settings"), + JOptionPane.DEFAULT_OPTION, JvOptionPane.DEFAULT_OPTION, null, + new Object[] + { ok, cancel }, ok); + } + else + { + afterShownAction.actionPerformed(null); + } } }