package jalview.io;
import jalview.api.AlignExportSettingsI;
+import jalview.bin.Cache;
import jalview.datamodel.AlignExportSettingsAdapter;
import jalview.datamodel.AlignmentExportData;
-import jalview.exceptions.NoFileSelectedException;
import jalview.gui.AlignmentPanel;
import jalview.gui.IProgressIndicator;
import jalview.util.MessageManager;
}
- public String getOutputFile() throws NoFileSelectedException
+ /**
+ * Prompts the user to choose an output file and returns the file path, or
+ * null on Cancel
+ *
+ * @return
+ */
+ public String getOutputFile()
{
String selectedFile = null;
- if (pIndicator != null && !isHeadless())
- {
- pIndicator.setProgressBar(MessageManager.formatMessage(
- "status.waiting_for_user_to_select_output_file", "HTML"),
- pSessionId);
- }
// TODO: JAL-3048 generate html rendered view (requires SvgGraphics and/or
// Jalview HTML rendering system- probably not required for Jalview-JS)
int fileChooserOpt = jvFileChooser.showSaveDialog(null);
if (fileChooserOpt == JalviewFileChooser.APPROVE_OPTION)
{
- jalview.bin.Cache.setProperty("LAST_DIRECTORY",
+ Cache.setProperty("LAST_DIRECTORY",
jvFileChooser.getSelectedFile().getParent());
selectedFile = jvFileChooser.getSelectedFile().getPath();
}
- else
- {
- throw new NoFileSelectedException("No file was selected.");
- }
+
return selectedFile;
}
*
* @return
*/
- public abstract File getExportedFile();
+ public File getExportedFile()
+ {
+ return generatedFile;
+ }
+
+ public void exportHTML(String outputFile)
+ {
+ exportStarted();
+ try
+ {
+ if (outputFile == null)
+ {
+ /*
+ * prompt for output file
+ */
+ outputFile = getOutputFile();
+ if (outputFile == null)
+ {
+ setProgressMessage(MessageManager.formatMessage(
+ "status.cancelled_image_export_operation",
+ getDescription()));
+ return;
+ }
+ }
+ generatedFile = new File(outputFile);
+ } catch (Exception e)
+ {
+ setProgressMessage(MessageManager
+ .formatMessage("info.error_creating_file", getDescription()));
+ e.printStackTrace();
+ return;
+ }
+ new Thread(this).start();
+
+ }
/**
- * This is the main method to handle the HTML generation.
+ * Answers a short description of the image format suitable for display in
+ * messages
*
- * @param outputFile
- * the file path of the generated HTML
+ * @return
*/
- public abstract void exportHTML(String outputFile);
+ protected abstract String getDescription();
}
\ No newline at end of file