📄 htmldoclet.java
字号:
"."); output.beginPage(getPageTitle("Deprecated API"), getOutputCharset(), getStylesheets()); output.beginBody(CssClass.BODY_CONTENT_DEPRECATED); printNavBarTop(output, "deprecated"); output.div(CssClass.DEPRECATION_TITLE, "Deprecated API"); List deprecatedInterfaces = new LinkedList(); List deprecatedExceptions = new LinkedList(); List deprecatedErrors = new LinkedList(); List deprecatedClasses = new LinkedList(); List deprecatedFields = new LinkedList(); List deprecatedMethods = new LinkedList(); List deprecatedConstructors = new LinkedList(); ClassDoc[] classDocs = getRootDoc().classes(); for (int i=0; i<classDocs.length; ++i) { ClassDoc classDoc = classDocs[i]; { Tag[] deprecatedTags = classDoc.tags("deprecated"); if (null != deprecatedTags && deprecatedTags.length > 0) { if (classDoc.isInterface()) { deprecatedInterfaces.add(classDoc); } else if (classDoc.isException()) { deprecatedExceptions.add(classDoc); } else if (classDoc.isError()) { deprecatedErrors.add(classDoc); } else { deprecatedClasses.add(classDoc); } } } ConstructorDoc[] constructors = classDoc.constructors(); for (int j=0; j<constructors.length; ++j) { Tag[] deprecatedTags = constructors[j].tags("deprecated"); if (null != deprecatedTags && deprecatedTags.length > 0) { deprecatedConstructors.add(constructors[j]); } } MethodDoc[] methods = classDoc.methods(); for (int j=0; j<methods.length; ++j) { Tag[] deprecatedTags = methods[j].tags("deprecated"); if (null != deprecatedTags && deprecatedTags.length > 0) { deprecatedMethods.add(methods[j]); } } FieldDoc[] fields = classDoc.fields(); for (int j=0; j<fields.length; ++j) { Tag[] deprecatedTags = fields[j].tags("deprecated"); if (null != deprecatedTags && deprecatedTags.length > 0) { deprecatedFields.add(fields[j]); } } } if (!deprecatedInterfaces.isEmpty() || !deprecatedClasses.isEmpty() || !deprecatedExceptions.isEmpty() || !deprecatedErrors.isEmpty() || !deprecatedFields.isEmpty() || !deprecatedMethods.isEmpty() || !deprecatedConstructors.isEmpty()) { output.beginDiv(CssClass.DEPRECATION_TOC); output.div(CssClass.DEPRECATION_TOC_HEADER, "Contents"); output.beginDiv(CssClass.DEPRECATION_TOC_LIST); if (!deprecatedInterfaces.isEmpty()) { output.beginDiv(CssClass.DEPRECATION_TOC_ENTRY); output.anchor("#interfaces", "Deprecated Interfaces"); output.endDiv(CssClass.DEPRECATION_TOC_ENTRY); } if (!deprecatedClasses.isEmpty()) { output.beginDiv(CssClass.DEPRECATION_TOC_ENTRY); output.anchor("#classes", "Deprecated Classes"); output.endDiv(CssClass.DEPRECATION_TOC_ENTRY); } if (!deprecatedExceptions.isEmpty()) { output.beginDiv(CssClass.DEPRECATION_TOC_ENTRY); output.anchor("#exceptions", "Deprecated Exceptions"); output.endDiv(CssClass.DEPRECATION_TOC_ENTRY); } if (!deprecatedErrors.isEmpty()) { output.beginDiv(CssClass.DEPRECATION_TOC_ENTRY); output.anchor("#errors", "Deprecated Errors"); output.endDiv(CssClass.DEPRECATION_TOC_ENTRY); } if (!deprecatedFields.isEmpty()) { output.beginDiv(CssClass.DEPRECATION_TOC_ENTRY); output.anchor("#fields", "Deprecated Fields"); output.endDiv(CssClass.DEPRECATION_TOC_ENTRY); } if (!deprecatedMethods.isEmpty()) { output.beginDiv(CssClass.DEPRECATION_TOC_ENTRY); output.anchor("#methods", "Deprecated Methods"); output.endDiv(CssClass.DEPRECATION_TOC_ENTRY); } if (!deprecatedConstructors.isEmpty()) { output.beginDiv(CssClass.DEPRECATION_TOC_ENTRY); output.anchor("#constructors", "Deprecated Constructors"); output.endDiv(CssClass.DEPRECATION_TOC_ENTRY); } output.endDiv(CssClass.DEPRECATION_TOC_LIST); output.endDiv(CssClass.DEPRECATION_TOC); output.beginDiv(CssClass.DEPRECATION_LIST); output.anchorName("interfaces"); printDeprecationSummary(output, deprecatedInterfaces, "Deprecated Interfaces"); output.anchorName("classes"); printDeprecationSummary(output, deprecatedClasses, "Deprecated Classes"); output.anchorName("exceptions"); printDeprecationSummary(output, deprecatedExceptions, "Deprecated Exceptions"); output.anchorName("errors"); printDeprecationSummary(output, deprecatedErrors, "Deprecated Errors"); output.anchorName("fields"); printDeprecationSummary(output, deprecatedFields, "Deprecated Fields"); output.anchorName("methods"); printDeprecationSummary(output, deprecatedMethods, "Deprecated Methods"); output.anchorName("constructors"); printDeprecationSummary(output, deprecatedConstructors, "Deprecated Constructors"); output.endDiv(CssClass.DEPRECATION_LIST); } else { output.beginDiv(CssClass.DEPRECATION_EMPTY); output.print("No deprecated classes or class members in this API."); output.endDiv(CssClass.DEPRECATION_EMPTY); } printNavBarBottom(output, "deprecated"); output.endBody(); output.endPage(); output.close(); } private void printAboutPage() throws IOException { HtmlPage output = newHtmlPage(new File(getTargetDirectory(), "about" + filenameExtension), "."); output.beginPage(getPageTitle("About"), getOutputCharset(), getStylesheets()); output.beginBody(CssClass.BODY_CONTENT_ABOUT); printNavBarTop(output, "about"); output.div(CssClass.ABOUT_TITLE, "About"); output.beginDiv(CssClass.ABOUT_GENERATOR); output.print("Generated by "); output.print("Gjdoc"); output.print(" HtmlDoclet "); output.print(getDocletVersion()); output.print(", part of "); output.beginAnchor("http://www.gnu.org/software/classpath/cp-tools/", "", "_top"); output.print("GNU Classpath Tools"); output.endAnchor(); output.print(", on "); DateFormat format = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, Locale.US); Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"), Locale.US); format.setCalendar(cal); output.print(format.format(new Date())); output.print("."); output.endDiv(CssClass.ABOUT_GENERATOR); printNavBarBottom(output, "about"); output.endBody(); output.endPage(); output.close(); } private void printSourcePage(File packageDir, ClassDoc classDoc, String sourceXhtml) throws IOException { HtmlPage output = newHtmlPage(new File(packageDir, classDoc.name() + "-source" + filenameExtension), getPathToRoot(packageDir, getTargetDirectory())); output.beginPage(getPageTitle("Source for " + classDoc.qualifiedTypeName()), getOutputCharset(), getStylesheets()); output.beginBody(CssClass.BODY_CONTENT_SOURCE); printNavBarTop(output, "source", classDoc, null, null); output.div(CssClass.SOURCE_TITLE, "Source for " + classDoc.qualifiedTypeName()); output.beginDiv(CssClass.SOURCE); output.print(sourceXhtml); output.endDiv(CssClass.SOURCE); printNavBarBottom(output, "source", classDoc); output.endBody(); output.endPage(); output.close(); } private void printHelpPage() throws IOException { HtmlPage output = newHtmlPage(new File(getTargetDirectory(), "help" + filenameExtension), "."); output.beginPage(getPageTitle("Help"), getOutputCharset(), getStylesheets()); output.beginBody(CssClass.BODY_CONTENT_HELP); printNavBarTop(output, "help"); InputStream helpIn; if (null != optionHelpFile.getValue()){ helpIn = new FileInputStream(optionHelpFile.getValue()); } else { helpIn = getClass().getResourceAsStream("/htmldoclet/help.xhtml"); } output.insert(new InputStreamReader(helpIn, "utf-8")); helpIn.close(); printNavBarBottom(output, "help"); output.endBody(); output.endPage(); output.close(); } private void printOverviewPage() throws IOException { HtmlPage output = newHtmlPage(new File(getTargetDirectory(), "overview-summary" + filenameExtension), "."); output.beginPage(getWindowTitle(), getOutputCharset(), getStylesheets()); output.beginBody(CssClass.BODY_CONTENT_OVERVIEW); printNavBarTop(output, "overview"); String overviewHeader; if (null != optionDocTitle.getValue()) { overviewHeader = optionDocTitle.getValue(); } else if (null != optionTitle.getValue()) { overviewHeader = optionTitle.getValue(); } else { overviewHeader = null; } if (null != overviewHeader) { output.div(CssClass.OVERVIEW_TITLE, overviewHeader); } output.beginDiv(CssClass.OVERVIEW_DESCRIPTION_TOP); printTags(output, getRootDoc(), getRootDoc().firstSentenceTags(), true); output.endDiv(CssClass.OVERVIEW_DESCRIPTION_TOP); List packageGroups = getPackageGroups(); if (packageGroups.isEmpty()) { printOverviewPackages(output, getAllPackages(), "All Packages"); } else { Set otherPackages = new LinkedHashSet(); otherPackages.addAll(getAllPackages()); Iterator it = packageGroups.iterator(); while (it.hasNext()) { PackageGroup packageGroup = (PackageGroup)it.next(); printOverviewPackages(output, packageGroup.getPackages(), packageGroup.getName()); otherPackages.removeAll(packageGroup.getPackages()); } if (!otherPackages.isEmpty()) { printOverviewPackages(output, otherPackages, "Other Packages"); } } output.anchorName("description"); output.beginDiv(CssClass.OVERVIEW_DESCRIPTION_FULL); printTags(output, getRootDoc(), getRootDoc().inlineTags(), false); output.endDiv(CssClass.OVERVIEW_DESCRIPTION_FULL); printNavBarBottom(output, "overview"); output.endBody(); output.endPage(); output.close(); } private void printOverviewPackages(HtmlPage output, Collection packageDocs, String header) { output.beginDiv(CssClass.TABLE_CONTAINER); output.beginTable(CssClass.OVERVIEW_SUMMARY, new String[] { "border", "width" }, new String[] { "1", "100%" }); output.rowDiv(CssClass.TABLE_HEADER, header); Iterator it = packageDocs.iterator(); while (it.hasNext()) { PackageDoc packageDoc = (PackageDoc)it.next(); output.beginRow(); output.beginCell(CssClass.OVERVIEW_SUMMARY_LEFT); output.beginAnchor(getPackageURL(packageDoc) + "package-summary" + filenameExtension); output.print(packageDoc.name()); output.endAnchor(); output.endCell(); output.beginCell(CssClass.OVERVIEW_SUMMARY_RIGHT); printTags(output, packageDoc, packageDoc.firstSentenceTags(), true); output.endCell(); output.endRow(); } output.endTable(); output.endDiv(CssClass.TABLE_CONTAINER); } private void printClassUsagePage(File packageDir, String pathToRoot, ClassDoc classDoc) throws IOException { HtmlPage output = newHtmlPage(new File(packageDir, classDoc.name() + "-uses" + filenameExtension), pathToRoot); output.beginPage(getPageTitle(classDoc.name()), getOutputCharset(), getStylesheets()); output.beginBody(CssClass.BODY_CONTENT_USES); printNavBarTop(output, "uses", classDoc, null, null); output.div(CssClass.USAGE_TITLE, "Uses of " + getClassTypeName(classDoc) + " " + classDoc.qualifiedName()); Map packageToUsageTypeMap = getUsageOfClass(classDoc); if (null != packageToUsageTypeMap && !packageToUsageTypeMap.isEmpty()) { Iterator packagesIterator = packageToUsageTypeMap.keySet().iterator(); while (packagesIterator.hasNext()) { PackageDoc packageDoc = (PackageDoc)packagesIterator.next(); output.div(CssClass.USAGE_PACKAGE_TITLE, "Uses in package " + packageDoc.name()); Map usageTypeToUsersMap = (Map)packageToUsageTypeMap.get(packageDoc); Iterator usageTypeIterator = usageTypeToUsersMap.keySet().iterator(); while (usageTypeIterator.hasNext()) { Usage
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -