X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FHTMLOutput.java;h=f7179cf0ac7a51e771dd490b3feffe9135a17051;hb=10dfe2a100d53e45c4a9d23ce3957fa68de35046;hp=bf8c4310d493c68e76bcfa9bd36bb19f6dbef3ea;hpb=7534e6f358b2bba0db179cb2f496bd2e5a4da43d;p=jalview.git diff --git a/src/jalview/io/HTMLOutput.java b/src/jalview/io/HTMLOutput.java index bf8c431..f7179cf 100644 --- a/src/jalview/io/HTMLOutput.java +++ b/src/jalview/io/HTMLOutput.java @@ -20,9 +20,10 @@ */ package jalview.io; -import jalview.api.AlignExportSettingI; +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; @@ -44,76 +45,44 @@ public abstract class HTMLOutput implements Runnable protected File generatedFile; + String _bioJson = null; + + /** + * Constructor given an alignment panel (which should not be null) + * + * @param ap + */ public HTMLOutput(AlignmentPanel ap) { - if (ap != null) - { - this.ap = ap; - this.pIndicator = ap.alignFrame; - } + this.ap = ap; + this.pIndicator = ap.alignFrame; } + /** + * Gets the BioJSON data as a string, with lazy evaluation (first time called + * only). If the output format is configured not to embed BioJSON, returns + * null. + * + * @return + */ public String getBioJSONData() { - return getBioJSONData(null); - } - - public String getBioJSONData(AlignExportSettingI exportSettings) - { if (!isEmbedData()) { return null; } - if (exportSettings == null) + if (_bioJson == null) { - exportSettings = new AlignExportSettingI() - { - @Override - public boolean isExportHiddenSequences() - { - return true; - } - - @Override - public boolean isExportHiddenColumns() - { - return true; - } - - @Override - public boolean isExportAnnotations() - { - return true; - } - - @Override - public boolean isExportFeatures() - { - return true; - } - - @Override - public boolean isExportGroups() - { - return true; - } - - @Override - public boolean isCancelled() - { - return false; - } - }; + AlignExportSettingsI options = new AlignExportSettingsAdapter(true); + AlignmentExportData exportData = ap.getAlignViewport() + .getAlignExportData(options); + _bioJson = new FormatAdapter(ap, options).formatSequences( + FileFormat.Json, exportData.getAlignment(), + exportData.getOmitHidden(), exportData.getStartEndPostions(), + ap.getAlignViewport().getAlignment().getHiddenColumns()); } - AlignmentExportData exportData = jalview.gui.AlignFrame - .getAlignmentForExport(FileFormat.Json, ap.getAlignViewport(), - exportSettings); - String bioJSON = new FormatAdapter(ap, exportData.getSettings()) - .formatSequences(FileFormat.Json, exportData.getAlignment(), - exportData.getOmitHidden(), - exportData.getStartEndPostions(), ap.getAlignViewport() - .getAlignment().getHiddenColumns()); - return bioJSON; + + return _bioJson; } /** @@ -218,15 +187,15 @@ public abstract class HTMLOutput implements Runnable } - 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) @@ -241,14 +210,11 @@ public abstract class HTMLOutput implements Runnable 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; } @@ -326,13 +292,47 @@ public abstract class HTMLOutput implements Runnable * * @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