/* * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) * Copyright (C) $$Year-Rel$$ 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 . * The Jalview Authors are detailed in the 'AUTHORS' file. */ 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.ActionListener; import javax.swing.JOptionPane; @SuppressWarnings("serial") public class AlignExportSettings extends GAlignExportSettings implements AlignExportSettingI { boolean cancelled = false; JvOptionPane dialog; AlignmentPanel alignPanel; /** * settings provided at construction override the GUI */ AlignExportSettingBeanI override=null; public AlignExportSettings(AlignmentPanel alignmentPanel, FileFormatI format, AlignExportSettingBeanI exportSettings) { 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(); 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; } @Override public void cancel_actionPerformed(ActionEvent e) { cancelled = true; } @Override public boolean isExportHiddenSequences() { return override!=null ? override.isExportHiddenSequences() : chkHiddenSeqs.isSelected(); } @Override public boolean isExportHiddenColumns() { return override!=null ? override.isExportHiddenColumns() : chkHiddenCols.isSelected(); } @Override public boolean isExportAnnotations() { return override!=null ? override.isExportAnnotations() : chkExportAnnots.isSelected(); } @Override public boolean isExportFeatures() { return override!=null ? override.isExportFeatures() : chkExportFeats.isSelected(); } @Override public boolean isExportGroups() { return override!=null ? override.isExportGroups() : chkExportGrps.isSelected(); } @Override public boolean isCancelled() { 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); } } }