+ if (av.getWrapAlignment())\r
+ {\r
+ drawWrappedAlignment(out);\r
+ }\r
+ else\r
+ {\r
+ drawUnwrappedAlignment(out);\r
+ }\r
+\r
+ out.println("\n</body>\n</html>");\r
+ out.close();\r
+ jalview.util.BrowserLauncher.openURL("file:///" + choice);\r
+ }\r
+ catch (Exception ex)\r
+ {\r
+ ex.printStackTrace();\r
+ }\r
+ }\r
+ }\r
+\r
+ void drawUnwrappedAlignment(PrintWriter out)\r
+ {\r
+ out.println("<table border=\"1\"><tr><td>\n");\r
+ out.println(\r
+ "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n");\r
+\r
+ //////////////\r
+ SequenceI seq;\r
+ AlignmentI alignment = av.getAlignment();\r
+\r
+ // draws the top row, the measure rule\r
+ out.println("<tr><td colspan=\"6\"></td>");\r
+\r
+ int i = 0;\r
+\r
+ for (i = 10; i < (alignment.getWidth() - 10); i += 10)\r
+ {\r
+ out.println("<td colspan=\"9\">" + i + "<br>|</td><td></td>");\r
+ }\r
+\r
+ out.println("<td colspan=\"3\"></td><td colspan=\"3\">" + i +\r
+ "<br>|</td>");\r
+ out.println("</tr>");\r
+\r
+ for (i = 0; i < alignment.getHeight(); i++)\r
+ {\r
+ seq = alignment.getSequenceAt(i);\r
+\r
+ String id = seq.getDisplayId(av.getShowJVSuffix());\r
+\r
+ out.println("<tr><td nowrap>" + id +\r
+ " </td>");\r
+\r
+\r
+ for (int res = 0; res < seq.getLength(); res++)\r
+ {\r
+\r
+ color = sr.findSequenceColour(Color.white, seq, res);\r
+\r
+ color = fr.findFeatureColour(color, seq, res);\r
+\r
+ if (color.getRGB() < -1)\r
+ {\r
+ out.println("<td bgcolor=\"#" +\r
+ jalview.util.Format.getHexString(color) + "\">" +\r
+ seq.getCharAt(res) + "</td>");\r
+ }\r
+ else\r
+ {\r
+ out.println("<td>" + seq.getCharAt(res) + "</td>");\r
+ }\r
+ }\r
+\r
+ out.println("</tr>");\r
+ }\r
+\r
+ //////////////\r
+ out.println("</table>");\r
+ out.println("</td></tr></table>");\r
+ }\r
+\r
+ void drawWrappedAlignment(PrintWriter out)\r
+ {\r
+ ////////////////////////////////////\r
+ /// How many sequences and residues can we fit on a printable page?\r
+ AlignmentI al = av.getAlignment();\r
+ SequenceI seq;\r
+ String r;\r
+ String g;\r
+ String b;\r
+\r
+ out.println("<table border=\"1\"><tr><td>\n");\r
+ out.println(\r
+ "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n");\r
+\r
+ for (int startRes = 0; startRes < al.getWidth();\r
+ startRes += av.getWrappedWidth())\r
+ {\r
+ int endRes = startRes + av.getWrappedWidth();\r
+\r
+ if (endRes > al.getWidth())\r
+ {\r
+ endRes = al.getWidth();\r
+ }\r
+\r
+ if(av.getScaleAboveWrapped())\r
+ {\r
+ out.println("<tr>");\r
+\r
+ if (av.getScaleLeftWrapped())\r
+ out.println("<td colspan=\"7\"> </td>");\r
+ else\r
+ out.println("<td colspan=\"6\"> </td>");\r
+\r
+\r
+ for (int i = startRes + 10; i < endRes; i += 10)\r
+ {\r
+ out.println("<td colspan=\"9\">" + i + "<br>|</td><td></td>");\r
+ }\r
+\r
+ out.println("</tr>");\r
+ }\r
+\r
+ int startPos, endPos;\r
+ for (int s = 0; s < al.getHeight(); s++)\r
+ {\r
+ out.println("<tr>");\r
+ seq = al.getSequenceAt(s);\r
+\r
+ startPos = seq.findPosition( startRes );\r
+ endPos = seq.findPosition( endRes )-1;\r
+\r
+ String id = seq.getDisplayId(av.getShowJVSuffix());\r
+\r
+ out.println("<td nowrap>" + id +\r
+ " </td>");\r
+\r
+\r
+ if(av.getScaleLeftWrapped())\r
+ {\r
+ if(startPos > seq.getEnd() || endPos==0)\r
+ out.println("<td nowrap> </td>");\r
+ else\r
+ out.println("<td nowrap>" + startPos +\r
+ " </td>");\r
+ }\r