196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Projectpackage jdiff; 296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Projectimport java.util.*; 496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Projectimport java.io.*; 596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project/** 796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * Emit HTML files for the supporting infrastructure for the HTML report. 896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * Examples are stylesheets, help files, frame files. 996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * 1096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * See the file LICENSE.txt for copyright details. 1196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * @author Matthew Doar, mdoar@pobox.com 1296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project */ 1396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Projectpublic class HTMLFiles { 1496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 1596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project /** Constructor. */ 1696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project public HTMLFiles(HTMLReportGenerator h) { 1796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_ = h; 1896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project } 1996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 2096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project /** The HTMLReportGenerator instance used to write HTML. */ 2196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project private HTMLReportGenerator h_ = null; 2296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 2396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project /** 2496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * Emit the top-level changes.html frames file where everything starts. 2596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project */ 2696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project public void emitTopLevelFile(String tln, 2796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project APIDiff apiDiff) { 2896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project try { 2996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project FileOutputStream fos = new FileOutputStream(tln); 3096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.reportFile = new PrintWriter(fos); 3196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project // Write out the HTML header 3296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeStartHTMLHeaderWithDate(); 3396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project // Write out the title 3496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project String oldAPIName = "Old API"; 3596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project if (apiDiff.oldAPIName_ != null) 3696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project oldAPIName = apiDiff.oldAPIName_; 3796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project String newAPIName = "New API"; 3896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project if (apiDiff.newAPIName_ != null) 3996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project newAPIName = apiDiff.newAPIName_; 4096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project if (h_.windowTitle == null) 4196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeHTMLTitle("API Differences between " + oldAPIName + " and " + newAPIName); 4296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project else 4396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeHTMLTitle(h_.windowTitle); 4496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project // Note that the stylesheet is in the same directory 4596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeStyleSheetRef(true); 4696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</HEAD>"); 4796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project // Note that the top-level frame file doesn't have the BODY tag 4896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<FRAMESET COLS=\"20%,80%\">"); 4996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<frameset rows=\"196,**\">"); 5096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 5196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project // Convert filenames to web links 5296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project String tlfLink = h_.reportFileName + "/jdiff_topleftframe" + h_.reportFileExt; 5396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project String allDiffsLink = h_.reportFileName + "/alldiffs_index_all" + h_.reportFileExt; 5496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project String csnLink = h_.reportFileName + "/" + h_.reportFileName + "-summary" + h_.reportFileExt; 5596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 5696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" <FRAME SRC=\"" + tlfLink + "\" SCROLLING=\"no\" NAME=\"topleftframe\">"); 5796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" <FRAME SRC=\"" + allDiffsLink + "\" SCROLLING=\"auto\" NAME=\"bottomleftframe\">"); 5896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" </FRAMESET>"); 5996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" <FRAME SRC=\"" + csnLink + "\" SCROLLING=\"auto\" NAME=\"rightframe\">"); 6096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</FRAMESET>"); 6196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<NOFRAMES>"); 6296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<H2>"); 6396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("Frame Alert"); 6496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</H2>\n"); 6596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<P>"); 6696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client."); 6796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<BR>"); 6896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("Link to <A HREF=\"" + csnLink + "\" target=\"_top\">Non-frame version.</A>"); 6996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</NOFRAMES>"); 7096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</HTML>"); 7196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.reportFile.close(); 7296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project } catch(IOException e) { 7396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project System.out.println("IO Error while attempting to create " + tln); 7496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project System.out.println("Error: " + e.getMessage()); 7596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project System.exit(1); 7696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project } 7796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project } 7896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 7996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project /** Emit a top left frame with all the links to the index files. */ 8096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project public void emitTopLeftFile(String tlf) { 8196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project try { 8296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project FileOutputStream fos = new FileOutputStream(tlf); 8396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.reportFile = new PrintWriter(fos); 8496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeStartHTMLHeader(); 8596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeHTMLTitle("Android Diffs Index"); 8696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeStyleSheetRef(); 8796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</HEAD>"); 8896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<BODY>"); 8996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 9096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<table summary=\"Links to all index files\" BORDER=\"0\" WIDTH=\"100%\" cellspacing=\"0\" cellpadding=\"0\">"); 9196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<TR>"); 9296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" <th class=\"indexHeader\" nowrap>"); 9396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" Select a Diffs Index:</th>"); 9496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</TR>"); 9596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<TR>"); 9696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" <TD><FONT CLASS=\"indexText\" size=\"-1\"><A HREF=\"alldiffs_index_all" + h_.reportFileExt + "\" TARGET=\"bottomleftframe\">All Differences</A></FONT><br></TD>"); 9796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</TR>"); 9896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<TR>"); 9996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" <TD NOWRAP><FONT CLASS=\"indexText\" size=\"-1\"><A HREF=\"packages_index_all" + h_.reportFileExt + "\" TARGET=\"bottomleftframe\">By Package</A></FONT><br></TD>"); 10096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</TR>"); 10196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<TR>"); 10296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" <TD NOWRAP><FONT CLASS=\"indexText\" size=\"-1\"><A HREF=\"classes_index_all" + h_.reportFileExt + "\" TARGET=\"bottomleftframe\">By Class</A></FONT><br></TD>"); 10396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</TR>"); 10496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<TR>"); 10596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" <TD NOWRAP><FONT CLASS=\"indexText\" size=\"-1\"><A HREF=\"constructors_index_all" + h_.reportFileExt + "\" TARGET=\"bottomleftframe\">By Constructor</A></FONT><br></TD>"); 10696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</TR>"); 10796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<TR>"); 10896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" <TD NOWRAP><FONT CLASS=\"indexText\" size=\"-1\"><A HREF=\"methods_index_all" + h_.reportFileExt + "\" TARGET=\"bottomleftframe\">By Method</A></FONT><br></TD>"); 10996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</TR>"); 11096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<TR>"); 11196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" <TD NOWRAP><FONT CLASS=\"indexText\" size=\"-1\"><A HREF=\"fields_index_all" + h_.reportFileExt + "\" TARGET=\"bottomleftframe\">By Field</A></FONT><br></TD>"); 11296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</TR>"); 11396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</TABLE>"); 11496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 11596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeHTMLFooter(); 11696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.reportFile.close(); 11796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project } catch(IOException e) { 11896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project System.out.println("IO Error while attempting to create " + tlf); 11996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project System.out.println("Error: " + e.getMessage()); 12096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project System.exit(1); 12196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project } 12296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project } 12396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 12496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project /** Emit the help file. */ 12596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project public void emitHelp(String fullReportFileName, APIDiff apiDiff) { 12696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project String helpFileName = fullReportFileName + JDiff.DIR_SEP + "jdiff_help" + h_.reportFileExt; 12796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project try { 12896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project FileOutputStream fos = new FileOutputStream(helpFileName); 12996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.reportFile = new PrintWriter(fos); 13096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeStartHTMLHeader(); 13196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeHTMLTitle("JDiff Help"); 13296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeStyleSheetRef(); 13396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</HEAD>"); 13496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<BODY>"); 13596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project // Write a customized navigation bar for the help page 13696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<!-- Start of nav bar -->"); 13796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<TABLE summary=\"Navigation bar\" BORDER=\"0\" WIDTH=\"100%\" CELLPADDING=\"1\" CELLSPACING=\"0\">"); 13896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<TR>"); 13996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<TD COLSPAN=2 BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\">"); 14096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" <TABLE summary=\"Navigation bar\" BORDER=\"0\" CELLPADDING=\"0\" CELLSPACING=\"3\">"); 14196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" <TR ALIGN=\"center\" VALIGN=\"top\">"); 14296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project // Always have a link to the Javadoc files 14396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"" + h_.newDocPrefix + "index.html\" target=\"_top\"><FONT CLASS=\"NavBarFont1\"><B><tt>" + apiDiff.newAPIName_ + "</tt></B></FONT></A> </TD>"); 14496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"" + h_.reportFileName + "-summary" + h_.reportFileExt + "\"><FONT CLASS=\"NavBarFont1\"><B>Overview</B></FONT></A> </TD>"); 14596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <FONT CLASS=\"NavBarFont1\">Package</FONT> </TD>"); 14696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" <TD BGCOLOR=\"#FFFFFF\" CLASS=\"NavBarCell1\"> <FONT CLASS=\"NavBarFont1\">Class</FONT> </TD>"); 14796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project if (!Diff.noDocDiffs) { 14896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"" + Diff.diffFileName + "index" + h_.reportFileExt + "\"><FONT CLASS=\"NavBarFont1\"><B>Text Changes</B></FONT></A> </TD>"); 14996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project } 15096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project if (h_.doStats) { 15196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\"> <A HREF=\"jdiff_statistics" + h_.reportFileExt + "\"><FONT CLASS=\"NavBarFont1\"><B>Statistics</B></FONT></A> </TD>"); 15296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project } 15396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1Rev\"> <FONT CLASS=\"NavBarFont1Rev\"><B>Help</B></FONT> </TD>"); 15496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" </TR>"); 15596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" </TABLE>"); 15696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</TD>"); 15796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 15896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project // The right hand side title 15996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<TD ALIGN=\"right\" VALIGN=\"top\" ROWSPAN=3><EM><b>Generated by<br><a href=\"" + JDiff.jDiffLocation + "\" class=\"staysblack\" target=\"_top\">JDiff</a></b></EM></TD>"); 16096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</TR>"); 16196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 16296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project // Links for frames and no frames 16396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<TR>"); 16496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" <TD BGCOLOR=\"" + h_.bgcolor + "\" CLASS=\"NavBarCell2\"><FONT SIZE=\"-2\"></FONT>"); 16596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</TD>"); 16696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" <TD BGCOLOR=\"" + h_.bgcolor + "\" CLASS=\"NavBarCell2\"><FONT SIZE=\"-2\">"); 16796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" <A HREF=\"" + "../" + h_.reportFileName + h_.reportFileExt + "\" TARGET=\"_top\"><B>FRAMES</B></A> "); 16896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" <A HREF=\"jdiff_help" + h_.reportFileExt + "\" TARGET=\"_top\"><B>NO FRAMES</B></A></FONT></TD>"); 16996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</TR>"); 17096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 17196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</TABLE>"); 17296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<HR>"); 17396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText ("<!-- End of nav bar -->"); 17496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 17596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<center>"); 17696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<H1>JDiff Documentation</H1>"); 17796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</center>"); 17896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 17996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<BLOCKQUOTE>"); 18096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("JDiff is a <a href=\"http://java.sun.com/j2se/javadoc/\" target=\"_top\">Javadoc</a> doclet which generates a report of the API differences between two versions of a product. It does not report changes in Javadoc comments, or changes in what a class or method does. "); 18196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("This help page describes the different parts of the output from JDiff."); 18296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</BLOCKQUOTE>"); 18396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 18496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<BLOCKQUOTE>"); 18596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" See the reference page in the <a href=\"" + JDiff.jDiffLocation + "\">source for JDiff</a> for information about how to generate a report like this one."); 18696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</BLOCKQUOTE>"); 18796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 18896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<BLOCKQUOTE>"); 18996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("The indexes shown in the top-left frame help show each type of change in more detail. The index \"All Differences\" contains all the differences between the APIs, in alphabetical order. "); 19096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("These indexes all use the same format:"); 19196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<ul>"); 19296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<li>Removed packages, classes, constructors, methods and fields are <strike>struck through</strike>.</li>"); 19396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<li>Added packages, classes, constructors, methods and fields appear in <b>bold</b>.</li>"); 19496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<li>Changed packages, classes, constructors, methods and fields appear in normal text.</li>"); 19596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</ul>"); 19696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</BLOCKQUOTE>"); 19796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 19896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<BLOCKQUOTE>"); 19996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("You can always tell when you are reading a JDiff page, rather than a Javadoc page, by the color of the index bar and the color of the background. "); 20096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("Links which take you to a Javadoc page are always in a <tt>typewriter</tt> font. "); 20196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("Just like Javadoc, all interface names are in <i>italic</i>, and class names are not italicized. Where there are multiple entries in an index with the same name, the heading for them is also in italics, but is not a link."); 20296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</BLOCKQUOTE>"); 20396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 20496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<BLOCKQUOTE>"); 20596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<H3><b><tt>Javadoc</tt></b></H3>"); 20696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("This is a link to the <a href=\"" + h_.newDocPrefix + "index.html\" target=\"_top\">top-level</a> Javadoc page for the new version of the product."); 20796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</BLOCKQUOTE>"); 20896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 20996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<BLOCKQUOTE>"); 21096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<H3>Overview</H3>"); 21196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("The <a href=\"" + h_.reportFileName + "-summary" + 21296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.reportFileExt + "\">overview</a> is the top-level summary of what was removed, added and changed between versions."); 21396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</BLOCKQUOTE>"); 21496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 21596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<BLOCKQUOTE>"); 21696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<H3>Package</H3>"); 21796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("This is a link to the package containing the current changed class or interface."); 21896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</BLOCKQUOTE>"); 21996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 22096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<BLOCKQUOTE>"); 22196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<H3>Class</H3>"); 22296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("This is highlighted when you are looking at the changed class or interface."); 22396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</BLOCKQUOTE>"); 22496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 22596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<BLOCKQUOTE>"); 22696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<H3>Text Changes</H3>"); 22796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("This is a link to the top-level index of all documentation changes for the current package or class. "); 22896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("If it is not present, then there are no documentation changes for the current package or class. "); 22996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("This link can be removed entirely by not using the <code>-docchanges</code> option."); 23096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</BLOCKQUOTE>"); 23196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 23296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<BLOCKQUOTE>"); 23396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<H3>Statistics</H3>"); 23496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("This is a link to a page which shows statistics about the changes between the two APIs."); 23596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("This link can be removed entirely by not using the <code>-stats</code> option."); 23696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</BLOCKQUOTE>"); 23796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 23896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<BLOCKQUOTE>"); 23996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<H3>Help</H3>"); 24096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("A link to this Help page for JDiff."); 24196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</BLOCKQUOTE>"); 24296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 24396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<BLOCKQUOTE>"); 24496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<H3>Prev/Next</H3>"); 24596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("These links take you to the previous and next changed package or class."); 24696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</BLOCKQUOTE>"); 24796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 24896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<BLOCKQUOTE>"); 24996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<H3>Frames/No Frames</H3>"); 25096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("These links show and hide the HTML frames. All pages are available with or without frames."); 25196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</BLOCKQUOTE>"); 25296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 25396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<BLOCKQUOTE>"); 25496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("<H2>Complex Changes</H2>"); 25596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("There are some complex changes which can occur between versions, for example, when two or more methods with the same name change simultaneously, or when a method or field is moved into or from a superclass. "); 25696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("In these cases, the change will be seen as a removal and an addition, rather than as a change. Unexpected removals or additions are often part of one of these type of changes. "); 25796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("</BLOCKQUOTE>"); 25896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 25996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeHTMLFooter(); 26096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.reportFile.close(); 26196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project } catch(IOException e) { 26296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project System.out.println("IO Error while attempting to create " + helpFileName); 26396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project System.out.println("Error: " + e.getMessage()); 26496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project System.exit(1); 26596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project } 26696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project } 26796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 26896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project /** Emit the CSS external stylesheet file. */ 26996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project public void emitStylesheet() { 27096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project String stylesheetFileName = "stylesheet-jdiff.css"; 27196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project if (h_.outputDir != null) 27296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project stylesheetFileName = h_.outputDir + JDiff.DIR_SEP + stylesheetFileName; 27396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project try { 27496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project FileOutputStream fos = new FileOutputStream(stylesheetFileName); 27596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.reportFile = new PrintWriter(fos); 27696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(); 27796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("/* (" + JDiff.jDiffLocation + ") */"); 27896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText("/* on " + new Date() + " */"); 27996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(); 28096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText("/* Define colors, fonts and other style attributes here to override the defaults */"); 28196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText(); 28296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText("/* Page background color */"); 28396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText("body { background-color: " + h_.bgcolor + "; font-family: arial; }"); 28496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //First argument after backgroun: is for older Netscape browsers 28596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //For more information, see http://css.nu/pointers/bugs.html and 28696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //http://www.richinstyle.com/bugs/netscape4.html 28796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText("body { background: #CCFFFF url(background.gif); font-family: arial; }"); 28896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText(); 28996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText("/* Table colors */"); 29096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText(".TableHeadingColor { background: #CCCCFF } /* Dark mauve */"); 29196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText(".TableSubHeadingColor { background: #EEEEFF } /* Light mauve */"); 29296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText(".TableRowColor { background: #FFFFFF } /* White */"); 29396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText(); 29496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText("/* Font used in left-hand frame lists */"); 29596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText(".FrameTitleFont { font-size: normal; font-family: normal }"); 29696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText(".FrameHeadingFont { font-size: normal; font-family: normal }"); 29796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText(".FrameItemFont { font-size: normal; font-family: normal }"); 29896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText(); 29996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText("/* Example of smaller, sans-serif font in frames */"); 30096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText("/* .FrameItemFont { font-size: 10pt; font-family: Helvetica, Arial, sans-serif } */"); 30196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText(); 30296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText("/* Navigation bar fonts and colors */"); 30396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText(".NavBarCell1 { background-color:#FFFFCC;} /* Changed to yellowish to make difference from Javadoc clear */"); 30496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText(".NavBarCell1Rev { background-color:#00008B;}/* Dark Blue */"); 30596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText(".NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;}"); 30696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText(".NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;}"); 30796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText(); 30896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText(".NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}"); 30996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText(".NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}"); 31096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project //h_.writeText(); 31196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("/* "); 31296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" Links which become blue when hovered upon and show that they have been "); 31396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" visited. "); 31496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("*/"); 31596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(".hiddenlink {text-decoration:none;}"); 31696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("a.hiddenlink:link {color: black; text-decoration: none}"); 31796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("a.hiddenlink:visited {color: purple; text-decoration: none}"); 31896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("a.hiddenlink:hover {color: blue; text-decoration: underline;}"); 31996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(); 32096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("/* "); 32196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" Links which become blue when hovered upon but do not show that they have "); 32296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" been visited. "); 32396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("*/"); 32496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("a.staysblack:link {color: black; text-decoration: none}"); 32596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("a.staysblack:visited {color: black; text-decoration: none}"); 32696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("a.staysblack:hover {color: blue; text-decoration: underline;}"); 32796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(""); 32896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("div.and-diff-id {border: 1px solid #eee;position:relative;float:right;clear:both;padding:0px;}"); 32996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("table.diffspectable {border:1px;padding:0px;margin:0px;}"); 33096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(".diffspectable tr {border:0px;padding:0px;}"); 33196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(".diffspectable td {background-color:eee;border:0px;font-size:90%;font-weight:normal;padding:0px;padding-left:1px;padding-right:1px;text-align:center;color:777;}"); 33296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("td.diffvalueold {color:orange;background-color:white;border:0px;font-size:80%;font-style:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;}"); 33396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("td.diffvaluenew {color:green;background-color:white;border:0px;font-size:80%;font-weight:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;}"); 33496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("td.diffvalue {color:444;background-color:white;border:0px;font-size:80%;font-weight:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;}"); 33596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("td.diffspec {background-color:white;border:0px;font-size:80%;font-weight:normal;padding:1px;color:444;text-align:right;padding-right:.5em;line-height:.95em;}"); 33696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("tt {font-size:11pt;font-family:monospace;}"); 33796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("code {font-size:11pt;font-family:monospace;}"); 33896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(".indexHeader {font-size:11pt;line-height:.8em;}"); 33996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(".indexText {font-size:9pt;line-height:.8em;padding-left:1em;}"); 34096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 34196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(".pagecontenth1 {"); 34296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" line-height: 130%;"); 34396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" font-size: 170%;"); 34496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" xmargin: 0 0 0 -10px;"); 34596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" padding: .8em 0 0;"); 34696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" border: none;"); 34796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" background: none;"); 34896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("}"); 34996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(""); 35096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(".pagecontenth2 {"); 35196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" font-size: 130%;"); 35296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" font-weight: bold;"); 35396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" margin: 2em 0 0 -10px; "); 35496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" padding: 1px 3px;"); 35596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" position: relative;"); 35696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" border-top: 1px solid #3366CC;"); 35796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText(" background-color: #e5ecf9;"); 35896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.writeText("}"); 35996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project h_.reportFile.close(); 36096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 36196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project } catch(IOException e) { 36296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project System.out.println("IO Error while attempting to create " + stylesheetFileName); 36396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project System.out.println("Error: " + e.getMessage()); 36496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project System.exit(1); 36596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project } 36696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project } 36796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project 36896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project} 369