JAL-1760 JAL-1641 Serialisation of Hidden Seqs and Cols in JSON output. Added ability...
[jalview.git] / src / jalview / io / HtmlSvgOutput.java
index b79d35d..db34c2f 100644 (file)
@@ -34,6 +34,7 @@ public class HtmlSvgOutput
 
       this.av = ap.av;
       this.ap = ap;
+    av.setFeatureRenderer(new FeatureRenderer(ap));
       this.annotationPanel = ap.getAnnotationPanel();
     generateHtmlSvgOutput(file);
   }
@@ -100,13 +101,17 @@ public class HtmlSvgOutput
 
       String titleSvgData = g1.getSVGDocument();
       String alignSvgData = g2.getSVGDocument();
-      String htmlData = getHtml(titleSvgData, alignSvgData);
+      String jsonData = JSONFile.getJSONData(av);
+      String htmlData = getHtml(titleSvgData, alignSvgData, jsonData);
 
       out.write(htmlData.getBytes());
       out.flush();
       out.close();
-
+      if (!(System.getProperty("java.awt.headless") != null && System
+              .getProperty("java.awt.headless").equals("true")))
+      {
       jalview.util.BrowserLauncher.openURL("file:///" + file);
+      }
     } catch (Exception e)
     {
       e.printStackTrace();
@@ -254,18 +259,49 @@ public class HtmlSvgOutput
     return Printable.PAGE_EXISTS;
   }
   
-  private String getHtml(String titleSvg, String alignmentSvg)
+  private String getHtml(String titleSvg, String alignmentSvg,
+          String jsonData)
   {
     StringBuilder htmlSvg = new StringBuilder();
-    htmlSvg.append("<html><style type=\"text/css\"> div.title {"
-            + "height: 100%; width:11%; float: left; }"
-            + "div.align { height: 100%; width:89%;"
-            + "overflow: scroll; float: right; } </style>"
-            + "<div style=\"width:100%; height:100%; overflow: hidden\">"
-            + "<div class=\"title\">");
-    htmlSvg.append(titleSvg);
-    htmlSvg.append("</div><div class=\"align\">").append(alignmentSvg);
+    htmlSvg.append("<html>\n");
+    if (jsonData != null)
+    {
+      htmlSvg.append("<input type=\"hidden\" name=\"seqData\" id=\"seqData\" value='"
+              + jsonData + "'>");
+    }
+    htmlSvg.append("\n<style type=\"text/css\"> "
+            + "div.parent{ width:100%;<!-- overflow: auto; -->}\n"
+            + "div.titlex{ width:11%; float: left; }\n"
+            + "div.align{ width:89%; float: right; }\n"
+            + ".sub-category-container {overflow-y: scroll; overflow-x: hidden; width: 100%; height: 100%;}\n"
+            + "object {pointer-events: none;}"
+            + "</style>");
+    htmlSvg.append("<div>");
+    htmlSvg.append(
+"<div class=\"titlex\">");
+    htmlSvg.append(
+"<div class=\"sub-category-container\"> ")
+            .append(titleSvg)
+            .append("</div>")
+            .append("</div>\n\n<!-- ========================================================================================== -->\n\n");
+    htmlSvg.append(
+"<div class=\"align\" >");
+    htmlSvg.append(
+            "<div class=\"sub-category-container\"> <div style=\"overflow-x: scroll;\">")
+            .append(alignmentSvg)
+.append("</div></div>")
+            .append("</div>");
     htmlSvg.append("</div>");
+
+    htmlSvg.append("<script language=\"JavaScript\" type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js\"></script>\n"
+            + "<script language=\"JavaScript\" type=\"text/javascript\"  src=\"//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js\"></script>\n"
+            + "<script>\n"
+            + "var subCatContainer = $(\".sub-category-container\");\n"
+            + "subCatContainer.scroll(\nfunction() {\n"
+            + "subCatContainer.scrollTop($(this).scrollTop());\n});\n");
+
+    htmlSvg.append("</script></hmtl>");
+
     return htmlSvg.toString();
   }
 }