RefreshPanels after a colour change
[jalview.git] / src / jalview / io / HTMLOutput.java
index 8eef36f..d15a6e8 100755 (executable)
@@ -11,10 +11,11 @@ import java.util.*;
 \r
 public class HTMLOutput\r
 {\r
-  SequenceRenderer sr = new SequenceRenderer();\r
 \r
-  public HTMLOutput(AlignmentI alignment, ColourSchemeI cs)\r
+\r
+  public HTMLOutput(AlignViewport av)\r
   {\r
+    SequenceRenderer sr = new SequenceRenderer(av);\r
     Color color;\r
     JFileChooser chooser = new JFileChooser(jalview.bin.Cache.LAST_DIRECTORY);\r
     chooser.setDialogTitle("Save as HTML");\r
@@ -29,7 +30,18 @@ public class HTMLOutput
         out.println("<HTML>");\r
         out.println("<style type=\"text/css\">");\r
         out.println("<!--");\r
-        out.println("td {font-family: \"Courier New\", Courier, mono; font-size: medium;}");\r
+        out.print("td {font-family: \""+av.getFont().getFamily()+"\", \""+av.getFont().getName()+ "\", mono; "\r
+                   +"font-size: "+av.getFont().getSize()+"px; ");\r
+\r
+\r
+        if (av.getFont().getStyle() == Font.BOLD)\r
+           out.print("font-weight: BOLD; ");\r
+\r
+        if (av.getFont().getStyle() == Font.ITALIC)\r
+           out.print("font-style: italic; ");\r
+\r
+        out.println("text-align: center; }");\r
+\r
         out.println("-->");\r
         out.println("</style>");\r
         out.println("<BODY>");\r
@@ -38,31 +50,74 @@ public class HTMLOutput
 \r
 \r
         //////////////\r
-        for (int i = 0; i < alignment.getHeight(); i++)\r
+        SequenceGroup [] groups;\r
+        SequenceI seq;\r
+        ColourSchemeI cs = null;\r
+        AlignmentI alignment = av.getAlignment();\r
+        String r,g,b;\r
+\r
+      // draws the top row, the measure rule\r
+        out.println("<tr><td colspan=\"6\"></td>");\r
+        int i=0;\r
+        for(i=10; i<alignment.getWidth()-10; i+=10)\r
+          out.println("<td colspan=\"9\">"+i+"<br>|</td><td></td>");\r
+\r
+        out.println("<td colspan=\"3\"></td><td colspan=\"3\">"+i+"<br>|</td>");\r
+        out.println("</tr>");\r
+\r
+        for (i = 0; i < alignment.getHeight(); i++)\r
         {\r
-          SequenceI seq = alignment.getSequenceAt(i);\r
-          out.println("<tr><td>"+seq.getName()+"&nbsp;&nbsp;</td>");\r
+          seq = alignment.getSequenceAt(i);\r
+          groups = alignment.findAllGroups( seq );\r
+          out.println("<tr><td nowrap>"+seq.getDisplayId()+"&nbsp;&nbsp;</td>");\r
+\r
+\r
           for (int res = 0; res < seq.getLength(); res++)\r
           {\r
+            cs = av.getGlobalColourScheme();\r
+\r
+            if(groups!=null)\r
+             {\r
+               for (int k = 0; k < groups.length; k++)\r
+                 if (groups[k].getStartRes() <= res && groups[k].getEndRes() >= res)\r
+                 {\r
+                   cs = groups[k].cs;\r
+                   break;\r
+                 }\r
+             }\r
+\r
+\r
             color = sr.getResidueBoxColour(cs, seq, res);\r
-            Integer.toHexString(color.getRed());\r
 \r
-            out.println("<td bgcolor=\"#"\r
-                        + Integer.toHexString(color.getRed())\r
-                        + Integer.toHexString(color.getGreen())\r
-                        + Integer.toHexString(color.getBlue())\r
-                        +"\"><center>"+seq.getCharAt(res)+"</center></td>");\r
+            if(color.getRGB()<-1)\r
+            {\r
+              r = Integer.toHexString(color.getRed());\r
+              if(r.length()<2)\r
+                r = "0"+r;\r
+              g = Integer.toHexString(color.getGreen());\r
+              if(g.length()<2)\r
+                g = "0"+g;\r
+              b = Integer.toHexString(color.getBlue());\r
+              if(b.length()<2)\r
+                b = "0"+b;\r
+              out.println("<td bgcolor=\"#"+ r + g + b + "\">"+seq.getCharAt(res)+"</td>");\r
+            }\r
+            else\r
+              out.println("<td>"+seq.getCharAt(res)+"</td>");\r
+\r
           }\r
 \r
           out.println("</tr>");\r
         }\r
         //////////////\r
-        out.println("</td></tr></table>");\r
-        out.println("</table>\n</body>\n</html>");\r
+        out.println("</table>");\r
+        out.println("</td></tr></table>\n</body>\n</html>");\r
 \r
         out.close();\r
+\r
+        jalview.util.BrowserLauncher.openURL( "file:///"+choice );\r
       }\r
-      catch(Exception ex){}\r
+      catch(Exception ex){ex.printStackTrace();}\r
     }\r
   }\r
 \r