📄 htmldoclet.java
字号:
output.endCell(); } output.endRow(); } private void printNavBarTopNaviCell(HtmlPage output) { output.beginCell(CssClass.NAVBAR_TOP_NAVI); output.beginAnchor(output.getPathToRoot() + "/index" + filenameExtension, "Show in a frameset", "_top"); output.print("Frames"); output.endAnchor(); output.print(" | "); output.beginAnchor(output.getFile().getName(), "Show without frames", "_top"); output.print("No Frames"); output.endAnchor(); output.print(" "); output.endCell(); } private void printNavBarTop(HtmlPage output, String currentPage) { printNavBarTop(output, currentPage, null, null, null); } private void printNavBarTop(HtmlPage output, String currentPage, ClassDoc currentClass, Object prev, Object next) { if (!optionNoNavBar.getValue()) { output.beginTable(CssClass.NAVBAR_TOP); printNavBarTopRow(output, currentPage, currentClass); output.beginRow(); if ("class".equals(currentPage)) { output.beginCell(CssClass.NAVBAR_TOP_NAVI); ClassDoc prevClass = (ClassDoc)prev; ClassDoc nextClass = (ClassDoc)next; if (null != prevClass) { output.anchor(getClassDocURL(output, prevClass), "Prev Class"); } else { output.print("Prev Class"); } output.print(" | "); if (null != nextClass) { output.anchor(getClassDocURL(output, nextClass), "Next Class"); } else { output.print("Next Class"); } output.endCell(); } else if ("split-index".equals(currentPage)) { output.beginCell(CssClass.NAVBAR_TOP_NAVI); Integer prevLetter = (Integer)prev; Integer nextLetter = (Integer)next; if (null != prevLetter) { output.anchor("alphaindex-" + prevLetter + filenameExtension, "Prev Letter"); } else { output.print("Prev Letter"); } output.print(" | "); if (null != nextLetter) { output.anchor("alphaindex-" + nextLetter + filenameExtension, "Next Letter"); } else { output.print("Next Letter"); } output.endCell(); } else { output.beginCell(CssClass.NAVBAR_TOP_NAVI); output.endCell(); } printNavBarTopNaviCell(output); output.endRow(); if ("class".equals(currentPage)) { output.beginRow(); output.beginCell(CssClass.NAVBAR_TOP_NAVI); output.print("Summary: "); if (currentClass.innerClasses().length > 0) { output.anchor("#summary-inner", "Nested"); } else { output.print("Nested"); } output.print(" | "); if (currentClass.fields().length > 0) { output.anchor("#summary-fields", "Field"); } else { output.print("Field"); } output.print(" | "); if (currentClass.methods().length > 0) { output.anchor("#summary-methods", "Method"); } else { output.print("Method"); } output.print(" | "); if (currentClass.constructors().length > 0) { output.anchor("#summary-constructors", "Constr"); } else { output.print("Constr"); } output.endCell(); output.beginCell(CssClass.NAVBAR_TOP_NAVI); output.print("Detail: "); if (currentClass.innerClasses().length > 0) { output.anchor("#detail-inner", "Nested"); } else { output.print("Nested"); } output.print(" | "); if (currentClass.fields().length > 0) { output.anchor("#detail-fields", "Field"); } else { output.print("Field"); } output.print(" | "); if (currentClass.methods().length > 0) { output.anchor("#detail-methods", "Method"); } else { output.print("Method"); } output.print(" | "); if (currentClass.constructors().length > 0) { output.anchor("#detail-constructors", "Constr"); } else { output.print("Constr"); } output.endCell(); output.endRow(); } output.endTable(); } } private void printNavBarTopPackage(HtmlPage output, String currentPage, PackageDoc prevPackage, PackageDoc nextPackage) { if (!optionNoNavBar.getValue()) { output.beginTable(CssClass.NAVBAR_TOP); printNavBarTopRow(output, currentPage, null); output.beginRow(); output.beginCell(CssClass.NAVBAR_TOP_NAVI); if (null != prevPackage) { output.anchor(output.getPathToRoot() + "/" + getPackageURL(prevPackage) + "package-summary" + filenameExtension, "Prev Package"); } else { output.print("Prev Package"); } output.print(" | "); if (null != nextPackage) { output.anchor(output.getPathToRoot() + "/" + getPackageURL(nextPackage) + "package-summary" + filenameExtension, "Next Package"); } else { output.print("Next Package"); } output.endCell(); printNavBarTopNaviCell(output); output.endRow(); output.endTable(); } } private void printNavBarBottom(HtmlPage output, String currentPage) { printNavBarBottom(output, currentPage, null); } private void printNavBarBottom(HtmlPage output, String currentPage, ClassDoc currentClass) { if ("class".equals(currentPage)) { String boilerplate = null; Tag[] boilerplateTags = getOuterClassDoc(currentClass).tags("@boilerplate"); if (boilerplateTags.length > 0) { boilerplate = boilerplateTags[0].text(); } if (null != boilerplate) { output.hr(); output.beginDiv(CssClass.CLASS_BOILERPLATE); output.print(boilerplate); output.endDiv(CssClass.CLASS_BOILERPLATE); output.hr(); } } if (!optionNoNavBar.getValue()) { output.beginDiv(CssClass.NAVBAR_BOTTOM_SPACER); output.print(" "); output.endDiv(CssClass.NAVBAR_BOTTOM_SPACER); output.beginTable(CssClass.NAVBAR_BOTTOM); output.beginRow(); output.beginCell(); printNavBar(output, currentPage, currentClass); output.endCell(); if (null != optionFooter.getValue()) { output.beginCell(); output.print(replaceDocRoot(output, optionFooter.getValue())); output.endCell(); } output.endRow(); output.endTable(); } if (null != optionBottom.getValue()) { output.hr(); output.print(replaceDocRoot(output, optionBottom.getValue())); } } private void printPackagePageClasses(HtmlPage output, ClassDoc[] classDocs, String header) { if (classDocs.length > 0) { output.beginDiv(CssClass.TABLE_CONTAINER); output.beginTable(CssClass.PACKAGE_SUMMARY, new String[] { "border", "width" }, new String[] { "1", "100%" }); output.rowDiv(CssClass.TABLE_HEADER, header); for (int i=0; i<classDocs.length; ++i) { ClassDoc classDoc = classDocs[i]; if (classDoc.isIncluded()) { output.beginRow(); output.beginCell(CssClass.PACKAGE_SUMMARY_LEFT); printType(output, classDoc); output.endCell(); output.beginCell(CssClass.PACKAGE_SUMMARY_RIGHT); printTags(output, classDoc, classDoc.firstSentenceTags(), true); output.endCell(); output.endRow(); } } output.endTable(); output.endDiv(CssClass.TABLE_CONTAINER); output.print("\n"); } } private void printPackagesListFile() throws IOException { PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(new File(getTargetDirectory(), "package-list")), "UTF-8")); PackageDoc[] packages = getRootDoc().specifiedPackages(); for (int i=0; i<packages.length; ++i) { String packageName = packages[i].name(); if (packageName.length() > 0) { out.println(packageName); } } out.close(); } private void printPackagePage(File packageDir, String pathToRoot, PackageDoc packageDoc, PackageDoc prevPackageDoc, PackageDoc nextPackageDoc) throws IOException { HtmlPage output = newHtmlPage(new File(packageDir, "package-summary" + filenameExtension), pathToRoot); Set keywords = new LinkedHashSet(); keywords.add(packageDoc.name() + " packages"); output.beginPage(getPageTitle(packageDoc.name()), getOutputCharset(), keywords, getStylesheets()); output.beginBody(CssClass.BODY_CONTENT_PACKAGE); printNavBarTopPackage(output, "package", prevPackageDoc, nextPackageDoc); output.beginDiv(CssClass.PACKAGE_TITLE); output.print("Package "); if (packageDoc.name().length() > 0) { output.print(packageDoc.name()); } else { output.print("<Unnamed>"); } output.endDiv(CssClass.PACKAGE_TITLE); output.beginDiv(CssClass.PACKAGE_DESCRIPTION_TOP); printTags(output, packageDoc, packageDoc.firstSentenceTags(), true); output.endDiv(CssClass.PACKAGE_DESCRIPTION_TOP); printPackagePageClasses(output, packageDoc.interfaces(), "Interface Summary"); printPackagePageClasses(output, packageDoc.ordinaryClasses(), "Class Summary"); printPackagePageClasses(output, packageDoc.exceptions(), "Exception Summary"); printPackagePageClasses(output, packageDoc.errors(), "Error Summary"); output.anchorName("description"); output.beginDiv(CssClass.PACKAGE_DESCRIPTION_FULL); printTags(output, packageDoc, packageDoc.inlineTags(), false); output.endDiv(CssClass.PACKAGE_DESCRIPTION_FULL); printNavBarBottom(output, "package"); output.endBody(); output.endPage(); output.close(); } static class TreeNode implements Comparable { ClassDoc classDoc; SortedSet children = new TreeSet(); TreeNode(ClassDoc classDoc) { TreeNode.this.classDoc = classDoc; } public boolean equals(Object other) { return classDoc.equals(((TreeNode)other).classDoc); } public int compareTo(Object other) { return classDoc.compareTo(((TreeNode)other).classDoc); } public int hashCode() { return classDoc.hashCode(); } } private TreeNode addClassTreeNode(Map treeMap, ClassDoc classDoc) { TreeNode node = (TreeNode)treeMap.get(classDoc.qualifiedName());
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -