📄 htmldoclet.java
字号:
} output.endDiv(CssClass.PACKAGE_MENU_LIST); output.endBody(); output.endPage(); output.close(); } private void printClassMenuEntry(HtmlPage output, ClassDoc classDoc) { CssClass entryClass; if (classDoc.isInterface()) { entryClass = CssClass.CLASS_MENU_ENTRY_INTERFACE; } else { entryClass = CssClass.CLASS_MENU_ENTRY_CLASS; } output.beginSpan(entryClass); output.beginAnchor(getClassDocURL(output, classDoc), classDoc.qualifiedTypeName(), "content"); output.print(classDoc.name()); output.endAnchor(); output.endSpan(entryClass); output.br(); } private void printClassMenuSection(HtmlPage output, Collection classDocs, String header) { if (!classDocs.isEmpty()) { output.div(CssClass.CLASS_MENU_SUBTITLE, header); Iterator it = classDocs.iterator(); while (it.hasNext()) { ClassDoc classDoc = (ClassDoc)it.next(); printClassMenuEntry(output, classDoc); } } } private void printClassMenuList(HtmlPage output, ClassDoc[] classDocs, boolean categorized) { output.beginDiv(CssClass.CLASS_MENU_LIST); if (categorized) { Set classes = new TreeSet(); Set interfaces = new TreeSet(); Set exceptions = new TreeSet(); Set errors = new TreeSet(); for (int i=0; i<classDocs.length; ++i) { ClassDoc classDoc = classDocs[i]; if (classDoc.isInterface()) { interfaces.add(classDoc); } else if (classDoc.isException()) { exceptions.add(classDoc); } else if (classDoc.isError()) { errors.add(classDoc); } else { classes.add(classDoc); } } printClassMenuSection(output, interfaces, "Interfaces"); printClassMenuSection(output, classes, "Classes"); printClassMenuSection(output, exceptions, "Exceptions"); printClassMenuSection(output, errors, "Errors"); } else { for (int i=0; i<classDocs.length; ++i) { ClassDoc classDoc = classDocs[i]; if (classDoc.isIncluded()) { printClassMenuEntry(output, classDoc); } } } output.endDiv(CssClass.CLASS_MENU_LIST); } private void printAllClassesMenuPage() throws IOException { HtmlPage output = newHtmlPage(new File(getTargetDirectory(), "all-classes" + filenameExtension), "."); output.beginPage(getPageTitle("Class Menu"), getOutputCharset(), getStylesheets()); output.beginBody(CssClass.BODY_MENU_CLASSES, false); output.div(CssClass.CLASS_MENU_TITLE, "All Classes"); printClassMenuList(output, getRootDoc().classes(), false); output.endBody(); output.endPage(); output.close(); } private void printPackageClassesMenuPage(File packageDir, String pathToRoot, PackageDoc packageDoc) throws IOException { HtmlPage output = newHtmlPage(new File(packageDir, "classes" + filenameExtension), pathToRoot); output.beginPage(getPageTitle(packageDoc.name() + " Class Menu"), getOutputCharset(), getStylesheets()); output.beginBody(CssClass.BODY_MENU_CLASSES, false); output.beginDiv(CssClass.CLASS_MENU_TITLE); output.beginAnchor("package-summary" + filenameExtension, "", "content"); if (packageDoc.name().length() > 0) { output.print(packageDoc.name()); } else { output.print("<Unnamed>"); } output.endAnchor(); output.endDiv(CssClass.CLASS_MENU_TITLE); printClassMenuList(output, packageDoc.allClasses(), true); output.endBody(); output.endPage(); output.close(); } private void printSplitIndex() throws IOException { Map categorizedIndex = getCategorizedIndex(); Iterator it = categorizedIndex.keySet().iterator(); int n = 1; int count = categorizedIndex.size(); while (it.hasNext()) { Character c = (Character)it.next(); List classList = (List)categorizedIndex.get(c); printIndexPage(n++, count, c, classList); } } private void printIndexPage() throws IOException { printIndexPage(0, 0, null, null); } private void printIndexPage(int index, int maxIndex, Character letter, List classList) throws IOException { String pageName = "alphaindex"; if (null != letter) { pageName += "-" + index; } HtmlPage output = newHtmlPage(new File(getTargetDirectory(), pageName + filenameExtension), "."); output.beginPage(getPageTitle("Alphabetical Index"), getOutputCharset(), getStylesheets()); output.beginBody(CssClass.BODY_CONTENT_INDEX); if (null == letter) { printNavBarTop(output, "index"); } else { printNavBarTop(output, "split-index", null, (index > 1) ? new Integer(index - 1) : null, (index < maxIndex) ? new Integer(index + 1) : null); } { String title; if (null == letter) { title = "Alphabetical Index"; } else { title = "Alphabetical Index: " + letter; } output.div(CssClass.INDEX_TITLE, title); if (null != letter || getCategorizedIndex().keySet().size() > 1) { output.beginDiv(CssClass.INDEX_LETTERS); Iterator it = getCategorizedIndex().keySet().iterator(); int n = 1; while (it.hasNext()) { Character c = (Character)it.next(); output.beginSpan(CssClass.INDEX_LETTER); if (letter != null) { output.beginAnchor("alphaindex-" + n + filenameExtension); } else { output.beginAnchor("#" + c); } output.print(c.toString()); output.endAnchor(); output.endSpan(CssClass.INDEX_LETTER); output.beginSpan(CssClass.INDEX_LETTER_SPACER); output.print(" "); output.endSpan(CssClass.INDEX_LETTER_SPACER); ++n; } } output.endDiv(CssClass.INDEX_LETTERS); } if (null != letter) { printIndexCategory(output, letter, classList); } else { Map categorizedIndex = getCategorizedIndex(); Iterator categoryIt = categorizedIndex.keySet().iterator(); while (categoryIt.hasNext()) { letter = (Character)categoryIt.next(); classList = (List)categorizedIndex.get(letter); output.anchorName(letter.toString()); printIndexCategory(output, letter, classList); } } printNavBarBottom(output, "index"); output.endBody(); output.endPage(); output.close(); } private void printIndexCategory(HtmlPage output, Character letter, List classList) { Iterator it = classList.iterator(); output.div(CssClass.INDEX_CATEGORY_HEADER, letter.toString()); output.beginDiv(CssClass.INDEX_CATEGORY); while (it.hasNext()) { Doc entry = (Doc)it.next(); printIndexEntry(output, entry); } output.endDiv(CssClass.INDEX_CATEGORY); } private void printDeprecationSummary(HtmlPage output, List docs, String header) { if (!docs.isEmpty()) { output.beginDiv(CssClass.TABLE_CONTAINER); output.beginTable(CssClass.DEPRECATION_SUMMARY, new String[] { "border", "width" }, new String[] { "1", "100%" }); output.rowDiv(CssClass.TABLE_HEADER, header); Iterator it = docs.iterator(); while (it.hasNext()) { Doc doc = (Doc)it.next(); output.beginRow(); output.beginCell(CssClass.DEPRECATION_SUMMARY_LEFT); if (doc instanceof Type) { printType(output, (Type)doc); } else { ProgramElementDoc memberDoc = (ProgramElementDoc)doc; output.beginAnchor(getMemberDocURL(output, memberDoc)); output.print(memberDoc.containingClass().qualifiedName()); output.print("."); output.print(memberDoc.name()); if (memberDoc instanceof ExecutableMemberDoc) { output.print(((ExecutableMemberDoc)memberDoc).flatSignature()); } output.endAnchor(); } output.beginDiv(CssClass.DEPRECATION_SUMMARY_DESCRIPTION); printTags(output, doc, doc.tags("deprecated")[0].firstSentenceTags(), true); output.endDiv(CssClass.DEPRECATION_SUMMARY_DESCRIPTION); output.endCell(); output.endRow(); } output.endTable(); output.endDiv(CssClass.TABLE_CONTAINER); output.print("\n"); } } private void printSerializationPage() throws IOException { HtmlPage output = newHtmlPage(new File(getTargetDirectory(), "serialized-form" + filenameExtension), "."); output.beginPage(getPageTitle("Serialized Form"), getOutputCharset(), getStylesheets()); output.beginBody(CssClass.BODY_CONTENT_DEPRECATED); printNavBarTop(output, "serialized"); output.div(CssClass.SERIALIZED_TITLE, "Serialized Form"); Iterator it = getAllPackages().iterator(); while (it.hasNext()) { PackageDoc packageDoc = (PackageDoc)it.next(); List serializableClasses = new LinkedList(); ClassDoc[] classes = packageDoc.allClasses(); for (int i=0; i<classes.length; ++i) { ClassDoc classDoc = classes[i]; if (classDoc.isSerializable() || classDoc.isExternalizable()) { serializableClasses.add(classDoc); } } if (!serializableClasses.isEmpty()) { output.div(CssClass.SERIALIZED_PACKAGE_HEADER, "Package " + packageDoc.name()); Iterator cit = serializableClasses.iterator(); while (cit.hasNext()) { ClassDoc classDoc = (ClassDoc)cit.next(); output.anchorName(classDoc.qualifiedTypeName()); output.beginDiv(CssClass.SERIALIZED_CLASS_HEADER); output.print("Class "); printType(output, classDoc, true); output.print(" extends "); printType(output, classDoc.superclass()); output.print(" implements Serializable"); output.endDiv(CssClass.SERIALIZED_CLASS_HEADER); FieldDoc serialVersionUidField = findField(classDoc, "serialVersionUID"); if (null != serialVersionUidField && serialVersionUidField.isFinal() && serialVersionUidField.isStatic() && serialVersionUidField.type().typeName().equals("long")) { String fieldValue = serialVersionUidField.constantValueExpression(); if (null != fieldValue) { output.beginDiv(CssClass.SERIALIZED_SVUID_OUTER); output.span(CssClass.SERIALIZED_SVUID_HEADER, "serialVersionUID: "); output.span(CssClass.SERIALIZED_SVUID_VALUE, fieldValue); output.endDiv(CssClass.SERIALIZED_SVUID_OUTER); } } printMemberDetails(output, classDoc.serializationMethods(), "Serialization Methods", true, null); printMemberDetails(output, classDoc.serializableFields(), "Serialized Fields", true, null); } } } printNavBarBottom(output, "serialized"); output.endBody(); output.endPage(); output.close(); } private void printDeprecationPage() throws IOException { HtmlPage output = newHtmlPage(new File(getTargetDirectory(), "deprecated" + filenameExtension),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -