/[classpath]/gjdoc/src/gnu/classpath/tools/doclets/htmldoclet/HtmlDoclet.java
ViewVC logotype

Diff of /gjdoc/src/gnu/classpath/tools/doclets/htmldoclet/HtmlDoclet.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4 by julian, Tue Dec 7 15:00:01 2004 UTC revision 1.5 by julian, Wed Dec 8 14:58:19 2004 UTC
# Line 46  import java.io.IOException; Line 46  import java.io.IOException;
46  import java.io.StringWriter;  import java.io.StringWriter;
47    
48  import java.util.Arrays;  import java.util.Arrays;
49    import java.util.Collection;
50  import java.util.HashMap;  import java.util.HashMap;
51  import java.util.Iterator;  import java.util.Iterator;
52  import java.util.LinkedHashSet;  import java.util.LinkedHashSet;
# Line 93  public class HtmlDoclet Line 94  public class HtmlDoclet
94              }              }
95              else {              else {
96                 output.beginSpan(CssClass.NAVBAR_ITEM_ENABLED);                 output.beginSpan(CssClass.NAVBAR_ITEM_ENABLED);
97                 output.beginAnchor("index" + filenameExtension);                 output.beginAnchor("package-summary" + filenameExtension);
98                 output.print("Package");                 output.print("Package");
99                 output.endAnchor();                 output.endAnchor();
100                 output.endSpan(CssClass.NAVBAR_ITEM_ENABLED);                 output.endSpan(CssClass.NAVBAR_ITEM_ENABLED);
# Line 288  public class HtmlDoclet Line 289  public class HtmlDoclet
289    
290           for (int i=0; i<classDocs.length; ++i) {           for (int i=0; i<classDocs.length; ++i) {
291              ClassDoc classDoc = classDocs[i];              ClassDoc classDoc = classDocs[i];
292              output.beginRow();              if (classDoc.isIncluded()) {
293                   output.beginRow();
294                            
295              output.beginCell(CssClass.PACKAGE_SUMMARY_LEFT);                 output.beginCell(CssClass.PACKAGE_SUMMARY_LEFT);
296              printType(output, classDoc);                 printType(output, classDoc);
297              output.endCell();                 output.endCell();
298    
299              output.beginCell(CssClass.PACKAGE_SUMMARY_RIGHT);                 output.beginCell(CssClass.PACKAGE_SUMMARY_RIGHT);
300              printTags(output, classDoc.firstSentenceTags(), true);                 printTags(output, classDoc.firstSentenceTags(), true);
301              output.endCell();                 output.endCell();
302              output.endRow();                 output.endRow();
303                }
304           }           }
305           output.endTable();           output.endTable();
306        }        }
# Line 307  public class HtmlDoclet Line 310  public class HtmlDoclet
310        throws IOException        throws IOException
311     {     {
312        HtmlPage output = new HtmlPage(new File(packageDir,        HtmlPage output = new HtmlPage(new File(packageDir,
313                                                "index" + filenameExtension),                                                "package-summary" + filenameExtension),
314                                       pathToRoot);                                       pathToRoot);
315        output.beginPage(packageDoc.name());        output.beginPage(packageDoc.name());
316        output.beginBody();        output.beginBody();
317        printNavBarTop(output, "package");        printNavBarTop(output, "package");
318    
319        output.div(CssClass.PACKAGE_TITLE, "Package " + packageDoc.name());        output.beginDiv(CssClass.PACKAGE_TITLE);
320          output.print("Package ");
321          if (packageDoc.name().length() > 0) {
322             output.print(packageDoc.name());
323          }
324          else {
325             output.print("&lt;Unnamed&gt;");
326          }
327          output.endDiv(CssClass.PACKAGE_TITLE);
328    
329        output.beginDiv(CssClass.PACKAGE_DESCRIPTION_TOP);        output.beginDiv(CssClass.PACKAGE_DESCRIPTION_TOP);
330        printTags(output, packageDoc.firstSentenceTags(), true);        printTags(output, packageDoc.firstSentenceTags(), true);
# Line 525  public class HtmlDoclet Line 536  public class HtmlDoclet
536        String anchor = null;        String anchor = null;
537        String description = null;        String description = null;
538        if (entry instanceof PackageDoc) {        if (entry instanceof PackageDoc) {
539           output.beginAnchor(getPackageURL((PackageDoc)entry) + "index" + filenameExtension);           output.beginAnchor(getPackageURL((PackageDoc)entry) + "package-summary" + filenameExtension);
540           output.print(entry.name());           output.print(entry.name());
541           output.endAnchor();           output.endAnchor();
542           output.print(" - package");           output.print(" - package");
# Line 548  public class HtmlDoclet Line 559  public class HtmlDoclet
559           else {           else {
560              output.print("class ");              output.print("class ");
561           }           }
562           output.print(classDoc.containingPackage().name());           String packageName = classDoc.containingPackage().name();
563           output.print(".");           if (packageName.length() > 0) {
564                output.print(packageName);
565                output.print(".");
566             }
567           printType(output, classDoc);           printType(output, classDoc);
568        }        }
569        else {        else {
# Line 576  public class HtmlDoclet Line 590  public class HtmlDoclet
590              output.print("field in class ");              output.print("field in class ");
591           }           }
592           ClassDoc containingClass = memberDoc.containingClass();           ClassDoc containingClass = memberDoc.containingClass();
593           output.print(containingClass.containingPackage().name());           String packageName = containingClass.containingPackage().name();
594           output.print(".");           if (packageName.length() > 0) {
595                output.print(packageName);
596                output.print(".");
597             }
598           printType(output, containingClass);           printType(output, containingClass);
599        }        }
600        output.beginDiv(CssClass.INDEX_ENTRY_DESCRIPTION);        output.beginDiv(CssClass.INDEX_ENTRY_DESCRIPTION);
# Line 632  public class HtmlDoclet Line 649  public class HtmlDoclet
649    
650        output.beginDiv(CssClass.PACKAGE_MENU_LIST);        output.beginDiv(CssClass.PACKAGE_MENU_LIST);
651    
652        PackageDoc[] packageDocs = getRootDoc().specifiedPackages();        Set packageDocs = getAllPackages();
653        for (int i=0; i<packageDocs.length; ++i) {        Iterator it = packageDocs.iterator();
654           PackageDoc packageDoc = packageDocs[i];        while (it.hasNext()) {
655             PackageDoc packageDoc = (PackageDoc)it.next();
656           output.beginDiv(CssClass.PACKAGE_MENU_ENTRY);           output.beginDiv(CssClass.PACKAGE_MENU_ENTRY);
657           output.beginAnchor(getPackageURL(packageDoc) + "classes" + filenameExtension,           output.beginAnchor(getPackageURL(packageDoc) + "classes" + filenameExtension,
658                              null,                              null,
659                              "classes");                              "classes");
660           output.print(packageDoc.name());           if (packageDoc.name().length() > 0) {
661                output.print(packageDoc.name());
662             }
663             else {
664                output.print("&lt;unnamed package&gt;");
665             }
666           output.endAnchor();           output.endAnchor();
667           output.endDiv(CssClass.PACKAGE_MENU_ENTRY);           output.endDiv(CssClass.PACKAGE_MENU_ENTRY);
668        }        }
# Line 656  public class HtmlDoclet Line 679  public class HtmlDoclet
679    
680        for (int i=0; i<classDocs.length; ++i) {        for (int i=0; i<classDocs.length; ++i) {
681           ClassDoc classDoc = classDocs[i];           ClassDoc classDoc = classDocs[i];
682           output.beginDiv(CssClass.CLASS_MENU_ENTRY);           if (classDoc.isIncluded()) {
683           output.beginAnchor(getClassDocURL(output, classDoc),              output.beginDiv(CssClass.CLASS_MENU_ENTRY);
684                              classDoc.qualifiedTypeName(),              output.beginAnchor(getClassDocURL(output, classDoc),
685                              "content");                                 classDoc.qualifiedTypeName(),
686           output.print(classDoc.name());                                 "content");
687           output.endAnchor();              output.print(classDoc.name());
688           output.endDiv(CssClass.CLASS_MENU_ENTRY);              output.endAnchor();
689                output.endDiv(CssClass.CLASS_MENU_ENTRY);
690             }
691        }        }
692    
693        output.endDiv(CssClass.CLASS_MENU_LIST);        output.endDiv(CssClass.CLASS_MENU_LIST);
# Line 696  public class HtmlDoclet Line 721  public class HtmlDoclet
721        output.beginPage(packageDoc.name() + " Class Menu");        output.beginPage(packageDoc.name() + " Class Menu");
722        output.beginBody();        output.beginBody();
723    
724        output.div(CssClass.CLASS_MENU_TITLE, packageDoc.name());        output.beginDiv(CssClass.CLASS_MENU_TITLE);
725          output.beginAnchor("package-summary" + filenameExtension, "", "content");
726          if (packageDoc.name().length() > 0) {
727             output.print(packageDoc.name());
728          }
729          else {
730             output.print("&lt;Unnamed&gt;");
731          }
732          output.endAnchor();
733          output.endDiv(CssClass.CLASS_MENU_TITLE);
734    
735        printClassMenuList(output, packageDoc.allClasses());        printClassMenuList(output, packageDoc.allClasses());
736    
# Line 999  public class HtmlDoclet Line 1033  public class HtmlDoclet
1033    
1034        if (packageGroups.isEmpty()) {        if (packageGroups.isEmpty()) {
1035                
1036           printOverviewPackages(output, getRootDoc().specifiedPackages(),           printOverviewPackages(output, getAllPackages(),
1037                                 "All Packages");                                 "All Packages");
1038        }        }
1039        else {        else {
1040           Set otherPackages = new LinkedHashSet();           Set otherPackages = new LinkedHashSet();
1041           otherPackages.addAll(Arrays.asList(getRootDoc().specifiedPackages()));           otherPackages.addAll(getAllPackages());
1042    
1043           Iterator it = packageGroups.iterator();           Iterator it = packageGroups.iterator();
1044           while (it.hasNext()) {           while (it.hasNext()) {
1045              PackageGroup packageGroup = (PackageGroup)it.next();              PackageGroup packageGroup = (PackageGroup)it.next();
1046              printOverviewPackages(output,              printOverviewPackages(output,
1047                                    (PackageDoc[])packageGroup.getPackages().toArray(new PackageDoc[0]),                                    packageGroup.getPackages(),
1048                                    packageGroup.getName());                                    packageGroup.getName());
1049              otherPackages.removeAll(packageGroup.getPackages());              otherPackages.removeAll(packageGroup.getPackages());
1050           }           }
1051    
1052           if (!otherPackages.isEmpty()) {           if (!otherPackages.isEmpty()) {
1053              printOverviewPackages(output,              printOverviewPackages(output,
1054                                    (PackageDoc[])otherPackages.toArray(new PackageDoc[0]),                                    otherPackages,
1055                                    "Other Packages");                                    "Other Packages");
1056           }           }
1057        }        }
# Line 1035  public class HtmlDoclet Line 1069  public class HtmlDoclet
1069        output.close();        output.close();
1070     }     }
1071    
1072     private void printOverviewPackages(HtmlPage output, PackageDoc[] packageDocs, String header)     private void printOverviewPackages(HtmlPage output, Collection packageDocs, String header)
1073     {     {
1074        output.beginTable(CssClass.OVERVIEW_SUMMARY);        output.beginTable(CssClass.OVERVIEW_SUMMARY);
1075        output.rowDiv(CssClass.TABLE_HEADER, header);        output.rowDiv(CssClass.TABLE_HEADER, header);
1076    
1077        for (int i=0; i<packageDocs.length; ++i) {        Iterator it = packageDocs.iterator();
1078           PackageDoc packageDoc = packageDocs[i];        while (it.hasNext()) {
1079             PackageDoc packageDoc = (PackageDoc)it.next();
1080           output.beginRow();           output.beginRow();
1081                    
1082           output.beginCell(CssClass.OVERVIEW_SUMMARY_LEFT);           output.beginCell(CssClass.OVERVIEW_SUMMARY_LEFT);
1083           output.beginAnchor(getPackageURL(packageDoc) + "index" + filenameExtension);           output.beginAnchor(getPackageURL(packageDoc) + "package-summary" + filenameExtension);
1084           output.print(packageDoc.name());           output.print(packageDoc.name());
1085           output.endAnchor();           output.endAnchor();
1086           output.endCell();           output.endCell();
# Line 1371  public class HtmlDoclet Line 1406  public class HtmlDoclet
1406                       }                       }
1407                       output.endDiv(CssClass.MEMBER_DETAIL_SPECIFIED_BY_LIST);                       output.endDiv(CssClass.MEMBER_DETAIL_SPECIFIED_BY_LIST);
1408                    }                    }
1409                      
1410                      ClassDoc overriddenClassDoc = null;
1411    
1412                      for (ClassDoc superclassDoc = memberDoc.containingClass().superclass();
1413                           null != superclassDoc && null == overriddenClassDoc;
1414                           superclassDoc = superclassDoc.superclass()) {
1415                        
1416                         MethodDoc[] methods = superclassDoc.methods();
1417                         for (int j=0; j<methods.length; ++j) {
1418                            if (methods[j].name().equals(memberDoc.name())
1419                                && methods[j].signature().equals(((MethodDoc)memberDoc).signature())) {
1420                               overriddenClassDoc = superclassDoc;
1421                               break;
1422                            }
1423                         }
1424                      }
1425    
1426                      if (null != overriddenClassDoc) {
1427                         output.beginDiv(CssClass.MEMBER_DETAIL_OVERRIDDEN_LIST);
1428                         output.div(CssClass.MEMBER_DETAIL_OVERRIDDEN_HEADER, "Overrides:");
1429                         output.beginDiv(CssClass.MEMBER_DETAIL_OVERRIDDEN_ITEM);
1430    
1431                         output.print(memberDoc.name() + " in interface ");
1432                         printType(output, overriddenClassDoc);
1433    
1434                         output.endDiv(CssClass.MEMBER_DETAIL_OVERRIDDEN_ITEM);
1435                         output.endDiv(CssClass.MEMBER_DETAIL_OVERRIDDEN_LIST);
1436                      }
1437                 }                 }
1438    
1439                 ExecutableMemberDoc execMemberDoc                 ExecutableMemberDoc execMemberDoc
# Line 1500  public class HtmlDoclet Line 1563  public class HtmlDoclet
1563              if (memberDoc.isMethod()) {              if (memberDoc.isMethod()) {
1564                 printType(output, ((MethodDoc)memberDoc).returnType());                 printType(output, ((MethodDoc)memberDoc).returnType());
1565              }              }
1566                else if (memberDoc.isField()) {
1567                   printType(output, ((FieldDoc)memberDoc).type());
1568                }
1569              output.endCell();              output.endCell();
1570    
1571              output.beginCell(CssClass.CLASS_SUMMARY_RIGHT);              output.beginCell(CssClass.CLASS_SUMMARY_RIGHT);
# Line 1629  public class HtmlDoclet Line 1695  public class HtmlDoclet
1695    
1696     private String getPackageURL(PackageDoc packageDoc)     private String getPackageURL(PackageDoc packageDoc)
1697     {     {
1698        return packageDoc.name().replace('.', '/') + '/';        if (packageDoc.name().length() > 0) {
1699             return packageDoc.name().replace('.', '/') + '/';
1700          }
1701          else {
1702             return "";
1703          }
1704     }     }
1705    
1706     private String getClassURL(ClassDoc classDoc)     private String getClassURL(ClassDoc classDoc)
# Line 1692  public class HtmlDoclet Line 1763  public class HtmlDoclet
1763           printDeprecationPage();           printDeprecationPage();
1764        }        }
1765    
1766        PackageDoc[] packageDocs = getRootDoc().specifiedPackages();        Collection packageDocs = getAllPackages();
1767        for (int i=0; i<packageDocs.length; ++i) {        Iterator it = packageDocs.iterator();
1768           PackageDoc packageDoc = packageDocs[i];        while (it.hasNext()) {
1769           File sourcePackageDir = getPackageSourceDir(packageDoc);           PackageDoc packageDoc = (PackageDoc)it.next();
1770           File packageDir = new File(getTargetDirectory(),           File packageDir = new File(getTargetDirectory(),
1771                                      packageDoc.name().replace('.', File.separatorChar));                                      packageDoc.name().replace('.', File.separatorChar));
1772           if (!packageDir.exists() && !packageDir.mkdirs()) {           if (!packageDir.exists() && !packageDir.mkdirs()) {
1773              throw new IOException("Couldn't create directory " + packageDir);              throw new IOException("Couldn't create directory " + packageDir);
1774           }           }
1775           copyDocFiles(sourcePackageDir, packageDir);           File sourcePackageDir = null;
1776             try {
1777                sourcePackageDir = getPackageSourceDir(packageDoc);
1778                copyDocFiles(sourcePackageDir, packageDir);
1779             }
1780             catch (IOException ignore) {
1781             }
1782           String pathToRoot = getPathToRoot(packageDir, getTargetDirectory());           String pathToRoot = getPathToRoot(packageDir, getTargetDirectory());
1783           printNotice("Writing HTML files for package " + packageDoc.name());           printNotice("Writing HTML files for package " + packageDoc.name());
1784           printPackagePage(packageDir, pathToRoot, packageDoc);           printPackagePage(packageDir, pathToRoot, packageDoc);
# Line 1718  public class HtmlDoclet Line 1795  public class HtmlDoclet
1795                    printClassUsagePage(packageDir, pathToRoot, classDocs[j]);                    printClassUsagePage(packageDir, pathToRoot, classDocs[j]);
1796                 }                 }
1797                 if (optionLinkSource.getValue() && null == classDoc.containingClass()) {                 if (optionLinkSource.getValue() && null == classDoc.containingClass()) {
1798                    Java2xhtml java2xhtml = new Java2xhtml();                    if (null != sourcePackageDir) {
1799                    Properties properties = new Properties();                       Java2xhtml java2xhtml = new Java2xhtml();
1800                    properties.setProperty("isCodeSnippet", "true");                       Properties properties = new Properties();
1801                    properties.setProperty("hasLineNumbers", "true");                       properties.setProperty("isCodeSnippet", "true");
1802                    java2xhtml.setProperties(properties);                       properties.setProperty("hasLineNumbers", "true");
1803                         java2xhtml.setProperties(properties);
1804                    StringWriter sourceBuffer = new StringWriter();                      
1805                    File sourceFile = new File(sourcePackageDir,                       StringWriter sourceBuffer = new StringWriter();
1806                                               classDoc.name() + ".java");                       File sourceFile = new File(sourcePackageDir,
1807                    FileReader sourceReader = new FileReader(sourceFile);                                                  classDoc.name() + ".java");
1808                    IOToolkit.copyStream(sourceReader, sourceBuffer);                       FileReader sourceReader = new FileReader(sourceFile);
1809                    sourceReader.close();                       IOToolkit.copyStream(sourceReader, sourceBuffer);
1810                    String result = java2xhtml.makeHTML(sourceBuffer.getBuffer(), sourceFile.getName());                       sourceReader.close();
1811                                           String result = java2xhtml.makeHTML(sourceBuffer.getBuffer(), sourceFile.getName());
1812                    File targetFile = new File(packageDir,                      
1813                                               classDoc.name() + "-source" + filenameExtension);                       File targetFile = new File(packageDir,
1814                    FileWriter targetWriter = new FileWriter(targetFile);                                                  classDoc.name() + "-source" + filenameExtension);
1815                    targetWriter.write(result);                       FileWriter targetWriter = new FileWriter(targetFile);
1816                    targetWriter.close();                       targetWriter.write(result);
1817                         targetWriter.close();
1818                      }
1819                      else {
1820                         printWarning("Cannot locate source file for class " + classDoc.qualifiedTypeName());
1821                      }
1822                 }                 }
1823              }              }
1824           }           }

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26