Now allows multi coloured HTML output
[jalview.git] / src / jalview / io / HTMLOutput.java
1 package jalview.io;\r
2 \r
3 import jalview.gui.*;\r
4 import jalview.datamodel.*;\r
5 import jalview.schemes.*;\r
6 import java.awt.*;\r
7 import javax.swing.*;\r
8 import java.io.*;\r
9 import java.util.*;\r
10 \r
11 \r
12 public class HTMLOutput\r
13 {\r
14   SequenceRenderer sr = new SequenceRenderer(null);\r
15 \r
16   public HTMLOutput(AlignViewport av)\r
17   {\r
18     Color color;\r
19     JFileChooser chooser = new JFileChooser(jalview.bin.Cache.LAST_DIRECTORY);\r
20     chooser.setDialogTitle("Save as HTML");\r
21     chooser.setToolTipText("Save");\r
22     int value = chooser.showSaveDialog(null);\r
23     if(value == JFileChooser.APPROVE_OPTION)\r
24     {\r
25       String choice =  chooser.getSelectedFile().getPath();\r
26       jalview.bin.Cache.LAST_DIRECTORY = choice;\r
27       try{\r
28         PrintWriter out = new java.io.PrintWriter(new java.io.FileWriter(choice));\r
29         out.println("<HTML>");\r
30         out.println("<style type=\"text/css\">");\r
31         out.println("<!--");\r
32         out.println("td {font-family: \"Courier New\", Courier, mono;; font-size: medium; text-align: center; }");\r
33         out.println("-->");\r
34         out.println("</style>");\r
35         out.println("<BODY>");\r
36         out.println("<table border=\"1\"><tr><td>\n");\r
37         out.println("<table border=\"0\"  cellpadding=\"0\" cellspacing=\"0\">\n");\r
38 \r
39 \r
40         //////////////\r
41         SequenceGroup group;\r
42         SequenceI seq;\r
43         ColourSchemeI cs;\r
44         AlignmentI alignment = av.getAlignment();\r
45         String r,g,b;\r
46         for (int i = 0; i < alignment.getHeight(); i++)\r
47         {\r
48           seq = alignment.getSequenceAt(i);\r
49           group = alignment.findGroup( seq );\r
50           out.println("<tr><td>"+seq.getName()+"&nbsp;&nbsp;</td>");\r
51           for (int res = 0; res < seq.getLength(); res++)\r
52           {\r
53             if(group!=null && group.getStartRes()<=res && group.getEndRes()>=res)\r
54               cs = group.cs;\r
55             else\r
56               cs = av.getGlobalColourScheme();\r
57 \r
58             color = sr.getResidueBoxColour(cs, seq, res);\r
59 \r
60             if(color.getRGB()<-1)\r
61             {\r
62               r = Integer.toHexString(color.getRed());\r
63               if(r.length()<2)\r
64                 r = "0"+r;\r
65               g = Integer.toHexString(color.getGreen());\r
66               if(g.length()<2)\r
67                 g = "0"+g;\r
68               b = Integer.toHexString(color.getBlue());\r
69               if(b.length()<2)\r
70                 b = "0"+b;\r
71               out.println("<td bgcolor=\"#"+ r + g + b + "\">"+seq.getCharAt(res)+"</td>");\r
72             }\r
73             else\r
74               out.println("<td>"+seq.getCharAt(res)+"</td>");\r
75 \r
76           }\r
77 \r
78           out.println("</tr>");\r
79         }\r
80         //////////////\r
81         out.println("</table>");\r
82         out.println("</td></tr></table>\n</body>\n</html>");\r
83 \r
84         out.close();\r
85 \r
86         jalview.util.BrowserLauncher.openURL( choice );\r
87       }\r
88       catch(Exception ex){}\r
89     }\r
90   }\r
91 \r
92 \r
93 }\r