Updated SOYC dashboard styling.
Review by: spoon
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@6602 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/soyc/MakeTopLevelHtmlForPerm.java b/dev/core/src/com/google/gwt/soyc/MakeTopLevelHtmlForPerm.java
index 0f9354a..298192c 100644
--- a/dev/core/src/com/google/gwt/soyc/MakeTopLevelHtmlForPerm.java
+++ b/dev/core/src/com/google/gwt/soyc/MakeTopLevelHtmlForPerm.java
@@ -116,58 +116,82 @@
Map<String, String> allPermsInfo, OutputDirectory outDir)
throws IOException {
PrintWriter outFile = new PrintWriter(outDir.getOutputStream("index.html"));
- addStandardHtmlProlog(outFile, "Compile report", "Overview of permutations");
- outFile.println("<div style='overflow:auto; background-color:white'>");
- outFile.println("<center>");
+ addStandardHtmlProlog(outFile, "Compile report", "Compile report",
+ "Overview of permutations");
+ outFile.println("<ul>");
for (String permutationId : allPermsInfo.keySet()) {
String permutationInfo = allPermsInfo.get(permutationId);
- outFile.print("<p><a href=\"SoycDashboard" + "-" + permutationId
+ outFile.print("<li><a href=\"SoycDashboard" + "-" + permutationId
+ "-index.html\">Permutation " + permutationId);
if (permutationInfo.length() > 0) {
- outFile.println(" (" + permutationInfo + ")" + "</a>");
+ outFile.println(" (" + permutationInfo + ")" + "</a></li>");
} else {
outFile.println("</a>");
}
}
- outFile.println("</center>");
+ outFile.println("</ul>");
addStandardHtmlEnding(outFile);
outFile.close();
}
+ private static void addSmallHtmlProlog(final PrintWriter outFile, String title) {
+ outFile.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"");
+ outFile.println("\"http://www.w3.org/TR/html4/strict.dtd\">");
+ outFile.println("<html>");
+ outFile.println("<head>");
+ outFile.println("<title>");
+ outFile.println(title);
+ outFile.println("</title>");
+ outFile.println("<style type=\"text/css\" media=\"screen\">");
+ outFile.println("@import url('goog.css');");
+ outFile.println("@import url('inlay.css');");
+ outFile.println("@import url('soyc.css');");
+ outFile.println("</style>");
+ outFile.println("</head>");
+ }
+
private static void addStandardHtmlEnding(final PrintWriter out) {
out.println("</div>");
out.println("</body>");
out.println("</html>");
}
- private static void addStandardHtmlProlog(final PrintWriter outFile, String header,
- String barText) {
+ private static void addStandardHtmlProlog(final PrintWriter outFile,
+ String title, String header1, String header2) {
outFile.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"");
outFile.println("\"http://www.w3.org/TR/html4/strict.dtd\">");
outFile.println("<html>");
outFile.println("<head>");
- if ((header != null) && (header.compareTo("") != 0)) {
- outFile.println("<title>" + header + "</title>");
- } else {
- outFile.println("<title/>");
- }
- outFile.println("<meta http-equiv=\"content-type\" content=\"text/html;chars et=ISO-8859-1\">");
- outFile.println("<link rel=\"stylesheet\" href=\"soycStyling.css\" media=\"screen\">");
+ outFile.println("<title>");
+ outFile.println(title);
+ outFile.println("</title>");
+ outFile.println("<style type=\"text/css\" media=\"screen\">");
+ outFile.println("@import url('goog.css');");
+ outFile.println("@import url('inlay.css');");
+ outFile.println("@import url('soyc.css');");
+ outFile.println("</style>");
outFile.println("</head>");
- outFile.println("<body> ");
- outFile.println("<div>");
- outFile.println("<h2 id='header'>");
- outFile.println("<img id='logo' src=\"http://code.google.com/webtoolkit/images/gwt-logo.png\"/>");
- outFile.println(header);
- outFile.println("</h2>");
+ outFile.println("<body>");
+ outFile.println("<div class=\"g-doc\">");
+ outFile.println("<div id=\"hd\" class=\"g-section g-tpl-50-50 g-split\">");
+ outFile.println("<div class=\"g-unit g-first\">");
+ outFile.println("<p>");
+ outFile.println("<a href=\"index.html\" id=\"gwt-logo\" class=\"soyc-ir\"><span>Google Web Toolkit</span></a>");
+ outFile.println("</p>");
outFile.println("</div>");
- if ((barText != null) && (barText.compareTo("") != 0)) {
- outFile.println("<div id=\"topBar\">");
- outFile.println(barText);
- outFile.println("</div>");
- } else {
- outFile.println("<div id=\"topBar\"><br></div>");
- }
+ outFile.println("<div class=\"g-unit\">");
+ outFile.println("</div>");
+ outFile.println("</div>");
+ outFile.println("<div id=\"soyc-appbar-lrg\">");
+ outFile.println("<div class=\"g-section g-tpl-75-25 g-split\">");
+ outFile.println("<div class=\"g-unit g-first\">");
+ outFile.println("<h1>" + header1 + "</h1>");
+ outFile.println("</div>");
+ outFile.println("<div class=\"g-unit\"></div>");
+ outFile.println("</div>");
+ outFile.println("</div>");
+ outFile.println("<div id=\"bd\">");
+ outFile.println("<h2>" + header2 + "</h2>");
}
private static String classesInPackageFileName(SizeBreakdown breakdown,
@@ -210,65 +234,29 @@
this.outDir = outDir;
}
- /**
- * Adds a header line indicating which breakdown is being analyzed.
- */
- private void addHeaderWithBreakdownContext(SizeBreakdown breakdown,
- final PrintWriter outFile, String header) {
- addStandardHtmlProlog(outFile, header, headerLineForBreakdown(breakdown));
- }
-
public void makeBreakdownShell(SizeBreakdown breakdown) throws IOException {
Map<String, CodeCollection> nameToCodeColl = breakdown.nameToCodeColl;
Map<String, LiteralsCollection> nameToLitColl = breakdown.nameToLitColl;
+ String packageBreakdownFileName = makePackageHtml(breakdown);
+ String codeTypeBreakdownFileName = makeCodeTypeHtml(breakdown,
+ nameToCodeColl, nameToLitColl);
PrintWriter outFile = new PrintWriter(getOutFile(shellFileName(breakdown,
getPermutationId())));
- outFile.println("<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">");
- outFile.println("<html>");
- outFile.println("<head>");
- outFile.println(" <title>Story of Your Compile - Top Level Dashboard for Permutation</title>");
- outFile.println(" <link rel=\"stylesheet\" href=\"soycStyling.css\">");
- outFile.println("</head>");
+ addStandardHtmlProlog(outFile, "Application breakdown analysis",
+ "Application breakdown analysis", "");
- outFile.println("<body>");
- outFile.println("<div class='abs mainHeader'>");
-
- outFile.println("<center>");
- outFile.println("<h3>Story of Your Compile Dashboard</h3>");
-
- addHeaderWithBreakdownContext(breakdown, outFile, "Compile report");
-
- outFile.println("</center>");
-
- outFile.println("<hr>");
+ outFile.println("<div id=\"bd\"> ");
+ outFile.println("<h2>Package breakdown</h2>");
+ outFile.println("<iframe class='soyc-iframe-package' src=\""
+ + packageBreakdownFileName + "\" scrolling=auto></iframe>");
+ outFile.println("<h2>Code type breakdown</h2>");
+ outFile.println("<iframe class='soyc-iframe-code' src=\""
+ + codeTypeBreakdownFileName + "\" scrolling=auto></iframe>");
outFile.println("</div>");
- outFile.println("<div class='abs mainContent' style='overflow:auto'>");
- outFile.println("<div class='abs packages'>");
-
- outFile.println("<div class='abs header'>Package breakdown</div>");
- outFile.println("<div class='abs innerContent'>");
- String packageBreakdownFileName = makePackageHtml(breakdown);
- outFile.println(" <iframe class='frame' src=\"" + packageBreakdownFileName
- + "\" scrolling=auto></iframe>");
- outFile.println("</div>");
- outFile.println("</div>");
-
- outFile.println("<div class='abs codeType'>");
- outFile.println("<div class='abs header'>Code type breakdown</div>");
-
- outFile.println("<div class='abs innerContent'>");
- String codeTypeBreakdownFileName = makeCodeTypeHtml(breakdown,
- nameToCodeColl, nameToLitColl);
- outFile.println("<iframe class='frame' src=\"" + codeTypeBreakdownFileName
- + "\" scrolling=auto></iframe>");
- outFile.println("</div>");
- outFile.println("</div>");
- outFile.println("</div>");
- outFile.println("</body>");
- outFile.println("</html>");
+ addStandardHtmlEnding(outFile);
outFile.close();
}
@@ -282,58 +270,50 @@
String outFileName = breakdown.getId() + "_" + codeType + "-"
+ getPermutationId() + "Classes.html";
- float maxSize = 0f;
+ float sumSize = 0f;
TreeMap<Float, String> sortedClasses = new TreeMap<Float, String>(
Collections.reverseOrder());
for (String className : nameToCodeColl.get(codeType).classes) {
if (breakdown.classToSize.containsKey(className)) {
-
float curSize = 0f;
if (breakdown.classToSize.containsKey(className)) {
curSize = breakdown.classToSize.get(className);
}
-
if (curSize != 0f) {
sortedClasses.put(curSize, className);
- if (curSize > maxSize) {
- maxSize = curSize;
- }
+ sumSize += curSize;
}
}
}
final PrintWriter outFile = new PrintWriter(getOutFile(outFileName));
- addHeaderWithBreakdownContext(breakdown, outFile, "Classes in package "
- + codeType);
- outFile.println("<hr>");
- outFile.println("</div>");
- outFile.println("<div class='abs mainContent' style='overflow:auto'>");
- outFile.println("<table style='width:100%'>");
+ addStandardHtmlProlog(outFile, "Classes in package " + codeType,
+ "Classes in package " + codeType, headerLineForBreakdown(breakdown));
+ outFile.println("<table class=\"soyc-table\">");
+ outFile.println("<colgroup>");
+ outFile.println("<col id=\"soyc-splitpoint-type-col\">");
+ outFile.println("<col id=\"soyc-splitpoint-size-col\">");
+ outFile.println("</colgroup>");
outFile.println("<thead>");
- outFile.println("<th class='barlabel'>Size</th>");
- outFile.println("<th class='barlabel'></th>");
- outFile.println("<th style='width:100%' class='barlabel'></th>");
+ outFile.println("<th>Code type</th>");
+ outFile.println("<th>Size <span class=\"soyc-th-units\">Bytes (% All Code)</span></th>");
outFile.println("</thead>");
for (Float size : sortedClasses.keySet()) {
-
String className = sortedClasses.get(size);
- float ratio = (size / maxSize) * 85;
- if (ratio < 1) {
- ratio = 1;
- }
+ float perc = (size / sumSize) * 100;
outFile.println("<tr>");
- outFile.println("<td class=\"barlabel\">" + size + "</td>");
- outFile.println("<td class=\"barlabel\">" + className + "</td>");
- outFile.println("<td class=\"box\">");
- outFile.println("<div style=\"width:"
- + ratio
- + "%;\" class=\"lb\"><div class=\"rb\"><div class=\"bb\"><div class=\"blc\"><div class=\"brc\"><div class=\"tb\"><div class=\"tlc\"><div class=\"trc\"><div class=\"content\"></div></div></div></div></div></div></div></div>");
+ outFile.println("<td>" + className + "</a></td>");
+ outFile.println("<td>");
+ outFile.println("<div class=\"soyc-bar-graph goog-inline-block\">");
+ outFile.println("<div style=\"width:" + perc
+ + "%;\" class=\"soyc-bar-graph-fill goog-inline-block\"></div>");
+ outFile.println("</div>");
+ outFile.println(size + " (" + formatNumber(perc) + "%)");
outFile.println("</td>");
outFile.println("</tr>");
}
-
addStandardHtmlEnding(outFile);
outFile.close();
}
@@ -355,45 +335,24 @@
public void makeLiteralsClassesTableHtmls(SizeBreakdown breakdown)
throws IOException {
Map<String, LiteralsCollection> nameToLitColl = breakdown.nameToLitColl;
-
for (String literalType : nameToLitColl.keySet()) {
-
String outFileName = literalType + "-" + getPermutationId() + "Lits.html";
final PrintWriter outFile = new PrintWriter(getOutFile(breakdown.getId()
+ "_" + outFileName));
- addHeaderWithBreakdownContext(breakdown, outFile, "Literals of type "
- + literalType);
- outFile.println("<center>");
- outFile.println("<table border=\"1\" width=\"80%\" style=\"font-size: 11pt;\" bgcolor=\"white\">");
-
+ addStandardHtmlProlog(outFile, "Literals of type " + literalType,
+ "Literals of type " + literalType, headerLineForBreakdown(breakdown));
+ outFile.println("<table width=\"80%\" style=\"font-size: 11pt;\" bgcolor=\"white\">");
for (String literal : nameToLitColl.get(literalType).literals) {
- String newLiteral = "";
- if (literal.length() > 80) {
- int i;
- for (i = 80; i < literal.length(); i = i + 80) {
- String part1 = literal.substring(i - 80, i);
- newLiteral = newLiteral + part1 + " ";
- }
- if (i - 80 > 0) {
- newLiteral = newLiteral + literal.substring(i - 80);
- }
- } else {
- newLiteral = literal;
+ if (literal.trim().length() == 0) {
+ literal = "[whitespace only string]";
}
-
- if (newLiteral.trim().length() == 0) {
- newLiteral = "[whitespace only string]";
- }
- String escliteral = escapeXml(newLiteral);
-
+ String escliteral = escapeXml(literal);
outFile.println("<tr>");
outFile.println("<td>" + escliteral + "</td>");
outFile.println("</tr>");
}
-
outFile.println("</table>");
outFile.println("<center>");
-
addStandardHtmlEnding(outFile);
outFile.close();
}
@@ -407,7 +366,6 @@
for (String packageName : globalInformation.getPackageToClasses().keySet()) {
TreeMap<Float, String> sortedClasses = new TreeMap<Float, String>(
Collections.reverseOrder());
- float maxSize = 0f;
float sumSize = 0f;
for (String className : globalInformation.getPackageToClasses().get(
packageName)) {
@@ -417,13 +375,9 @@
} else {
curSize = breakdown.classToSize.get(className);
}
-
if (curSize != 0f) {
sumSize += curSize;
sortedClasses.put(curSize, className);
- if (curSize > maxSize) {
- maxSize = curSize;
- }
}
}
@@ -431,46 +385,41 @@
getOutFile(classesInPackageFileName(breakdown, packageName,
getPermutationId())));
- addHeaderWithBreakdownContext(breakdown, outFile, "Classes in package "
- + packageName);
- outFile.println("<hr>");
- outFile.println("</div>");
- outFile.println("<div class='abs mainContent' style='overflow:auto'>");
- outFile.println("<table style='width:100%'>");
+ addStandardHtmlProlog(outFile, "Classes in package " + packageName,
+ "Classes in package " + packageName,
+ headerLineForBreakdown(breakdown));
+ outFile.println("<table class=\"soyc-table\">");
+ outFile.println("<colgroup>");
+ outFile.println("<col id=\"soyc-splitpoint-type-col\">");
+ outFile.println("<col id=\"soyc-splitpoint-size-col\">");
+ outFile.println("</colgroup>");
outFile.println("<thead>");
- outFile.println("<th class='barlabel'>Size</th>");
- outFile.println("<th class='barlabel'>Percentage</th>");
- outFile.println("<th class='barlabel'></th>");
- outFile.println("<th style='width:100%' class='barlabel'></th>");
+ outFile.println("<th>Package</th>");
+ outFile.println("<th>Size <span class=\"soyc-th-units\">Bytes (% All Code)</span></th>");
outFile.println("</thead>");
for (Float size : sortedClasses.keySet()) {
String className = sortedClasses.get(size);
- float ratio = (size / maxSize) * 85;
- if (ratio < 1) {
- ratio = 1;
- }
+ String drillDownFileName = depLinker.dependencyLinkForClass(className);
float perc = (size / sumSize) * 100;
-
- String dependencyLink = depLinker.dependencyLinkForClass(className);
outFile.println("<tr>");
- outFile.println("<td class=\"barlabel\">" + size + "</td>");
- outFile.println("<td class=\"barlabel\">" + formatNumber(perc)
- + "%</td>");
- if (dependencyLink != null) {
- outFile.println("<td class=\"barlabel\"><a href=\"" + dependencyLink
- + "\" target=\"_top\">" + className + "</a></td>");
+ if (drillDownFileName == null) {
+ outFile.println("<td>" + className + "</td>");
} else {
- outFile.println("<td class=\"barlabel\">" + className + "</td>");
+ outFile.println("<td><a href=\"" + drillDownFileName
+ + "\" target=\"_top\">" + className + "</a></td>");
}
- outFile.println("<td class=\"box\">");
- outFile.println(" <div style=\"width:" + ratio
- + "%;\" class=\"sizebar\"/>");
+ outFile.println("<td>");
+ outFile.println("<div class=\"soyc-bar-graph goog-inline-block\">");
+ outFile.println("<div style=\"width:" + perc
+ + "%;\" class=\"soyc-bar-graph-fill goog-inline-block\"></div>");
+ outFile.println("</div>");
+ outFile.println(size + " (" + formatNumber(perc) + "%)");
outFile.println("</td>");
outFile.println("</tr>");
}
+
outFile.println("</table>");
- outFile.println("</div>");
addStandardHtmlEnding(outFile);
outFile.close();
}
@@ -483,117 +432,122 @@
}
public void makeTopLevelShell() throws IOException {
-
+
String permutationId = getPermutationId();
PrintWriter outFile = new PrintWriter(getOutFile("SoycDashboard" + "-"
+ getPermutationId() + "-index.html"));
-
- addStandardHtmlProlog(outFile, "Compile report", "Permutation "
- + permutationId);
+ addStandardHtmlProlog(outFile, "Compile report: Permutation "
+ + permutationId, "Compile report: Permutation " + permutationId, "");
+
+ outFile.println("<div id=\"bd\">");
+ outFile.println("<div id=\"soyc-summary\" class=\"g-section\">");
+ outFile.println("<dl>");
+ outFile.println("<dt>Full code size</dt>");
+ outFile.println("<dd class=\"value\">"
+ + globalInformation.getInitialCodeBreakdown().sizeAllCode
+ + " Bytes</dd>");
+ outFile.println("<dd class=\"report\"><a href=\"total-" + permutationId
+ + "-overallBreakdown.html\">Report</a></dd>");
+
+ outFile.println("</dl>");
+ outFile.println("<dl>");
+ outFile.println("<dt>Initial download size</dt>");
+ // TODO(kprobst) -- add percentage here: (48%)</dd>");
+ outFile.println("<dd class=\"value\">"
+ + globalInformation.getTotalCodeBreakdown().sizeAllCode + " Bytes</dd>");
+ outFile.println("<dd class=\"report\"><a href=\"initial-" + permutationId
+ + "-overallBreakdown.html\">Report</a></dd>");
+ outFile.println("</dl>");
+ outFile.println("<dl>");
+
+ outFile.println("<dt>Left over code</dt>");
+ outFile.println("<dd class=\"value\">"
+ + globalInformation.getLeftoversBreakdown().sizeAllCode + " Bytes</dd>");
+ outFile.println("<dd class=\"report\"><a href=\"leftovers-" + permutationId
+ + "-overallBreakdown.html\">Report</a></dd>");
+ outFile.println("</dl>");
+ outFile.println("</div>");
+ outFile.println("<table id=\"soyc-table-splitpoints\" class=\"soyc-table\">");
+ outFile.println("<caption>");
+
+ outFile.println("<strong>Split Points</strong>");
+ outFile.println("</caption>");
+ outFile.println("<colgroup>");
+ outFile.println("<col id=\"soyc-splitpoint-number-col\">");
+ outFile.println("<col id=\"soyc-splitpoint-location-col\">");
+ outFile.println("<col id=\"soyc-splitpoint-size-col\">");
+ outFile.println("</colgroup>");
+ outFile.println("<thead>");
+
+ outFile.println("<th>#</th>");
+ outFile.println("<th>Location</th>");
+ outFile.println("<th>Size</th>");
+ outFile.println("</thead>");
+ outFile.println("<tbody>");
if (globalInformation.getSplitPointToLocation().size() > 1) {
- outFile.println("<b>Initial download size: <span style=\"color:maroon\">"
- + globalInformation.getInitialCodeBreakdown().sizeAllCode
- + "</span></span></b>");
- }
- outFile.println("<b>Full code size: <span style=\"color:maroon\">"
- + globalInformation.getTotalCodeBreakdown().sizeAllCode
- + "</span></span></b>");
- outFile.println("<hr>");
- outFile.println("</div>");
+ int numSplitPoints = globalInformation.getSplitPointToLocation().size();
+ float maxSize = globalInformation.getTotalCodeBreakdown().sizeAllCode;
- outFile.println("<div class='abs mainContent' style=\"overflow: auto\" >");
- outFile.println("<table style='width:100%'>");
- outFile.println("<thead>");
- outFile.println("<th class='barlabel'>Size</th>");
- outFile.println("<th class='barlabel'>Percentage</th>");
- outFile.println("<th class='barlabel'></th>");
- outFile.println("<th style='width:100%' class='barlabel'></th>");
- outFile.println("</thead>");
+ for (int i = FRAGMENT_NUMBER_TOTAL_PROGRAM; i <= numSplitPoints + 1; i++) {
+ SizeBreakdown breakdown;
+ if (i == FRAGMENT_NUMBER_TOTAL_PROGRAM) {
+ continue;
+ } else if (i == numSplitPoints + 1) { // leftovers
+ continue;
+ } else if (i == FRAGMENT_NUMBER_INITIAL_DOWNLOAD) {
+ continue;
+ } else {
+ breakdown = globalInformation.splitPointCodeBreakdown(i);
+ }
- int numSplitPoints = globalInformation.getSplitPointToLocation().size();
+ String drillDownFileName = shellFileName(breakdown, getPermutationId());
+ String splitPointDescription = globalInformation.getSplitPointToLocation().get(
+ i);
- int numRows = 2;
- if (numSplitPoints > 0) {
- // add one for the leftovers fragment
- numRows += numSplitPoints + 1;
- }
- int outerHeight = 25 * numRows;
- outFile.println("<div style=\"width:100%; margin:20px 0 20px 0; background-color:white;position:relative;height:"
- + outerHeight + "\">");
- float maxSize = globalInformation.getTotalCodeBreakdown().sizeAllCode;
+ float size = breakdown.sizeAllCode;
+ float ratio;
+ ratio = (size / maxSize) * 100;
- for (int i = FRAGMENT_NUMBER_TOTAL_PROGRAM; i <= numSplitPoints + 1; i++) {
- if (i == 1 && numSplitPoints == 0) {
- // don't show the leftovers fragment if the split points aren't known
- continue;
- }
-
- SizeBreakdown breakdown;
- if (i == FRAGMENT_NUMBER_TOTAL_PROGRAM) {
- breakdown = globalInformation.getTotalCodeBreakdown();
- } else if (i == numSplitPoints + 1) {
- breakdown = globalInformation.getLeftoversBreakdown();
- } else if (i == FRAGMENT_NUMBER_INITIAL_DOWNLOAD) {
- breakdown = globalInformation.getInitialCodeBreakdown();
- } else {
- breakdown = globalInformation.splitPointCodeBreakdown(i);
- }
-
- String drillDownFileName = shellFileName(breakdown, getPermutationId());
- String splitPointDescription = breakdown.getDescription();
-
- float size = breakdown.sizeAllCode;
- float ratio;
- if (globalInformation.getInitialCodeBreakdown().sizeAllCode > 0) {
- ratio = (size / globalInformation.getInitialCodeBreakdown().sizeAllCode) * 79;
- } else {
- ratio = (size / maxSize) * 79;
- }
- if (ratio < 1) {
- ratio = 1;
- }
- float perc = (size / maxSize) * 100;
-
- outFile.println("<tr>");
- outFile.println("<td class=\"barlabel\">" + size + "</td>");
- outFile.println("<td class=\"barlabel\">" + formatNumber(perc) + "%</td>");
- outFile.println("<td class=\"barlabel\"><a href=\"" + drillDownFileName
- + "\" target=\"_top\">" + splitPointDescription + "</a></td>");
- outFile.println("<td class=\"box\">");
- if (splitPointDescription.compareTo("Total program") != 0) {
+ outFile.println("<tr>");
+ outFile.println("<td>" + i + "</td>");
+ outFile.println("<td><a href=\"" + drillDownFileName + "\">"
+ + splitPointDescription + "</a></td>");
+ outFile.println("<td>");
+ outFile.println("<div class=\"soyc-bar-graph goog-inline-block\">");
outFile.println("<div style=\"width:" + ratio
- + "%;\" class=\"sizebar\"/>");
+ + "%;\" class=\"soyc-bar-graph-fill goog-inline-block\"></div>");
+ outFile.println("</div>");
+ outFile.println((int) size + " Bytes (" + formatNumber(ratio) + "%)");
+ outFile.println("</td>");
+ outFile.println("</tr>");
}
- outFile.println("</td>");
- outFile.println("</tr>");
}
+ outFile.println("</tbody>");
+ outFile.println("</table>");
outFile.println("</div>");
- outFile.println("</body></html>");
+ addStandardHtmlEnding(outFile);
outFile.close();
}
- private void addDependenciesHtmlProlog(final PrintWriter out, String title,
- String header) {
- addStandardHtmlProlog(out, title, header);
- }
-
private void addLefttoversStatus(String className, String packageName,
- PrintWriter out) {
+ PrintWriter outFile) {
+ outFile.println("<ul class=\"soyc-exclusive\">");
if (globalInformation.dependencies != null) {
- out.println("<tr><td> <a href=\""
+ outFile.println("<li><a href=\""
+ dependenciesFileName("total", packageName) + "#" + className
- + "\">See why it's live</a></td></tr>");
+ + "\">See why it's live</a></li>");
for (int sp = 1; sp <= globalInformation.getNumSplitPoints(); sp++) {
- out.println("<tr><td> <a href=\""
+ outFile.println("<li><a href=\""
+ dependenciesFileName("sp" + sp, packageName) + "#" + className
+ "\">See why it's not exclusive to s.p. #" + sp + " ("
+ globalInformation.getSplitPointToLocation().get(sp)
- + ")</a></td></tr>");
+ + ")</a></li>");
}
}
+ outFile.println("</ul>");
}
/**
@@ -624,7 +578,7 @@
}
/**
- * @return
+ * @return the ID for the current permutation
*/
private String getPermutationId() {
return globalInformation.getPermutationId();
@@ -691,8 +645,7 @@
Map<String, CodeCollection> nameToCodeColl,
Map<String, LiteralsCollection> nameToLitColl) throws IOException {
String outFileName = breakdown.getId() + "-" + getPermutationId()
- + "_codeTypeBreakdown.html";
- float maxSize = 0f;
+ + "-codeTypeBreakdown.html";
float sumSize = 0f;
TreeMap<Float, String> sortedCodeTypes = new TreeMap<Float, String>(
Collections.reverseOrder());
@@ -700,116 +653,70 @@
for (String codeType : nameToCodeColl.keySet()) {
float curSize = nameToCodeColl.get(codeType).getCumPartialSize(breakdown);
sumSize += curSize;
-
if (curSize != 0f) {
sortedCodeTypes.put(curSize, codeType);
- if (curSize > maxSize) {
- maxSize = curSize;
- }
}
}
final PrintWriter outFile = new PrintWriter(getOutFile(outFileName));
+ addSmallHtmlProlog(outFile, "Code breakdown");
+ outFile.println("<body class=\"soyc-breakdown\">");
+ outFile.println("<div class=\"g-doc\">");
- outFile.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"");
- outFile.println("\"http://www.w3.org/TR/html4/strict.dtd\">");
- outFile.println("<html>");
- outFile.println("<head>");
- outFile.println("<meta http-equiv=\"content-type\" content=\"text/html;charset=ISO-8859-1\">");
- outFile.println("<link rel=\"stylesheet\" href=\"soycStyling.css\" media=\"screen\">");
- outFile.println("</head>");
-
- outFile.println("<body>");
- outFile.println("<table style='width:100%'>");
+ outFile.println("<table class=\"soyc-table\">");
+ outFile.println("<colgroup>");
+ outFile.println("<col id=\"soyc-splitpoint-type-col\">");
+ outFile.println("<col id=\"soyc-splitpoint-size-col\">");
+ outFile.println("</colgroup>");
outFile.println("<thead>");
- outFile.println("<th class='barlabel'>Size</th>");
-
- outFile.println("<th class='barlabel'>Percentage</th>");
- outFile.println("<th class='barlabel'></th>");
- outFile.println("<th style='width:100%' class='barlabel'></th>");
+ outFile.println("<th>Type</th>");
+ outFile.println("<th>Size</th>");
outFile.println("</thead>");
for (Float size : sortedCodeTypes.keySet()) {
-
String codeType = sortedCodeTypes.get(size);
String drillDownFileName = breakdown.getId() + "_" + codeType + "-"
+ getPermutationId() + "Classes.html";
-
- float ratio = (size / maxSize) * 79;
float perc = (size / sumSize) * 100;
-
- if (ratio < 5) {
- ratio = 5;
- }
-
outFile.println("<tr>");
- outFile.println("<td class=\"barlabel\">" + size + "</td>");
- outFile.println("<td class=\"barlabel\">" + formatNumber(perc) + "%</td>");
- outFile.println("<td class=\"barlabel\"><a href=\"" + drillDownFileName
+ outFile.println("<td><a href=\"" + drillDownFileName
+ "\" target=\"_top\">" + codeType + "</a></td>");
- outFile.println("<td class=\"box\">");
- outFile.println("<div style=\"width:" + ratio
- + "%;\" class=\"sizebar\"/>");
+ outFile.println("<td>");
+ outFile.println("<div class=\"soyc-bar-graph goog-inline-block\">");
+ outFile.println("<div style=\"width:" + perc
+ + "%;\" class=\"soyc-bar-graph-fill goog-inline-block\"></div>");
+ outFile.println("</div>");
+ outFile.println(size + " (" + formatNumber(perc) + "%)");
outFile.println("</td>");
outFile.println("</tr>");
}
+ outFile.println("</table>");
- maxSize = 0f;
- sumSize = 0f;
TreeMap<Float, String> sortedLitTypes = new TreeMap<Float, String>(
Collections.reverseOrder());
-
- for (String literal : nameToLitColl.keySet()) {
- float curSize = nameToLitColl.get(literal).size;
- sumSize += curSize;
-
- if (curSize != 0f) {
- sortedLitTypes.put(curSize, literal);
-
- if (curSize > maxSize) {
- maxSize = curSize;
- }
- }
+ float curSize = nameToLitColl.get("string").size;
+ sumSize += curSize;
+ if (curSize != 0f) {
+ sortedLitTypes.put(curSize, "string");
}
-
for (Float size : sortedLitTypes.keySet()) {
String literal = sortedLitTypes.get(size);
String drillDownFileName = breakdown.getId() + "_" + literal + "-"
+ getPermutationId() + "Lits.html";
-
- float ratio = (size / maxSize) * 79;
- float perc = (size / sumSize) * 100;
-
- if (ratio < 1) {
- ratio = 1;
- }
-
- outFile.println("<tr>");
- outFile.println("<td class=\"barlabel\">" + size + "</td>");
- outFile.println("<td class=\"barlabel\">" + formatNumber(perc) + "%</td>");
- outFile.println("<td class=\"barlabel\"><a href=\"" + drillDownFileName
- + "\" target=\"_top\">" + literal + "</a></td>");
- outFile.println("<td class=\"box\">");
- outFile.println("<div style=\"width:"
- + ratio
- + "%;\" class=\"lb\"><div class=\"rb\"><div class=\"bb\"><div class=\"blc\"><div class=\"brc\"><div class=\"tb\"><div class=\"tlc\"><div class=\"trc\"><div class=\"content\"></div></div></div></div></div></div></div></div>");
- outFile.println("</td>");
- outFile.println("</tr>");
+ outFile.println("<p class=\"soyc-breakdown-strings\"><a href=\""
+ + drillDownFileName + "\" target=\"_top\">Strings</a> occupy " + size
+ + " bytes</p>");
}
-
- outFile.println("</table>");
- outFile.println("</body>");
- outFile.println("</html>");
+ addStandardHtmlEnding(outFile);
outFile.close();
-
return outFileName;
}
/**
* Produces an HTML file that displays dependencies.
*
- * @param name of dependency graph
- * @param map of dependencies
+ * @param depGraphName name of dependency graph
+ * @param dependencies map of dependencies
* @throws IOException
*/
private void makeDependenciesHtml(String depGraphName,
@@ -844,21 +751,23 @@
String packageDescription = packageName.length() == 0
? "the default package" : packageName;
- addDependenciesHtmlProlog(outFile, "Method Dependencies for "
+ addStandardHtmlProlog(outFile, "Method Dependencies for "
+ + depGraphDescription, "Method Dependencies for "
+ depGraphDescription, "Showing Package: " + packageDescription);
}
String name = method;
if (curClassName.compareTo(className) != 0) {
name = className;
curClassName = className;
- outFile.println("<h3><a name=\"" + name + "\"/>Class: " + curClassName + "</h3>");
+ outFile.println("<a name=\"" + curClassName
+ + "\"><h3 class=\"soyc-class-header\">Class: " + curClassName
+ + "</a></h3>");
}
outFile.println("<div class='main'>");
- outFile.println("<a class='toggle' onclick='toggle.call(this)'> " +
- "<span class='calledBy'> Call stack: </span>"
+ outFile.println("<a class='toggle soyc-call-stack-link' onclick='toggle.call(this)'><span class='calledBy'> Call stack: </span>"
+ name + "</a>");
- outFile.println("<ul>");
+ outFile.println("<ul class=\"soyc-call-stack-list\">");
String depMethod = dependencies.get(method);
while (depMethod != null) {
@@ -883,21 +792,16 @@
*/
private void makeLeftoversStatusPage(String className) throws IOException {
String packageName = globalInformation.getClassToPackage().get(className);
- PrintWriter out = new PrintWriter(
+ PrintWriter outFile = new PrintWriter(
getOutFile(leftoversStatusFileName(className)));
+ addStandardHtmlProlog(outFile, "Leftovers page for " + className,
+ "Leftovers page for " + className, "");
+ outFile.println("<div id=\"bd\">");
+ outFile.println("<p>This class has some leftover code, neither initial nor exclusive to any split point:</p>");
+ addLefttoversStatus(className, packageName, outFile);
+ addStandardHtmlEnding(outFile);
- addStandardHtmlProlog(out, "Leftovers page for " + className, null);
-
- out.println("<center>");
- out.println("<table border=\"1\" width=\"80%\" style=\"font-size: 11pt;\" bgcolor=\"white\">");
-
- out.println("<tr><td>This class has some leftover code, neither initial nor exclusive to any split point:</td></tr>");
- addLefttoversStatus(className, packageName, out);
- out.println("</table>");
-
- addStandardHtmlEnding(out);
-
- out.close();
+ outFile.close();
}
/**
@@ -908,104 +812,87 @@
* @throws IOException
*/
private String makePackageHtml(SizeBreakdown breakdown) throws IOException {
- String outFileName = breakdown.getId() + "-" + getPermutationId() + "_"
+ String outFileName = breakdown.getId() + "-" + getPermutationId() + "-"
+ "packageBreakdown.html";
Map<String, Integer> packageToPartialSize = breakdown.packageToSize;
TreeMap<Integer, String> sortedPackages = new TreeMap<Integer, String>(
Collections.reverseOrder());
- float maxSize = 0f;
float sumSize = 0f;
for (String packageName : packageToPartialSize.keySet()) {
sortedPackages.put(packageToPartialSize.get(packageName), packageName);
sumSize += packageToPartialSize.get(packageName);
- if (packageToPartialSize.get(packageName) > maxSize) {
- maxSize = packageToPartialSize.get(packageName);
- }
}
final PrintWriter outFile = new PrintWriter(getOutFile(outFileName));
+ addSmallHtmlProlog(outFile, "Package breakdown");
+ outFile.println("<body class=\"soyc-breakdown\">");
+ outFile.println("<div class=\"g-doc\">");
- outFile.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"");
- outFile.println("\"http://www.w3.org/TR/html4/strict.dtd\">");
- outFile.println("<html>");
- outFile.println("<head>");
- outFile.println("<meta http-equiv=\"content-type\" content=\"text/html;charset=ISO-8859-1\">");
- outFile.println("<link rel=\"stylesheet\" href=\"soycStyling.css\" media=\"screen\">");
- outFile.println("</head>");
- outFile.println("<body>");
- outFile.println("<table style='width:100%'>");
+ outFile.println("<table class=\"soyc-table\">");
+ outFile.println("<colgroup>");
+ outFile.println("<col id=\"soyc-splitpoint-type-col\">");
+ outFile.println("<col id=\"soyc-splitpoint-size-col\">");
+ outFile.println("</colgroup>");
outFile.println("<thead>");
- outFile.println("<th class='barlabel'>Size</th>");
-
- outFile.println("<th class='barlabel'>Percentage</th>");
- outFile.println("<th class='barlabel'>Package</th>");
- outFile.println("<th style='width:100%' class='barlabel'></th>");
+ outFile.println("<th>Package</th>");
+ outFile.println("<th>Size <span class=\"soyc-th-units\">Bytes (% All Code)</span></th>");
outFile.println("</thead>");
for (int size : sortedPackages.keySet()) {
String packageName = sortedPackages.get(size);
String drillDownFileName = classesInPackageFileName(breakdown,
packageName, getPermutationId());
-
- float ratio = (size / maxSize) * 79;
- if (ratio < 1) {
- ratio = 1;
- }
float perc = (size / sumSize) * 100;
-
outFile.println("<tr>");
- outFile.println("<td class='barlabel'>" + size + "</td>");
- outFile.println("<td class='barlabel'>" + formatNumber(perc) + "%</td>");
- outFile.println("<td class='barlabel'><a href=\"" + drillDownFileName
+ outFile.println("<td><a href=\"" + drillDownFileName
+ "\" target=\"_top\">" + packageName + "</a></td>");
- outFile.println("<td class=\"box\">");
- outFile.println("<div style=\"width:"
- + ratio
- + "%;\" class=\"sizebar\"/>");
+ outFile.println("<td>");
+ outFile.println("<div class=\"soyc-bar-graph goog-inline-block\">");
+ outFile.println("<div style=\"width:" + perc
+ + "%;\" class=\"soyc-bar-graph-fill goog-inline-block\"></div>");
+ outFile.println("</div>");
+ outFile.println(size + " (" + formatNumber(perc) + "%)");
outFile.println("</td>");
outFile.println("</tr>");
}
outFile.println("</table>");
- outFile.println("</body>");
- outFile.println("</html>");
+ addStandardHtmlEnding(outFile);
outFile.close();
-
return outFileName;
}
private void makeSplitStatusPage(String className) throws IOException {
String packageName = globalInformation.getClassToPackage().get(className);
- PrintWriter out = new PrintWriter(
+ PrintWriter outFile = new PrintWriter(
getOutFile(splitStatusFileName(className)));
- addStandardHtmlProlog(out, "Split point status for " + className, "");
-
- out.println("<center>");
- out.println("<table border=\"1\" width=\"80%\" style=\"font-size: 11pt;\" bgcolor=\"white\">");
+ addStandardHtmlProlog(outFile, "Split point status for " + className,
+ "Split point status for " + className, "");
+ outFile.println("<div id=\"bd\">");
if (globalInformation.getInitialCodeBreakdown().classToSize.containsKey(className)) {
if (globalInformation.dependencies != null) {
- out.println("<tr><td>Some code is initial (<a href=\""
- + dependenciesFileName("initial", packageName) + "#" + className
- + "\">see why</a>)</td></tr>");
+ outFile.println("<p>Some code is included in the initial fragment (<a href=\""
+ + dependenciesFileName("initial", packageName)
+ + "#"
+ + className
+ + "\">see why</a>)</p>");
} else {
- out.println("<tr><td>Some code is initial</td></tr>");
+ outFile.println("<p>Some code is included in the initial fragment</p>");
}
}
for (int sp : splitPointsWithClass(className)) {
- out.println("<tr><td>Some code downloads with s.p. #" + sp + " ("
- + globalInformation.getSplitPointToLocation().get(sp) + ")</td></tr>");
+ outFile.println("<p>Some code downloads with split point " + sp + ": "
+ + globalInformation.getSplitPointToLocation().get(sp) + "</p>");
}
if (globalInformation.getLeftoversBreakdown().classToSize.containsKey(className)) {
- out.println("<tr><td>Some code is left over:</td></tr>");
- addLefttoversStatus(className, packageName, out);
+ outFile.println("<p>Some code is left over:</p>");
+ addLefttoversStatus(className, packageName, outFile);
}
- out.println("</table>");
- addStandardHtmlEnding(out);
-
- out.close();
+ addStandardHtmlEnding(outFile);
+ outFile.close();
}
/**
diff --git a/dev/core/src/com/google/gwt/soyc/StaticResources.java b/dev/core/src/com/google/gwt/soyc/StaticResources.java
index 3b9f32a..8710376 100644
--- a/dev/core/src/com/google/gwt/soyc/StaticResources.java
+++ b/dev/core/src/com/google/gwt/soyc/StaticResources.java
@@ -34,7 +34,8 @@
* cannot be iterated over.
*/
private static String[] resourceNames = new String[] {
- "soycStyling.css",};
+ "goog.css", "inlay.css", "soyc.css", "images/g_gwt.png",
+ "images/up_arrow.png"};
public static void emit(OutputDirectory outDir) throws IOException {
String prefix = StaticResources.class.getPackage().getName().replace('.',
@@ -45,7 +46,7 @@
InputStream in = loader.getResourceAsStream(prefix + resourceName);
if (in == null) {
throw new Error("Could not find resource via my class loader: "
- + resourceName);
+ + prefix + resourceName);
}
OutputStream out = outDir.getOutputStream(resourceName);
Utility.streamOut(in, out, 10240);
diff --git a/dev/core/src/com/google/gwt/soyc/resources/goog.css b/dev/core/src/com/google/gwt/soyc/resources/goog.css
new file mode 100644
index 0000000..5aca232
--- /dev/null
+++ b/dev/core/src/com/google/gwt/soyc/resources/goog.css
@@ -0,0 +1,2 @@
+/* Copyright 2009 Google, Inc. All Rights Reserved */
+html,body,div,h1,h2,h3,h4,h5,h6,p,img,dl,dt,dd,ol,ul,li,table,caption,tbody,tfoot,thead,tr,th,td,form,fieldset,embed,object,applet{margin:0;padding:0;border:0}body{font-size:62.5%;font-family:Arial,sans-serif;color:#000;background:#fff}a{color:#00c}a:active{color:red}a:visited{color:#551a8b}table{border-collapse:collapse;border-width:0;empty-cells:show}ul{padding:0 0 1em 1em}ol{padding:0 0 1em 1.3em}li{line-height:1.5em;padding:0 0 .5em 0}p{padding:0 0 1em 0}h1,h2,h3,h4,h5{padding:0 0 1em 0}h1,h2{font-size:1.3em}h3{font-size:1.1em}h4,h5,table{font-size:1em}sup,sub{font-size:.7em}input,select,textarea,option{font-family:inherit;font-size:inherit}.g-doc,.g-doc-1024,.g-doc-800{font-size:130%}
\ No newline at end of file
diff --git a/dev/core/src/com/google/gwt/soyc/resources/images/1bl.gif b/dev/core/src/com/google/gwt/soyc/resources/images/1bl.gif
deleted file mode 100644
index 3183405..0000000
--- a/dev/core/src/com/google/gwt/soyc/resources/images/1bl.gif
+++ /dev/null
Binary files differ
diff --git a/dev/core/src/com/google/gwt/soyc/resources/images/1br.gif b/dev/core/src/com/google/gwt/soyc/resources/images/1br.gif
deleted file mode 100644
index 8748c10..0000000
--- a/dev/core/src/com/google/gwt/soyc/resources/images/1br.gif
+++ /dev/null
Binary files differ
diff --git a/dev/core/src/com/google/gwt/soyc/resources/images/1tl.gif b/dev/core/src/com/google/gwt/soyc/resources/images/1tl.gif
deleted file mode 100644
index 2ca18a7..0000000
--- a/dev/core/src/com/google/gwt/soyc/resources/images/1tl.gif
+++ /dev/null
Binary files differ
diff --git a/dev/core/src/com/google/gwt/soyc/resources/images/1tr.gif b/dev/core/src/com/google/gwt/soyc/resources/images/1tr.gif
deleted file mode 100644
index e4e2a96..0000000
--- a/dev/core/src/com/google/gwt/soyc/resources/images/1tr.gif
+++ /dev/null
Binary files differ
diff --git a/dev/core/src/com/google/gwt/soyc/resources/images/bb.gif b/dev/core/src/com/google/gwt/soyc/resources/images/bb.gif
deleted file mode 100644
index ef7d5a3..0000000
--- a/dev/core/src/com/google/gwt/soyc/resources/images/bb.gif
+++ /dev/null
Binary files differ
diff --git a/dev/core/src/com/google/gwt/soyc/resources/images/blc.gif b/dev/core/src/com/google/gwt/soyc/resources/images/blc.gif
deleted file mode 100644
index 7b6d57a..0000000
--- a/dev/core/src/com/google/gwt/soyc/resources/images/blc.gif
+++ /dev/null
Binary files differ
diff --git a/dev/core/src/com/google/gwt/soyc/resources/images/brc.gif b/dev/core/src/com/google/gwt/soyc/resources/images/brc.gif
deleted file mode 100644
index 5afd529..0000000
--- a/dev/core/src/com/google/gwt/soyc/resources/images/brc.gif
+++ /dev/null
Binary files differ
diff --git a/dev/core/src/com/google/gwt/soyc/resources/images/g_gwt.png b/dev/core/src/com/google/gwt/soyc/resources/images/g_gwt.png
new file mode 100644
index 0000000..99208d0
--- /dev/null
+++ b/dev/core/src/com/google/gwt/soyc/resources/images/g_gwt.png
Binary files differ
diff --git a/dev/core/src/com/google/gwt/soyc/resources/images/l.gif b/dev/core/src/com/google/gwt/soyc/resources/images/l.gif
deleted file mode 100644
index a85da2c..0000000
--- a/dev/core/src/com/google/gwt/soyc/resources/images/l.gif
+++ /dev/null
Binary files differ
diff --git a/dev/core/src/com/google/gwt/soyc/resources/images/r.gif b/dev/core/src/com/google/gwt/soyc/resources/images/r.gif
deleted file mode 100644
index 4b8f639..0000000
--- a/dev/core/src/com/google/gwt/soyc/resources/images/r.gif
+++ /dev/null
Binary files differ
diff --git a/dev/core/src/com/google/gwt/soyc/resources/images/roundedbox_lo.gif b/dev/core/src/com/google/gwt/soyc/resources/images/roundedbox_lo.gif
deleted file mode 100644
index c614467..0000000
--- a/dev/core/src/com/google/gwt/soyc/resources/images/roundedbox_lo.gif
+++ /dev/null
Binary files differ
diff --git a/dev/core/src/com/google/gwt/soyc/resources/images/roundedbox_lu.gif b/dev/core/src/com/google/gwt/soyc/resources/images/roundedbox_lu.gif
deleted file mode 100644
index 995bf88..0000000
--- a/dev/core/src/com/google/gwt/soyc/resources/images/roundedbox_lu.gif
+++ /dev/null
Binary files differ
diff --git a/dev/core/src/com/google/gwt/soyc/resources/images/roundedbox_ro.gif b/dev/core/src/com/google/gwt/soyc/resources/images/roundedbox_ro.gif
deleted file mode 100644
index 8124e86..0000000
--- a/dev/core/src/com/google/gwt/soyc/resources/images/roundedbox_ro.gif
+++ /dev/null
Binary files differ
diff --git a/dev/core/src/com/google/gwt/soyc/resources/images/roundedbox_ru.gif b/dev/core/src/com/google/gwt/soyc/resources/images/roundedbox_ru.gif
deleted file mode 100644
index 55774ef..0000000
--- a/dev/core/src/com/google/gwt/soyc/resources/images/roundedbox_ru.gif
+++ /dev/null
Binary files differ
diff --git a/dev/core/src/com/google/gwt/soyc/resources/images/tb.gif b/dev/core/src/com/google/gwt/soyc/resources/images/tb.gif
deleted file mode 100644
index 8b9a080..0000000
--- a/dev/core/src/com/google/gwt/soyc/resources/images/tb.gif
+++ /dev/null
Binary files differ
diff --git a/dev/core/src/com/google/gwt/soyc/resources/images/tlc.gif b/dev/core/src/com/google/gwt/soyc/resources/images/tlc.gif
deleted file mode 100644
index 8c40bf7..0000000
--- a/dev/core/src/com/google/gwt/soyc/resources/images/tlc.gif
+++ /dev/null
Binary files differ
diff --git a/dev/core/src/com/google/gwt/soyc/resources/images/trc.gif b/dev/core/src/com/google/gwt/soyc/resources/images/trc.gif
deleted file mode 100644
index 2e4ed5a..0000000
--- a/dev/core/src/com/google/gwt/soyc/resources/images/trc.gif
+++ /dev/null
Binary files differ
diff --git a/dev/core/src/com/google/gwt/soyc/resources/images/up_arrow.png b/dev/core/src/com/google/gwt/soyc/resources/images/up_arrow.png
new file mode 100644
index 0000000..13629e9
--- /dev/null
+++ b/dev/core/src/com/google/gwt/soyc/resources/images/up_arrow.png
Binary files differ
diff --git a/dev/core/src/com/google/gwt/soyc/resources/inlay.css b/dev/core/src/com/google/gwt/soyc/resources/inlay.css
new file mode 100644
index 0000000..685585e
--- /dev/null
+++ b/dev/core/src/com/google/gwt/soyc/resources/inlay.css
@@ -0,0 +1,2 @@
+/* Copyright 2009 Google, Inc. All Rights Reserved */
+.g-doc{width:100%;text-align:left}.g-doc-1024{width:73.074em;*width:71.313em;min-width:950px;margin:0 auto;text-align:left}.g-doc-800{width:57.69em;*width:56.3em;min-width:750px;margin:0 auto;text-align:left}.g-section:after{content:".";display:block;height:0;clear:both;visibility:hidden}.g-unit .g-section:after{clear:none}.g-unit .g-section{width:100%;overflow:hidden}.g-section,.g-unit{zoom:1}.g-split .g-unit{text-align:right}.g-split .g-first{text-align:left}.g-tpl-50 .g-unit,.g-unit .g-tpl-50 .g-unit,.g-unit .g-unit .g-tpl-50 .g-unit,.g-unit .g-unit .g-unit .g-tpl-50 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-50 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-50 .g-unit{display:block;margin:0 0 0 50px;width:auto;float:none}.g-tpl-50 .g-first,.g-unit .g-tpl-50 .g-first,.g-unit .g-unit .g-tpl-50 .g-first,.g-unit .g-unit .g-unit .g-tpl-50 .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-50 .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-50 .g-first{display:block;margin:0;width:50px;float:left}.g-tpl-50-alt .g-unit,.g-unit .g-tpl-50-alt .g-unit,.g-unit .g-unit .g-tpl-50-alt .g-unit,.g-unit .g-unit .g-unit .g-tpl-50-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-50-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-50-alt .g-unit{display:block;margin:0 50px 0 0;width:auto;float:none}.g-tpl-50-alt .g-first,.g-unit .g-tpl-50-alt .g-first,.g-unit .g-unit .g-tpl-50-alt .g-first,.g-unit .g-unit .g-unit .g-tpl-50-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-50-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-50-alt .g-first{display:block;margin:0;width:50px;float:right}.g-tpl-75 .g-unit,.g-unit .g-tpl-75 .g-unit,.g-unit .g-unit .g-tpl-75 .g-unit,.g-unit .g-unit .g-unit .g-tpl-75 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-75 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-75 .g-unit{display:block;margin:0 0 0 75px;width:auto;float:none}.g-tpl-75 .g-first,.g-unit .g-tpl-75 .g-first,.g-unit .g-unit .g-tpl-75 .g-first,.g-unit .g-unit .g-unit .g-tpl-75 .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-75 .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-75 .g-first{display:block;margin:0;width:75px;float:left}.g-tpl-75-alt .g-unit,.g-unit .g-tpl-75-alt .g-unit,.g-unit .g-unit .g-tpl-75-alt .g-unit,.g-unit .g-unit .g-unit .g-tpl-75-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-75-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-75-alt .g-unit{display:block;margin:0 75px 0 0;width:auto;float:none}.g-tpl-75-alt .g-first,.g-unit .g-tpl-75-alt .g-first,.g-unit .g-unit .g-tpl-75-alt .g-first,.g-unit .g-unit .g-unit .g-tpl-75-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-75-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-75-alt .g-first{display:block;margin:0;width:75px;float:right}.g-tpl-130 .g-unit,.g-unit .g-tpl-130 .g-unit,.g-unit .g-unit .g-tpl-130 .g-unit,.g-unit .g-unit .g-unit .g-tpl-130 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-130 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-130 .g-unit{display:block;margin:0 0 0 130px;width:auto;float:none}.g-tpl-130 .g-first,.g-unit .g-tpl-130 .g-first,.g-unit .g-unit .g-tpl-130 .g-first,.g-unit .g-unit .g-unit .g-tpl-130 .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-130 .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-130 .g-first{display:block;margin:0;width:130px;float:left}.g-tpl-130-alt .g-unit,.g-unit .g-tpl-130-alt .g-unit,.g-unit .g-unit .g-tpl-130-alt .g-unit,.g-unit .g-unit .g-unit .g-tpl-130-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-130-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-130-alt .g-unit{display:block;margin:0 130px 0 0;width:auto;float:none}.g-tpl-130-alt .g-first,.g-unit .g-tpl-130-alt .g-first,.g-unit .g-unit .g-tpl-130-alt .g-first,.g-unit .g-unit .g-unit .g-tpl-130-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-130-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-130-alt .g-first{display:block;margin:0;width:130px;float:right}.g-tpl-160 .g-unit,.g-unit .g-tpl-160 .g-unit,.g-unit .g-unit .g-tpl-160 .g-unit,.g-unit .g-unit .g-unit .g-tpl-160 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-160 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-160 .g-unit{display:block;margin:0 0 0 160px;width:auto;float:none}.g-tpl-160 .g-first,.g-unit .g-tpl-160 .g-first,.g-unit .g-unit .g-tpl-160 .g-first,.g-unit .g-unit .g-unit .g-tpl-160 .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-160 .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-160 .g-first{display:block;margin:0;width:160px;float:left}.g-tpl-160-alt .g-unit,.g-unit .g-tpl-160-alt .g-unit,.g-unit .g-unit .g-tpl-160-alt .g-unit,.g-unit .g-unit .g-unit .g-tpl-160-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-160-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-160-alt .g-unit{display:block;margin:0 160px 0 0;width:auto;float:none}.g-tpl-160-alt .g-first,.g-unit .g-tpl-160-alt .g-first,.g-unit .g-unit .g-tpl-160-alt .g-first,.g-unit .g-unit .g-unit .g-tpl-160-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-160-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-160-alt .g-first{display:block;margin:0;width:160px;float:right}.g-tpl-180 .g-unit,.g-unit .g-tpl-180 .g-unit,.g-unit .g-unit .g-tpl-180 .g-unit,.g-unit .g-unit .g-unit .g-tpl-180 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-180 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-180 .g-unit{display:block;margin:0 0 0 180px;width:auto;float:none}.g-tpl-180 .g-first,.g-unit .g-tpl-180 .g-first,.g-unit .g-unit .g-tpl-180 .g-first,.g-unit .g-unit .g-unit .g-tpl-180 .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-180 .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-180 .g-first{display:block;margin:0;width:180px;float:left}.g-tpl-180-alt .g-unit,.g-unit .g-tpl-180-alt .g-unit,.g-unit .g-unit .g-tpl-180-alt .g-unit,.g-unit .g-unit .g-unit .g-tpl-180-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-180-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-180-alt .g-unit{display:block;margin:0 180px 0 0;width:auto;float:none}.g-tpl-180-alt .g-first,.g-unit .g-tpl-180-alt .g-first,.g-unit .g-unit .g-tpl-180-alt .g-first,.g-unit .g-unit .g-unit .g-tpl-180-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-180-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-180-alt .g-first{display:block;margin:0;width:180px;float:right}.g-tpl-200 .g-unit,.g-unit .g-tpl-200 .g-unit,.g-unit .g-unit .g-tpl-200 .g-unit,.g-unit .g-unit .g-unit .g-tpl-200 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-200 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-200 .g-unit{display:block;margin:0 0 0 200px;width:auto;float:none}.g-tpl-200 .g-first,.g-unit .g-tpl-200 .g-first,.g-unit .g-unit .g-tpl-200 .g-first,.g-unit .g-unit .g-unit .g-tpl-200 .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-200 .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-200 .g-first{display:block;margin:0;width:200px;float:left}.g-tpl-200-alt .g-unit,.g-unit .g-tpl-200-alt .g-unit,.g-unit .g-unit .g-tpl-200-alt .g-unit,.g-unit .g-unit .g-unit .g-tpl-200-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-200-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-200-alt .g-unit{display:block;margin:0 200px 0 0;width:auto;float:none}.g-tpl-200-alt .g-first,.g-unit .g-tpl-200-alt .g-first,.g-unit .g-unit .g-tpl-200-alt .g-first,.g-unit .g-unit .g-unit .g-tpl-200-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-200-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-200-alt .g-first{display:block;margin:0;width:200px;float:right}.g-tpl-225 .g-unit,.g-unit .g-tpl-225 .g-unit,.g-unit .g-unit .g-tpl-225 .g-unit,.g-unit .g-unit .g-unit .g-tpl-225 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-225 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-225 .g-unit{display:block;margin:0 0 0 225px;width:auto;float:none}.g-tpl-225 .g-first,.g-unit .g-tpl-225 .g-first,.g-unit .g-unit .g-tpl-225 .g-first,.g-unit .g-unit .g-unit .g-tpl-225 .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-225 .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-225 .g-first{display:block;margin:0;width:225px;float:left}.g-tpl-225-alt .g-unit,.g-unit .g-tpl-225-alt .g-unit,.g-unit .g-unit .g-tpl-225-alt .g-unit,.g-unit .g-unit .g-unit .g-tpl-225-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-225-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-225-alt .g-unit{display:block;margin:0 225px 0 0;width:auto;float:none}.g-tpl-225-alt .g-first,.g-unit .g-tpl-225-alt .g-first,.g-unit .g-unit .g-tpl-225-alt .g-first,.g-unit .g-unit .g-unit .g-tpl-225-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-225-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-225-alt .g-first{display:block;margin:0;width:225px;float:right}.g-tpl-250 .g-unit,.g-unit .g-tpl-250 .g-unit,.g-unit .g-unit .g-tpl-250 .g-unit,.g-unit .g-unit .g-unit .g-tpl-250 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-250 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-250 .g-unit{display:block;margin:0 0 0 250px;width:auto;float:none}.g-tpl-250 .g-first,.g-unit .g-tpl-250 .g-first,.g-unit .g-unit .g-tpl-250 .g-first,.g-unit .g-unit .g-unit .g-tpl-250 .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-250 .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-250 .g-first{display:block;margin:0;width:250px;float:left}.g-tpl-250-alt .g-unit,.g-unit .g-tpl-250-alt .g-unit,.g-unit .g-unit .g-tpl-250-alt .g-unit,.g-unit .g-unit .g-unit .g-tpl-250-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-250-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-250-alt .g-unit{display:block;margin:0 250px 0 0;width:auto;float:none}.g-tpl-250-alt .g-first,.g-unit .g-tpl-250-alt .g-first,.g-unit .g-unit .g-tpl-250-alt .g-first,.g-unit .g-unit .g-unit .g-tpl-250-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-250-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-250-alt .g-first{display:block;margin:0;width:250px;float:right}.g-tpl-300 .g-unit,.g-unit .g-tpl-300 .g-unit,.g-unit .g-unit .g-tpl-300 .g-unit,.g-unit .g-unit .g-unit .g-tpl-300 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-300 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-300 .g-unit{display:block;margin:0 0 0 300px;width:auto;float:none}.g-tpl-300 .g-first,.g-unit .g-tpl-300 .g-first,.g-unit .g-unit .g-tpl-300 .g-first,.g-unit .g-unit .g-unit .g-tpl-300 .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-300 .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-300 .g-first{display:block;margin:0;width:300px;float:left}.g-tpl-300-alt .g-unit,.g-unit .g-tpl-300-alt .g-unit,.g-unit .g-unit .g-tpl-300-alt .g-unit,.g-unit .g-unit .g-unit .g-tpl-300-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-300-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-300-alt .g-unit{display:block;margin:0 300px 0 0;width:auto;float:none}.g-tpl-300-alt .g-first,.g-unit .g-tpl-300-alt .g-first,.g-unit .g-unit .g-tpl-300-alt .g-first,.g-unit .g-unit .g-unit .g-tpl-300-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-300-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-300-alt .g-first{display:block;margin:0;width:300px;float:right}.g-tpl-320 .g-unit,.g-unit .g-tpl-320 .g-unit,.g-unit .g-unit .g-tpl-320 .g-unit,.g-unit .g-unit .g-unit .g-tpl-320 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-320 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-320 .g-unit{display:block;margin:0 0 0 320px;width:auto;float:none}.g-tpl-320 .g-first,.g-unit .g-tpl-320 .g-first,.g-unit .g-unit .g-tpl-320 .g-first,.g-unit .g-unit .g-unit .g-tpl-320 .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-320 .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-320 .g-first{display:block;margin:0;width:320px;float:left}.g-tpl-320-alt .g-unit,.g-unit .g-tpl-320-alt .g-unit,.g-unit .g-unit .g-tpl-320-alt .g-unit,.g-unit .g-unit .g-unit .g-tpl-320-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-320-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-320-alt .g-unit{display:block;margin:0 320px 0 0;width:auto;float:none}.g-tpl-320-alt .g-first,.g-unit .g-tpl-320-alt .g-first,.g-unit .g-unit .g-tpl-320-alt .g-first,.g-unit .g-unit .g-unit .g-tpl-320-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-320-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-320-alt .g-first{display:block;margin:0;width:320px;float:right}.g-tpl-350 .g-unit,.g-unit .g-tpl-350 .g-unit,.g-unit .g-unit .g-tpl-350 .g-unit,.g-unit .g-unit .g-unit .g-tpl-350 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-350 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-350 .g-unit{display:block;margin:0 0 0 350px;width:auto;float:none}.g-tpl-350 .g-first,.g-unit .g-tpl-350 .g-first,.g-unit .g-unit .g-tpl-350 .g-first,.g-unit .g-unit .g-unit .g-tpl-350 .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-350 .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-350 .g-first{display:block;margin:0;width:350px;float:left}.g-tpl-350-alt .g-unit,.g-unit .g-tpl-350-alt .g-unit,.g-unit .g-unit .g-tpl-350-alt .g-unit,.g-unit .g-unit .g-unit .g-tpl-350-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-350-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-350-alt .g-unit{display:block;margin:0 350px 0 0;width:auto;float:none}.g-tpl-350-alt .g-first,.g-unit .g-tpl-350-alt .g-first,.g-unit .g-unit .g-tpl-350-alt .g-first,.g-unit .g-unit .g-unit .g-tpl-350-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-350-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-350-alt .g-first{display:block;margin:0;width:350px;float:right}.g-tpl-400 .g-unit,.g-unit .g-tpl-400 .g-unit,.g-unit .g-unit .g-tpl-400 .g-unit,.g-unit .g-unit .g-unit .g-tpl-400 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-400 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-400 .g-unit{display:block;margin:0 0 0 400px;width:auto;float:none}.g-tpl-400 .g-first,.g-unit .g-tpl-400 .g-first,.g-unit .g-unit .g-tpl-400 .g-first,.g-unit .g-unit .g-unit .g-tpl-400 .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-400 .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-400 .g-first{display:block;margin:0;width:400px;float:left}.g-tpl-400-alt .g-unit,.g-unit .g-tpl-400-alt .g-unit,.g-unit .g-unit .g-tpl-400-alt .g-unit,.g-unit .g-unit .g-unit .g-tpl-400-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-400-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-400-alt .g-unit{display:block;margin:0 400px 0 0;width:auto;float:none}.g-tpl-400-alt .g-first,.g-unit .g-tpl-400-alt .g-first,.g-unit .g-unit .g-tpl-400-alt .g-first,.g-unit .g-unit .g-unit .g-tpl-400-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-400-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-400-alt .g-first{display:block;margin:0;width:400px;float:right}.g-tpl-25-75 .g-unit,.g-unit .g-tpl-25-75 .g-unit,.g-unit .g-unit .g-tpl-25-75 .g-unit,.g-unit .g-unit .g-unit .g-tpl-25-75 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-25-75 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-25-75 .g-unit{width:74.999%;float:right;display:inline;margin:0}.g-tpl-25-75 .g-first,.g-unit .g-tpl-25-75 .g-first,.g-unit .g-unit .g-tpl-25-75 .g-first,.g-unit .g-unit .g-unit .g-tpl-25-75 .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-25-75 .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-25-75 .g-first{width:24.999%;float:left;display:inline;margin:0}.g-tpl-25-75-alt .g-unit,.g-unit .g-tpl-25-75-alt .g-unit,.g-unit .g-unit .g-tpl-25-75-alt .g-unit,.g-unit .g-unit .g-unit .g-tpl-25-75-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-25-75-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-25-75-alt .g-unit{width:24.999%;float:left;display:inline;margin:0}.g-tpl-25-75-alt .g-first,.g-unit .g-tpl-25-75-alt .g-first,.g-unit .g-unit .g-tpl-25-75-alt .g-first,.g-unit .g-unit .g-unit .g-tpl-25-75-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-25-75-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-25-75-alt .g-first{width:74.999%;float:right;display:inline;margin:0}.g-tpl-75-25 .g-unit,.g-unit .g-tpl-75-25 .g-unit,.g-unit .g-unit .g-tpl-75-25 .g-unit,.g-unit .g-unit .g-unit .g-tpl-75-25 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-75-25 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-75-25 .g-unit{width:24.999%;float:right;display:inline;margin:0}.g-tpl-75-25 .g-first,.g-unit .g-tpl-75-25 .g-first,.g-unit .g-unit .g-tpl-75-25 .g-first,.g-unit .g-unit .g-unit .g-tpl-75-25 .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-75-25 .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-75-25 .g-first{width:74.999%;float:left;display:inline;margin:0}.g-tpl-75-25-alt .g-unit,.g-unit .g-tpl-75-25-alt .g-unit,.g-unit .g-unit .g-tpl-75-25-alt .g-unit,.g-unit .g-unit .g-unit .g-tpl-75-25-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-75-25-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-75-25-alt .g-unit{width:74.999%;float:left;display:inline;margin:0}.g-tpl-75-25-alt .g-first,.g-unit .g-tpl-75-25-alt .g-first,.g-unit .g-unit .g-tpl-75-25-alt .g-first,.g-unit .g-unit .g-unit .g-tpl-75-25-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-75-25-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-75-25-alt .g-first{width:24.999%;float:right;display:inline;margin:0}.g-tpl-33-67 .g-unit,.g-unit .g-tpl-33-67 .g-unit,.g-unit .g-unit .g-tpl-33-67 .g-unit,.g-unit .g-unit .g-unit .g-tpl-33-67 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-33-67 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-33-67 .g-unit{width:66.999%;float:right;display:inline;margin:0}.g-tpl-33-67 .g-first,.g-unit .g-tpl-33-67 .g-first,.g-unit .g-unit .g-tpl-33-67 .g-first,.g-unit .g-unit .g-unit .g-tpl-33-67 .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-33-67 .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-33-67 .g-first{width:32.999%;float:left;display:inline;margin:0}.g-tpl-33-67-alt .g-unit,.g-unit .g-tpl-33-67-alt .g-unit,.g-unit .g-unit .g-tpl-33-67-alt .g-unit,.g-unit .g-unit .g-unit .g-tpl-33-67-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-33-67-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-33-67-alt .g-unit{width:32.999%;float:left;display:inline;margin:0}.g-tpl-33-67-alt .g-first,.g-unit .g-tpl-33-67-alt .g-first,.g-unit .g-unit .g-tpl-33-67-alt .g-first,.g-unit .g-unit .g-unit .g-tpl-33-67-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-33-67-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-33-67-alt .g-first{width:66.999%;float:right;display:inline;margin:0}.g-tpl-67-33 .g-unit,.g-unit .g-tpl-67-33 .g-unit,.g-unit .g-unit .g-tpl-67-33 .g-unit,.g-unit .g-unit .g-unit .g-tpl-67-33 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-67-33 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-67-33 .g-unit{width:32.999%;float:right;display:inline;margin:0}.g-tpl-67-33 .g-first,.g-unit .g-tpl-67-33 .g-first,.g-unit .g-unit .g-tpl-67-33 .g-first,.g-unit .g-unit .g-unit .g-tpl-67-33 .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-67-33 .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-67-33 .g-first{width:66.999%;float:left;display:inline;margin:0}.g-tpl-67-33-alt .g-unit,.g-unit .g-tpl-67-33-alt .g-unit,.g-unit .g-unit .g-tpl-67-33-alt .g-unit,.g-unit .g-unit .g-unit .g-tpl-67-33-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-67-33-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-67-33-alt .g-unit{width:66.999%;float:left;display:inline;margin:0}.g-tpl-67-33-alt .g-first,.g-unit .g-tpl-67-33-alt .g-first,.g-unit .g-unit .g-tpl-67-33-alt .g-first,.g-unit .g-unit .g-unit .g-tpl-67-33-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-67-33-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-67-33-alt .g-first{width:32.999%;float:right;display:inline;margin:0}.g-tpl-50-50 .g-unit,.g-unit .g-tpl-50-50 .g-unit,.g-unit .g-unit .g-tpl-50-50 .g-unit,.g-unit .g-unit .g-unit .g-tpl-50-50 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-50-50 .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-50-50 .g-unit{width:49.999%;float:right;display:inline;margin:0}.g-tpl-50-50 .g-first,.g-unit .g-tpl-50-50 .g-first,.g-unit .g-unit .g-tpl-50-50 .g-first,.g-unit .g-unit .g-unit .g-tpl-50-50 .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-50-50 .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-50-50 .g-first{width:49.999%;float:left;display:inline;margin:0}.g-tpl-50-50-alt .g-unit,.g-unit .g-tpl-50-50-alt .g-unit,.g-unit .g-unit .g-tpl-50-50-alt .g-unit,.g-unit .g-unit .g-unit .g-tpl-50-50-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-50-50-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-50-50-alt .g-unit{width:49.999%;float:left;display:inline;margin:0}.g-tpl-50-50-alt .g-first,.g-unit .g-tpl-50-50-alt .g-first,.g-unit .g-unit .g-tpl-50-50-alt .g-first,.g-unit .g-unit .g-unit .g-tpl-50-50-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-tpl-50-50-alt .g-first,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-50-50-alt .g-first{width:49.999%;float:right;display:inline;margin:0}.g-tpl-nest .g-unit,.g-unit .g-tpl-nest .g-unit,.g-unit .g-unit .g-tpl-nest .g-unit,.g-unit .g-unit .g-unit .g-tpl-nest .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-nest .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-nest .g-unit{float:left;width:auto;display:inline;margin:0}.g-tpl-nest-alt .g-unit,.g-unit .g-tpl-nest-alt .g-unit,.g-unit .g-unit .g-tpl-nest-alt .g-unit,.g-unit .g-unit .g-unit .g-tpl-nest-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-tpl-nest-alt .g-unit,.g-unit .g-unit .g-unit .g-unit .g-unit .g-tpl-nest-alt .g-unit{float:right;width:auto;display:inline;margin:0}
\ No newline at end of file
diff --git a/dev/core/src/com/google/gwt/soyc/resources/soyc.css b/dev/core/src/com/google/gwt/soyc/resources/soyc.css
new file mode 100644
index 0000000..9cbce1e
--- /dev/null
+++ b/dev/core/src/com/google/gwt/soyc/resources/soyc.css
@@ -0,0 +1,241 @@
+/* Inlay overrides */
+.g-doc {
+ width: auto;
+ margin: 1em;
+}
+
+#hd p {
+ padding: 0;
+}
+
+/* Soyc header rules */
+#gwt-logo {
+ background: transparent url(images/g_gwt.png) 0 0 no-repeat;
+ display:block;
+ width:175px;
+ height:30px;
+ margin:4px 0 0 0
+}
+.soyc-ir span {
+ position:absolute;
+ top:-9999px
+}
+#soyc-appbar-lrg {
+ margin:0 0 1.25em 0;
+ padding:.25em .5em;
+ background-color:#e5ecf9;
+ border-top:1px solid #36c
+}
+#soyc-appbar-lrg h1 {
+ font-size:1.2em;
+ padding:0
+}
+#soyc-appbar-lrg h1 span {
+ font-size:80%;
+ font-weight:normal
+}
+
+/* Splitpoint dashboard page rules */
+#soyc-summary {
+ margin-bottom: 2em;
+}
+#soyc-summary dl {
+ float: left;
+ margin-right: 3em;
+}
+#soyc-summary dt {
+ font-size: 1em;
+ font-weight: normal;
+ color: #666;
+ margin-bottom: .2em;
+ padding: 0;
+}
+#soyc-summary dd.value {
+ font-size: 140%;
+ font-weight: bold;
+}
+#soyc-summary dd.report {
+ font-size: .85em;
+}
+#soyc-splitpoint-number-col {
+ width:2em;
+}
+#soyc-splitpoint-size-col {
+ width: 350px;
+}
+#soyc-table-splitpoints {
+ margin-top: 1em;
+}
+#soyc-table-splitpoints tr td:first-child {
+ font-weight:bold;
+}
+#soyc-table-splitpoints a:link {
+ text-decoration: none;
+}
+#soyc-table-splitpoints a:hover,
+#soyc-table-splitpoints a:active {
+ text-decoration: underline;
+}
+#soyc-table-splitpoints a:active {
+ color: #008000;
+}
+.soyc-th-units {
+ font-weight: normal;
+ font-size: .85em;
+}
+.soyc-bar-graph {
+ border: 1px solid #7291D3;
+ width: 200px;
+ height: 1em;
+ background-image:
+ -webkit-gradient(
+ linear,
+ left top, left bottom,
+ from(rgba(200, 200, 200, 1)), to(rgba(230, 230, 230, 1)));
+}
+.soyc-bar-graph-fill {
+ background-color: #2966CE;
+ height: 1em;
+}
+
+/* Split point status page rules */
+.soyc-exclusive {
+ margin-left: 2em;
+}
+.soyc-exclusive li {
+ padding: .25em 0 .5em 0;
+}
+.soyc-call-stack-link {
+ font-weight: bold;
+ padding-left: .5em;
+}
+
+/* Method dependencies page rules */
+.soyc-class-header-2 {
+ padding: .2em .5em .3em .5em;
+ margin-bottom: 1em;
+}
+.soyc-class-header {
+ background-color: #e5ecf9;
+ padding: .2em .5em .3em .5em;
+ margin-bottom: 1em;
+}
+.soyc-call-stack-list {
+ list-style: none;
+}
+.soyc-call-stack-list li {
+ background: transparent url('images/up_arrow.png') no-repeat center left;
+ padding-left: 1.4em;
+ padding-top: .4em;
+}
+
+/* Breakdown page rules */
+.soyc-iframe-code,
+.soyc-iframe-package {
+ width: 100%;
+ border: none;
+ border: 1px inset #ccc;
+}
+.soyc-iframe-code {
+ height: 20%;
+}
+.soyc-iframe-package {
+ height: 65%;
+ margin-bottom: 1em;
+}
+.soyc-breakdown .g-doc {
+ width: 100%;
+ margin: 0;
+}
+.soyc-breakdown-strings {
+ padding: .5em 0 0 .5em;
+}
+
+/* Generic table rules */
+.soyc-table {
+ border:1px solid #c5d7ef;
+ border-collapse:collapse;
+ width:100%
+}
+#bd h2.soyc-table-title {
+ background:#e5ecf9;
+ margin:0;
+ color:#000;
+ font-size:1em;
+ padding:3px 0 3px 5px;
+ border-left:1px solid #c5d7ef;
+ border-right:1px solid #c5d7ef;
+ border-top:1px solid #c5d7ef
+}
+.soyc-table-caption, .soyc-table caption {
+ border:1px solid #c5d7ef;
+ background:#e5ecf9;
+ -moz-margin-start:-1px
+}
+.soyc-table caption {
+ padding:3px 5px;
+ text-align:left
+}
+.soyc-table th, .soyc-table td {
+ background-color:#fff;
+ padding:.35em 1em .25em .35em;
+ margin:0
+}
+.soyc-table thead th {
+ font-weight:bold;
+ text-align:left;
+ background:#c5d7ef;
+ vertical-align:bottom
+}
+.soyc-table tfoot tr td {
+ border-top:1px solid #c5d7ef;
+ background-color:#e5ecf9
+}
+.soyc-table td {
+ border-top:1px solid #c5d7ef;
+ border-bottom:1px solid #c5d7ef
+}
+.soyc-even td,
+.soyc-even th,
+.soyc-even-top td,
+.soyc-even-tween td,
+.soyc-even-bottom td,
+ol.soyc-even {
+ background-color:#e9e9e9;
+ border-top:1px solid #c5d7ef;
+ border-bottom:1px solid #c5d7ef
+}
+.soyc-even-top td {
+ border-bottom:0
+}
+.soyc-even-bottom td {
+ border-top:0
+}
+.soyc-even-tween td {
+ border:0
+}
+.soyc-table .soyc-tween td {
+ border:0
+}
+.soyc-table .soyc-tween-top td {
+ border-bottom:0
+}
+.soyc-table .soyc-tween-bottom td {
+ border-top:0
+}
+
+/* Goog inline block rules */
+html>body .goog-inline-block {
+ display:-moz-inline-box;
+ display:inline-block;
+}
+.goog-inline-block {
+ position:relative;
+ display:inline-block
+}
+* html .goog-inline-block {
+ display:inline
+}
+*:first-child+html .goog-inline-block {
+ display:inline
+}
diff --git a/dev/core/src/com/google/gwt/soyc/resources/soycStyling.css b/dev/core/src/com/google/gwt/soyc/resources/soycStyling.css
deleted file mode 100644
index 6c0a0b5..0000000
--- a/dev/core/src/com/google/gwt/soyc/resources/soycStyling.css
+++ /dev/null
@@ -1,105 +0,0 @@
-body {
- font-family: arial, sans-serif;
-}
-
-#header {
- margin-left: 8px;
- margin-top: 8px;
-}
-
-#logo {
- vertical-align: middle;
- width: 50px;
- height: 50px;
-}
-
-#topBar {
- width:100%;
- background-color: #E5ECF9;
- padding: 4px;
- margin-bottom: 1em;
-}
-
-.groupHeader {
- text-align: center;
-}
-
-.colHeader {
- text-align: left;
-}
-
-.kColHeader {
- text-align: right;
-}
-
-.sortable {
- padding-right: 16px;
- background-image: url();
-}
-
-.md5 {
- font-family: courier;
-}
-
-.k {
- text-align: right;
- font-family: courier;
-}
-
-.na {
- text-align: center;
-}
-
-.box {
- margin-left: 0;
- margin-right: 0;
- margin-top: 0;
- margin-bottom: 0;
- text-align: left;
-}
-
-.content {
- height: 25px;
-}
-
-.barlabel {
- font-size: 14px;
- text-color: maroon;
- text-align: left;
- white-space: nowrap;
-}
-
-.content h1 {
- color:#0354c2;
- font-weight: bold;
- font-size: 1.2em;
- font-family: helvetica, geneva, arial, sans-serif;
-}
-
-.content p {
- color:#3b3b3b;
- font-size: 1em;
- line-height: 1.3em;
- font-family: arial, helvetica, sans-serif;
-}
-
-.frame {
- width: 100%; height: 100%;
- border: 0px;
-}
-
-.packages {
- left:0; right: 0;
- top:0; bottom: 50%;
-}
-
-.codeType {
- left:0; right: 0;
- top:50%; bottom: 0;
-}
-
-.sizebar {
- width:100%;
- height: 0.5em;
- background-color: #4684ee;
-}
diff --git a/dev/core/test/com/google/gwt/dev/SoycTest.java b/dev/core/test/com/google/gwt/dev/SoycTest.java
index e142b35..fd77cd8 100644
--- a/dev/core/test/com/google/gwt/dev/SoycTest.java
+++ b/dev/core/test/com/google/gwt/dev/SoycTest.java
@@ -44,7 +44,7 @@
assertTrue(new File(options.getWarDir() + "/hello/compile-report/index.html").exists());
assertTrue(new File(options.getWarDir() + "/hello/compile-report/SoycDashboard-0-index.html").exists());
assertTrue(new File(options.getWarDir() + "/hello/compile-report/total-0-overallBreakdown.html").exists());
- assertTrue(new File(options.getWarDir() + "/hello/compile-report/soycStyling.css").exists());
+ assertTrue(new File(options.getWarDir() + "/hello/compile-report/soyc.css").exists());
assertFalse(new File(options.getWarDir() + "/hello/compile-report/index2.html").exists());
Util.recursiveDelete(options.getWarDir(), false);