JAL-1835 made BioJSON embedding to html exports configurable, and trapped import...
[jalview.git] / src / jalview / io / HtmlSvgOutput.java
index 781eace..7fcf629 100644 (file)
@@ -97,22 +97,24 @@ public class HtmlSvgOutput
 
       String titleSvgData = g1.getSVGDocument();
       String alignSvgData = g2.getSVGDocument();
-
+      String jsonData = null;
+      boolean isEmbbedBioJSON = Boolean.valueOf(jalview.bin.Cache
+              .getDefault("EXPORT_EMBBED_BIOJSON", "true"));
+      if (isEmbbedBioJSON)
+      {
       AlignmentExportData exportData = ap.alignFrame.getAlignmentForExport(
               JSONFile.FILE_DESC, av);
       if (exportData.getSettings().isCancelled())
       {
         return;
       }
-      String jsonData = new FormatAdapter(ap, exportData.getSettings())
+        jsonData = new FormatAdapter(ap, exportData.getSettings())
               .formatSequences(JSONFile.FILE_DESC, exportData
                       .getAlignment(), exportData.getOmitHidden(),
                       exportData.getStartEndPostions(), ap
                               .getAlignViewport().getColumnSelection());
-
-      // String jsonData = JSONFile.getJSONData(ap);
+      }
       String htmlData = getHtml(titleSvgData, alignSvgData, jsonData);
-
       FileOutputStream out = new FileOutputStream(file);
       out.write(htmlData.getBytes());
       out.flush();
@@ -276,6 +278,7 @@ public class HtmlSvgOutput
     htmlSvg.append("<html>\n");
     if (jsonData != null)
     {
+      htmlSvg.append("<button onclick=\"javascipt:openJalviewUsingCurrentUrl();\">Launch in Jalview</button>");
       htmlSvg.append("<input type=\"hidden\" name=\"seqData\" id=\"seqData\" value='"
               + jsonData + "'>");
     }
@@ -310,8 +313,35 @@ public class HtmlSvgOutput
             + "subCatContainer.scroll(\nfunction() {\n"
             + "subCatContainer.scrollTop($(this).scrollTop());\n});\n");
 
-    htmlSvg.append("</script></hmtl>");
-
+    htmlSvg.append("</script>\n");
+
+    // javascript for launching file in Jalview
+
+    htmlSvg.append("<script language=\"JavaScript\">\n");
+    htmlSvg.append("function openJalviewUsingCurrentUrl(){\n");
+    htmlSvg.append("    var json = JSON.parse(document.getElementById(\"seqData\").value);\n");
+    htmlSvg.append("    var jalviewVersion = json['appSettings'].version;\n");
+    htmlSvg.append("    var url = json['appSettings'].webStartUrl;\n");
+    htmlSvg.append("    var myForm = document.createElement(\"form\");\n\n");
+    htmlSvg.append("    var heap = document.createElement(\"input\");\n");
+    htmlSvg.append("    heap.setAttribute(\"name\", \"jvm-max-heap\") ;\n");
+    htmlSvg.append("    heap.setAttribute(\"value\", \"2G\");\n\n");
+    htmlSvg.append("    var target = document.createElement(\"input\");\n");
+    htmlSvg.append("    target.setAttribute(\"name\", \"open\");\n");
+    htmlSvg.append("    target.setAttribute(\"value\", document.URL);\n\n");
+    htmlSvg.append("    var jvVersion = document.createElement(\"input\");\n");
+    htmlSvg.append("    jvVersion.setAttribute(\"name\", \"version\") ;\n");
+    htmlSvg.append("    jvVersion.setAttribute(\"value\", jalviewVersion);\n\n");
+    htmlSvg.append("    myForm.action = url;\n");
+    htmlSvg.append("    myForm.appendChild(heap);\n");
+    htmlSvg.append("    myForm.appendChild(target);\n");
+    htmlSvg.append("    myForm.appendChild(jvVersion);\n");
+    htmlSvg.append("    document.body.appendChild(myForm);\n");
+    htmlSvg.append("    myForm.submit() ;\n");
+    htmlSvg.append("    document.body.removeChild(myForm);\n");
+    htmlSvg.append("}\n");
+    htmlSvg.append("</script>\n");
+    htmlSvg.append("</hmtl>");
     return htmlSvg.toString();
   }
 }