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>&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;<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);