merge from develop
[jalview.git] / src / jalview / io / HtmlSvgOutput.java
index 781eace..6612db3 100644 (file)
@@ -40,11 +40,7 @@ public class HtmlSvgOutput
   {
     try
     {
-      if (file == null /*
-                        * && !(System.getProperty("java.awt.headless") != null
-                        * && System
-                        * .getProperty("java.awt.headless").equals("true"))
-                        */)
+      if (file == null)
       {
 
       JalviewFileChooser chooser = getHTMLChooser();
@@ -97,22 +93,25 @@ public class HtmlSvgOutput
 
       String titleSvgData = g1.getSVGDocument();
       String alignSvgData = g2.getSVGDocument();
-
-      AlignmentExportData exportData = ap.alignFrame.getAlignmentForExport(
+      String jsonData = null;
+      boolean isEmbbedBioJSON = Boolean.valueOf(jalview.bin.Cache
+              .getDefault("EXPORT_EMBBED_BIOJSON", "true"));
+      if (isEmbbedBioJSON)
+      {
+        AlignmentExportData exportData = jalview.gui.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);
+                        exportData.getStartEndPostions(),
+                        av.getColumnSelection());
+      }
       String htmlData = getHtml(titleSvgData, alignSvgData, jsonData);
-
       FileOutputStream out = new FileOutputStream(file);
       out.write(htmlData.getBytes());
       out.flush();
@@ -276,6 +275,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 +310,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();
   }
 }