doc change: Samples browsing: starter templates and navtree gen support.

Change-Id: I03f5eec1dcb71e96fed2ba0119a0b2c0bba56f49
diff --git a/src/com/google/doclava/SampleTagInfo.java b/src/com/google/doclava/SampleTagInfo.java
index 9b9e40a..4e14b2b 100644
--- a/src/com/google/doclava/SampleTagInfo.java
+++ b/src/com/google/doclava/SampleTagInfo.java
@@ -79,7 +79,7 @@
     boolean trim = "@sample".equals(name);
 
     if (id == null || "".equals(id)) {
-      mIncluded = readFile(position, filename, id, trim, true, false);
+      mIncluded = readFile(position, filename, id, trim, true, false, false);
     } else {
       mIncluded = loadInclude(position, filename, id, trim);
     }
@@ -106,6 +106,14 @@
     }
   }
 
+  static String addLineNumber(String line, String num) {
+    StringBuilder numberedLine = new StringBuilder();
+    numberedLine.append("<li id=\"" + num + "\">");
+    numberedLine.append(line);
+    numberedLine.append("</li>");
+    return numberedLine.substring(0);
+  }
+
   static String loadInclude(SourcePositionInfo pos, String filename, String id, boolean trim) {
     Reader input = null;
     StringBuilder result = new StringBuilder();
@@ -196,20 +204,25 @@
   }
 
   static String readFile(SourcePositionInfo pos, String filename, String id, boolean trim,
-      boolean escape, boolean errorOk) {
+      boolean escape, boolean numberedLines, boolean errorOk) {
     Reader input = null;
     StringBuilder result = new StringBuilder();
     int trailing = 0;
     boolean started = false;
+
     try {
+
       input = new FileReader(filename);
       LineNumberReader lines = new LineNumberReader(input);
 
       while (true) {
         String line = lines.readLine();
+        String lineNum = Integer.toString(lines.getLineNumber());
+
         if (line == null) {
           break;
         }
+
         if (trim) {
           if (isIncludeLine(line)) {
             continue;
@@ -223,15 +236,28 @@
             if (escape) {
               line = escapeHtml(line);
             }
+            if (numberedLines) {
+              line = addLineNumber(line, lineNum);
+            }
             result.append(line);
             trailing = 1; // add \n next time, maybe
             started = true;
           } else {
             if (started) {
-              trailing++;
+              if (numberedLines) {
+                result.append('\n');
+                line = line + " ";
+                line = addLineNumber(line, lineNum);
+                result.append(line);
+              } else {
+                trailing++;
+              }
             }
           }
         } else {
+            if (numberedLines) {
+              line = addLineNumber(line, lineNum);
+            }
           result.append(line);
           result.append('\n');
         }