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")
-public class AlignExportSettings extends GAlignExportSettings implements
- AlignExportSettingI
+public class AlignExportSettings extends GAlignExportSettings
+ implements AlignExportSettingI
{
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,
- JOptionPane.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);
+ }
}
}