X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FBioJsHTMLOutput.java;fp=src%2Fjalview%2Fio%2FBioJsHTMLOutput.java;h=fd9c584eedf291d58652e469526288819f3a34f2;hb=2595e9d4ee0dbbd3406a98c4e49a61ccde806479;hp=f8fa1f5d90d33ad7b6181b8f36ed58268f6f38f6;hpb=e20075ba805d744d7cc4976e2b8d5e5840fb0a8d;p=jalview.git diff --git a/src/jalview/io/BioJsHTMLOutput.java b/src/jalview/io/BioJsHTMLOutput.java index f8fa1f5..fd9c584 100644 --- a/src/jalview/io/BioJsHTMLOutput.java +++ b/src/jalview/io/BioJsHTMLOutput.java @@ -20,11 +20,8 @@ */ package jalview.io; -import jalview.api.AlignExportSettingI; -import jalview.api.AlignmentViewPanel; -import jalview.datamodel.AlignmentExportData; import jalview.exceptions.NoFileSelectedException; -import jalview.gui.IProgressIndicator; +import jalview.gui.AlignmentPanel; import jalview.gui.OOMWarning; import jalview.json.binding.biojs.BioJSReleasePojo; import jalview.json.binding.biojs.BioJSRepositoryPojo; @@ -42,15 +39,8 @@ import java.net.URL; import java.util.Objects; import java.util.TreeMap; -public class BioJsHTMLOutput +public class BioJsHTMLOutput extends HTMLOutput { - private AlignmentViewPanel ap; - - private long pSessionId; - - private IProgressIndicator pIndicator; - - private boolean headless; private static File currentBJSTemplateFile; @@ -67,183 +57,41 @@ public class BioJsHTMLOutput "biojs_template_git_repo", "https://raw.githubusercontent.com/jalview/exporter-templates/master/biojs/package.json"); - public BioJsHTMLOutput(AlignmentViewPanel ap, - IProgressIndicator pIndicator) + public BioJsHTMLOutput(AlignmentPanel ap) { - if (ap != null) - { - this.ap = ap; - this.pSessionId = System.currentTimeMillis(); - this.pIndicator = pIndicator; - this.headless = (System.getProperty("java.awt.headless") != null && System - .getProperty("java.awt.headless").equals("true")); - } + super(ap); } - public void exportJalviewAlignmentAsBioJsHtmlFile() + @Override + public void exportHTML(String outputFile) { - String outputFile = null; + exportStarted(); try { - outputFile = getOutputFile(); - AlignExportSettingI exportSettings = new AlignExportSettingI() + if (outputFile == null) { - @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; - } - - }; - AlignmentExportData exportData = jalview.gui.AlignFrame - .getAlignmentForExport(JSONFile.FILE_DESC, - ap.getAlignViewport(), exportSettings); - String bioJSON = new FormatAdapter(ap, exportData.getSettings()) - .formatSequences(JSONFile.FILE_DESC, exportData - .getAlignment(), exportData.getOmitHidden(), - exportData.getStartEndPostions(), ap - .getAlignViewport().getColumnSelection()); - - String bioJSTemplateString = getBioJsTemplateAsString(); - String generatedBioJsWithJalviewAlignmentAsJson = bioJSTemplateString - .replaceAll("#sequenceData#", bioJSON).toString(); - - PrintWriter out = new java.io.PrintWriter(new java.io.FileWriter( - outputFile)); - out.print(generatedBioJsWithJalviewAlignmentAsJson); - out.flush(); - out.close(); - jalview.util.BrowserLauncher.openURL("file:///" + outputFile); - if (pIndicator != null && !headless) - { - pIndicator.setProgressBar(MessageManager.formatMessage( - "status.export_complete", "BioJS"), pSessionId); + outputFile = getOutputFile(); } - } catch (NoFileSelectedException ex) + generatedFile = new File(outputFile); + } catch (NoFileSelectedException e) { - // do noting if no file was selected - } catch (OutOfMemoryError err) - { - System.out.println("########################\n" + "OUT OF MEMORY " - + outputFile + "\n" + "########################"); - new OOMWarning("Creating Image for " + outputFile, err); + setProgressMessage(MessageManager.formatMessage( + "status.cancelled_image_export_operation", "BioJS MSA")); + return; } catch (Exception e) { - pIndicator.setProgressBar(MessageManager.formatMessage( - "info.error_creating_file", "HTML"), pSessionId); + setProgressMessage(MessageManager.formatMessage( + "info.error_creating_file", "BioJS MSA")); e.printStackTrace(); + return; } - } - - public String getOutputFile() throws NoFileSelectedException - { - String selectedFile = null; - if (pIndicator != null && !headless) - { - pIndicator.setProgressBar(MessageManager.formatMessage( - "status.waiting_for_user_to_select_output_file", "HTML"), - pSessionId); - } - - JalviewFileChooser jvFileChooser = new JalviewFileChooser( - jalview.bin.Cache.getProperty("LAST_DIRECTORY"), - new String[] { "html" }, new String[] { "HTML files" }, - "HTML files"); - jvFileChooser.setFileView(new JalviewFileView()); + new Thread(this).start(); - jvFileChooser.setDialogTitle(MessageManager - .getString("label.save_as_biojs_html")); - jvFileChooser.setToolTipText(MessageManager.getString("action.save")); - - int fileChooserOpt = jvFileChooser.showSaveDialog(null); - if (fileChooserOpt == JalviewFileChooser.APPROVE_OPTION) - { - jalview.bin.Cache.setProperty("LAST_DIRECTORY", jvFileChooser - .getSelectedFile().getParent()); - selectedFile = jvFileChooser.getSelectedFile().getPath(); - } - else - { - pIndicator.setProgressBar(MessageManager.formatMessage( - "status.cancelled_image_export_operation", "BioJS"), - pSessionId); - throw new NoFileSelectedException("No file was selected."); - } - return selectedFile; } - public static String getBioJsTemplateAsString() throws IOException - { - InputStreamReader isReader = null; - BufferedReader buffReader = null; - StringBuilder sb = new StringBuilder(); - Objects.requireNonNull(getCurrentBJSTemplateFile(), - "BioJsTemplate File not initialized!"); - @SuppressWarnings("deprecation") - URL url = getCurrentBJSTemplateFile().toURL(); - if (url != null) - { - try - { - isReader = new InputStreamReader(url.openStream()); - buffReader = new BufferedReader(isReader); - String line; - String lineSeparator = System.getProperty("line.separator"); - while ((line = buffReader.readLine()) != null) - { - sb.append(line).append(lineSeparator); - } - } catch (Exception ex) - { - ex.printStackTrace(); - } finally - { - if (isReader != null) - { - isReader.close(); - } - if (buffReader != null) - { - buffReader.close(); - } - } - } - return sb.toString(); - } - - public static void refreshBioJSVersionsInfo(String dirName) + public static void refreshVersionInfo(String dirName) throws URISyntaxException { File directory = new File(BJS_TEMPLATES_LOCAL_DIRECTORY); @@ -291,7 +139,7 @@ public class BioJsHTMLOutput BioJSRepositoryPojo release = new BioJSRepositoryPojo( gitRepoPkgJson); syncUpdates(BJS_TEMPLATES_LOCAL_DIRECTORY, release); - refreshBioJSVersionsInfo(BJS_TEMPLATES_LOCAL_DIRECTORY); + refreshVersionInfo(BJS_TEMPLATES_LOCAL_DIRECTORY); } } catch (URISyntaxException e) { @@ -412,4 +260,56 @@ public class BioJsHTMLOutput BioJsHTMLOutput.bioJsMSAVersions = bioJsMSAVersions; } + @Override + public boolean isEmbedData() + { + return true; + } + + @Override + public boolean isLaunchInBrowserAfterExport() + { + return true; + } + + @Override + public File getExportedFile() + { + return generatedFile; + } + + @Override + public void run() + { + try + { + String bioJSON = getBioJSONData(); + String bioJSTemplateString = HTMLOutput + .readFileAsString(getCurrentBJSTemplateFile()); + String generatedBioJsWithJalviewAlignmentAsJson = bioJSTemplateString + .replaceAll("#sequenceData#", bioJSON).toString(); + + PrintWriter out = new java.io.PrintWriter(new java.io.FileWriter( + generatedFile)); + out.print(generatedBioJsWithJalviewAlignmentAsJson); + out.flush(); + out.close(); + setProgressMessage(MessageManager.formatMessage( + "status.export_complete", "BioJS")); + exportCompleted(); + + } catch (OutOfMemoryError err) + { + System.out.println("########################\n" + "OUT OF MEMORY " + + generatedFile + "\n" + "########################"); + new OOMWarning("Creating Image for " + generatedFile, err); + } catch (Exception e) + { + setProgressMessage(MessageManager.formatMessage( + "info.error_creating_file", "HTML")); + e.printStackTrace(); + } + + } + }