From: tcofoegbu Date: Tue, 9 Feb 2016 13:05:31 +0000 (+0000) Subject: JAL-1976 Added progress indicators for HTML_SVG and BioJS export operations X-Git-Tag: Release_2_10_0~313 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=c70d42a1afc972ddb3757b9ec4cece3458d396a1;p=jalview.git JAL-1976 Added progress indicators for HTML_SVG and BioJS export operations --- diff --git a/resources/lang/Messages.properties b/resources/lang/Messages.properties index db6cdad..e428989 100644 --- a/resources/lang/Messages.properties +++ b/resources/lang/Messages.properties @@ -1282,6 +1282,6 @@ exception.pdb_server_unreachable = Jalview is unable to reach the PDBe Solr serv label.nw_mapping = Needleman & Wunsch Alignment label.sifts_mapping = SIFTs Mapping label.mapping_method = Sequence \u27f7 Structure mapping method -status.waiting_for_user_to_select_output_file = Waiting for user to select {0} file -status.cancelled_image_export_operation = Cancelled {0} export operation +status.waiting_for_user_to_select_output_file = Waiting for user to select {0} file. +status.cancelled_image_export_operation = Cancelled {0} export operation. info.error_creating_file = Error creating {0} file. \ No newline at end of file diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index c615f6c..a616dc0 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -1369,7 +1369,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override public void bioJSMenuItem_actionPerformed(ActionEvent e) { - BioJsHTMLOutput bjs = new BioJsHTMLOutput(alignPanel); + BioJsHTMLOutput bjs = new BioJsHTMLOutput(alignPanel, this); bjs.exportJalviewAlignmentAsBioJsHtmlFile(); } diff --git a/src/jalview/io/BioJsHTMLOutput.java b/src/jalview/io/BioJsHTMLOutput.java index ac29d8e..9454cae 100644 --- a/src/jalview/io/BioJsHTMLOutput.java +++ b/src/jalview/io/BioJsHTMLOutput.java @@ -24,6 +24,7 @@ import jalview.api.AlignExportSettingI; import jalview.api.AlignmentViewPanel; import jalview.datamodel.AlignmentExportData; import jalview.exceptions.NoFileSelectedException; +import jalview.gui.IProgressIndicator; import jalview.json.binding.biojs.BioJSReleasePojo; import jalview.json.binding.biojs.BioJSRepositoryPojo; import jalview.util.MessageManager; @@ -44,6 +45,12 @@ public class BioJsHTMLOutput { private AlignmentViewPanel ap; + private long pSessionId; + + private IProgressIndicator pIndicator; + + private boolean headless; + private static File currentBJSTemplateFile; private static TreeMap bioJsMSAVersions; @@ -59,11 +66,16 @@ public class BioJsHTMLOutput "biojs_template_git_repo", "https://raw.githubusercontent.com/jalview/exporter-templates/master/biojs/package.json"); - public BioJsHTMLOutput(AlignmentViewPanel ap) + public BioJsHTMLOutput(AlignmentViewPanel ap, + IProgressIndicator pIndicator) { 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")); } } @@ -131,11 +143,18 @@ public class BioJsHTMLOutput out.flush(); out.close(); jalview.util.BrowserLauncher.openURL("file:///" + outputFile); + if (pIndicator != null && !headless) + { + pIndicator.setProgressBar(MessageManager.formatMessage( + "status.export_complete", "BioJS"), pSessionId); + } } catch (NoFileSelectedException ex) { // do noting if no file was selected } catch (Exception e) { + pIndicator.setProgressBar(MessageManager.formatMessage( + "info.error_creating_file", "HTML"), pSessionId); e.printStackTrace(); } } @@ -143,6 +162,13 @@ public class BioJsHTMLOutput 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" }, @@ -162,6 +188,9 @@ public class BioJsHTMLOutput } else { + pIndicator.setProgressBar(MessageManager.formatMessage( + "status.cancelled_image_export_operation", "BioJS"), + pSessionId); throw new NoFileSelectedException("No file was selected."); } return selectedFile; @@ -245,6 +274,7 @@ public class BioJsHTMLOutput { Thread updateThread = new Thread() { + @Override public void run() { try diff --git a/src/jalview/io/HtmlSvgOutput.java b/src/jalview/io/HtmlSvgOutput.java index 6c2faca..b53cacd 100644 --- a/src/jalview/io/HtmlSvgOutput.java +++ b/src/jalview/io/HtmlSvgOutput.java @@ -27,6 +27,7 @@ import jalview.datamodel.SequenceI; import jalview.gui.AlignViewport; import jalview.gui.AlignmentPanel; import jalview.gui.HTMLOptions; +import jalview.gui.IProgressIndicator; import jalview.math.AlignmentDimension; import jalview.util.MessageManager; @@ -59,11 +60,20 @@ public class HtmlSvgOutput public void generateHtmlSvgOutput(File file) { + IProgressIndicator pIndicator = ap.alignFrame; + long pSessionId = System.currentTimeMillis(); try { + boolean headless = (System.getProperty("java.awt.headless") != null && System + .getProperty("java.awt.headless").equals("true")); if (file == null) { - + if (pIndicator != null && !headless) + { + pIndicator.setProgressBar(MessageManager.formatMessage( + "status.waiting_for_user_to_select_output_file", "HTML"), + pSessionId); + } JalviewFileChooser chooser = getHTMLChooser(); chooser.setFileView(new jalview.io.JalviewFileView()); chooser.setDialogTitle(ap.alignFrame.getTitle()); @@ -78,6 +88,13 @@ public class HtmlSvgOutput } else { + + if (pIndicator != null && !headless) + { + pIndicator.setProgressBar(MessageManager.formatMessage( + "status.cancelled_image_export_operation", "HTML"), + pSessionId); + } return; } } @@ -182,9 +199,16 @@ public class HtmlSvgOutput { jalview.util.BrowserLauncher.openURL("file:///" + file); } + if (pIndicator != null && !headless) + { + pIndicator.setProgressBar(MessageManager.formatMessage( + "status.export_complete", "HTML"), pSessionId); + } } catch (Exception e) { e.printStackTrace(); + pIndicator.setProgressBar(MessageManager.formatMessage( + "info.error_creating_file", "HTML"), pSessionId); } }