import jalview.commands.RemoveGapsCommand;
import jalview.commands.SlideSequencesCommand;
import jalview.commands.TrimRegionCommand;
+import jalview.datamodel.AlignExportSettingBeanI;
import jalview.datamodel.AlignedCodonFrame;
import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentView;
import jalview.datamodel.ColumnSelection;
import jalview.datamodel.HiddenColumns;
-import jalview.datamodel.HiddenSequences;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SeqCigar;
import jalview.datamodel.Sequence;
}).showSaveDialog(this);
}
- public boolean saveAlignment(String file, FileFormatI format)
+ private boolean lastSaveSuccessful = false;
+
+ private FileFormatI lastFormatSaved;
+
+ private String lastFilenameSaved;
+
+ /**
+ * Raise a dialog or status message for the last call to saveAlignment.
+ *
+ * @return true if last call to saveAlignment(file, format) was successful.
+ */
+ public boolean isSaveAlignmentSuccessful()
{
- boolean success = true;
+ if (!lastSaveSuccessful)
+ {
+ JvOptionPane.showInternalMessageDialog(this, MessageManager
+ .formatMessage("label.couldnt_save_file", new Object[]
+ { lastFilenameSaved }),
+ MessageManager.getString("label.error_saving_file"),
+ JvOptionPane.WARNING_MESSAGE);
+ }
+ else
+ {
+
+ statusBar.setText(MessageManager.formatMessage(
+ "label.successfully_saved_to_file_in_format", new Object[]
+ { lastFilenameSaved, lastFormatSaved }));
+
+ }
+ return lastSaveSuccessful;
+ }
+
+ public void saveAlignment(String file, FileFormatI format)
+ {
+ lastSaveSuccessful = false;
+ lastFilenameSaved = file;
+ lastFormatSaved = format;
+ AlignFrame us = this;
if (FileFormat.Jalview.equals(format))
{
String shortName = title;
shortName.lastIndexOf(java.io.File.separatorChar) + 1);
}
- success = new Jalview2XML().saveAlignment(this, file, shortName);
-
- statusBar.setText(MessageManager.formatMessage(
- "label.successfully_saved_to_file_in_format", new Object[]
- { fileName, format }));
-
+ lastSaveSuccessful = new Jalview2XML().saveAlignment(this, file,
+ shortName);
}
else
{
- AlignmentExportData exportData = getAlignmentForExport(format,
- viewport, null);
- if (exportData.getSettings().isCancelled())
- {
- return false;
- }
- FormatAdapter f = new FormatAdapter(alignPanel,
- exportData.getSettings());
- String output = f.formatSequences(format, exportData.getAlignment(), // class
- // cast
- // exceptions
- // will
- // occur in the distant future
- exportData.getOmitHidden(), exportData.getStartEndPostions(),
- f.getCacheSuffixDefault(format),
- viewport.getAlignment().getHiddenColumns());
-
- if (output == null)
+ AlignExportSettingI settings = getAlignmentForExport(format,
+ alignPanel, null);
+ settings.addActionListener(new ActionListener()
{
- success = false;
- }
- else
- {
- try
- {
- PrintWriter out = new PrintWriter(new FileWriter(file));
-
- out.print(output);
- out.close();
- this.setTitle(file);
- statusBar.setText(MessageManager.formatMessage(
- "label.successfully_saved_to_file_in_format", new Object[]
- { fileName, format.getName() }));
- } catch (Exception ex)
+ @Override
+ public void actionPerformed(ActionEvent e)
{
- success = false;
- ex.printStackTrace();
+
+ if (settings.isCancelled())
+ {
+ lastSaveSuccessful = false;
+ return;
+ }
+ AlignmentExportData exportData = settings.getAlignExportData();
+ FormatAdapter f = new FormatAdapter(alignPanel,
+ exportData.getSettings());
+ String output = f.formatSequences(format,
+ exportData.getAlignment(), // class
+ // cast
+ // exceptions
+ // will
+ // occur in the distant future
+ exportData.getOmitHidden(),
+ exportData.getStartEndPostions(),
+ f.getCacheSuffixDefault(format),
+ viewport.getAlignment().getHiddenColumns());
+
+ if (output == null)
+ {
+ lastSaveSuccessful = false;
+ }
+ else
+ {
+ try
+ {
+ PrintWriter out = new PrintWriter(new FileWriter(file));
+
+ out.print(output);
+ out.close();
+ us.setTitle(file);
+ statusBar.setText(MessageManager.formatMessage(
+ "label.successfully_saved_to_file_in_format",
+ new Object[]
+ { fileName, format.getName() }));
+ } catch (Exception ex)
+ {
+ lastSaveSuccessful = false;
+ ex.printStackTrace();
+ }
+ }
}
- }
- }
+ });
- if (!success)
- {
- JvOptionPane.showInternalMessageDialog(this, MessageManager
- .formatMessage("label.couldnt_save_file", new Object[]
- { fileName }),
- MessageManager.getString("label.error_saving_file"),
- JvOptionPane.WARNING_MESSAGE);
+ settings.doShowSettings();
}
-
- return success;
}
/**
{
FileFormatI fileFormat = FileFormats.getInstance()
.forName(e.getActionCommand());
- AlignmentExportData exportData = getAlignmentForExport(fileFormat,
- viewport, null);
- if (exportData.getSettings().isCancelled())
+ AlignExportSettingI settings = getAlignmentForExport(fileFormat,
+ alignPanel, null);
+ settings.addActionListener(new ActionListener()
{
- return;
- }
- CutAndPasteTransfer cap = new CutAndPasteTransfer();
- cap.setForInput(null);
- try
- {
- FileFormatI format = fileFormat;
- cap.setText(new FormatAdapter(alignPanel, exportData.getSettings())
- .formatSequences(format, exportData.getAlignment(),
- exportData.getOmitHidden(),
- exportData.getStartEndPostions(),
- viewport.getAlignment().getHiddenColumns()));
- 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();
- }
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ if (settings.isCancelled())
+ {
+ return;
+ }
+ AlignmentExportData exportData = settings.getAlignExportData();
+ CutAndPasteTransfer cap = new CutAndPasteTransfer();
+ cap.setForInput(null);
+ try
+ {
+ FileFormatI format = fileFormat;
+ cap.setText(new FormatAdapter(alignPanel, settings)
+ .formatSequences(format, exportData.getAlignment(),
+ exportData.getOmitHidden(),
+ exportData.getStartEndPostions(),
+ viewport.getAlignment().getHiddenColumns()));
+ Desktop.addInternalFrame(cap, MessageManager.formatMessage(
+ "label.alignment_output_command", new Object[]
+ { fileFormat.getName() }), 600, 500);
+ } catch (OutOfMemoryError oom)
+ {
+ new OOMWarning("Outputting alignment as " + fileFormat.getName(),
+ oom);
+ cap.dispose();
+ }
+ // TODO Auto-generated method stub
+ }
+ });
+ settings.doShowSettings();
}
- public static AlignmentExportData getAlignmentForExport(
- FileFormatI format, AlignViewportI viewport,
- AlignExportSettingI exportSettings)
+ public static AlignExportSettingI getAlignmentForExport(
+ FileFormatI format, AlignmentPanel alignPanel,
+ AlignExportSettingBeanI exportSettings)
{
- AlignmentI alignmentToExport = null;
- AlignExportSettingI settings = exportSettings;
- String[] omitHidden = null;
-
- HiddenSequences hiddenSeqs = viewport.getAlignment()
- .getHiddenSequences();
-
- alignmentToExport = viewport.getAlignment();
- boolean hasHiddenSeqs = hiddenSeqs.getSize() > 0;
- if (settings == null)
- {
- settings = new AlignExportSettings(hasHiddenSeqs,
- viewport.hasHiddenColumns(), format);
- }
- // settings.isExportAnnotations();
-
- if (viewport.hasHiddenColumns() && !settings.isExportHiddenColumns())
- {
- omitHidden = viewport.getViewAsString(false,
- settings.isExportHiddenSequences());
- }
-
- int[] alignmentStartEnd = new int[2];
- if (hasHiddenSeqs && settings.isExportHiddenSequences())
- {
- alignmentToExport = hiddenSeqs.getFullAlignment();
- }
- else
- {
- alignmentToExport = viewport.getAlignment();
- }
- alignmentStartEnd = viewport.getAlignment().getHiddenColumns()
- .getVisibleStartAndEndIndex(alignmentToExport.getWidth());
- AlignmentExportData ed = new AlignmentExportData(alignmentToExport,
- omitHidden, alignmentStartEnd, settings);
- return ed;
+ return new AlignExportSettings(alignPanel, format, exportSettings);
}
/**