--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageIndexWriter.java Thu Nov 16 20:25:45 2017 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageIndexWriter.java Thu Nov 16 15:01:45 2017 -0800
@@ -25,21 +25,21 @@
package jdk.javadoc.internal.doclets.formats.html;
+import jdk.javadoc.internal.doclets.formats.html.markup.Table;
+
import java.util.*;
import javax.lang.model.element.PackageElement;
-import jdk.javadoc.internal.doclets.formats.html.markup.HtmlAttr;
+import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
-import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException;
import jdk.javadoc.internal.doclets.toolkit.util.DocPath;
import jdk.javadoc.internal.doclets.toolkit.util.DocPaths;
import jdk.javadoc.internal.doclets.toolkit.util.Group;
-import jdk.javadoc.internal.doclets.toolkit.util.GroupTypes;
/**
* Generate the package index page "overview-summary.html" for the right-hand
@@ -56,29 +56,6 @@
*/
public class PackageIndexWriter extends AbstractPackageIndexWriter {
-
- /**
- * Map representing the group of packages as specified on the command line.
- *
- * @see Group
- */
- private final Map<String, SortedSet<PackageElement>> groupPackageMap;
-
- /**
- * List to store the order groups, which has elements to be displayed, as specified on the command line.
- */
- private final List<String> groupList = new ArrayList<>();
-
- private final GroupTypes groupTypes;
-
- private int groupTypesOr = 0;
-
- protected Map<String, Integer> groupTypeMap = new LinkedHashMap<>();
-
- boolean altColor = true;
-
- int counter = 0;
-
/**
* HTML tree for main tag.
*/
@@ -95,11 +72,6 @@
*/
public PackageIndexWriter(HtmlConfiguration configuration, DocPath filename) {
super(configuration, filename);
- groupPackageMap = configuration.group.groupPackages(packages);
- configuration.group.getGroupList().stream()
- .filter(groupPackageMap::containsKey)
- .forEachOrdered(groupList::add);
- groupTypes = new GroupTypes(groupList, resources.getText("doclet.All_Packages"));
}
/**
@@ -130,68 +102,50 @@
*/
@Override
protected void addPackagesList(Content body) {
- if (!groupList.isEmpty()) {
- Content caption;
- TreeMap<PackageElement, String> groupMap = new TreeMap<>(utils.makePackageComparator());
- Content tbody = new HtmlTree(HtmlTag.TBODY);
+ Map<String, SortedSet<PackageElement>> groupPackageMap
+ = configuration.group.groupPackages(packages);
+
+ if (!groupPackageMap.keySet().isEmpty()) {
String tableSummary = configuration.getText("doclet.Member_Table_Summary",
configuration.getText("doclet.Package_Summary"), configuration.getText("doclet.packages"));
- for (String groupname : groupList) {
- for (PackageElement pkg : groupPackageMap.get(groupname)) {
- groupMap.put(pkg, groupname);
+ Table table = new Table(configuration.htmlVersion, HtmlStyle.overviewSummary)
+ .setSummary(tableSummary)
+ .setHeader(getPackageTableHeader())
+ .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast)
+ .setDefaultTab(resources.getText("doclet.All_Packages"))
+ .setTabScriptVariable("groups")
+ .setTabScript(i -> "showGroups(" + i + ");")
+ .setTabId(i -> (i == 0) ? "t0" : ("t" + (1 << (i - 1))));
+
+ // add the tabs in command-line order
+ for (String groupName : configuration.group.getGroupList()) {
+ Set<PackageElement> groupPackages = groupPackageMap.get(groupName);
+ if (groupPackages != null) {
+ table.addTab(groupName, groupPackages::contains);
}
}
- if (!groupMap.isEmpty()) {
- addPackagesList(groupMap, tbody);
+
+ for (PackageElement pkg : configuration.packages) {
+ if (!pkg.isUnnamed()) {
+ if (!(configuration.nodeprecated && utils.isDeprecated(pkg))) {
+ Content packageLinkContent = getPackageLink(pkg, getPackageName(pkg));
+ Content summaryContent = new ContentBuilder();
+ addSummaryComment(pkg, summaryContent);
+ table.addRow(pkg, packageLinkContent, summaryContent);
+ }
+ }
}
- if (showTabs(groupTypes)) {
- caption = getTableCaption(groupTypes);
- generateGroupTypesScript(groupTypeMap, groupTypes.getGroupTypes());
- } else {
- caption = getTableCaption((groupList.size() == 1) ? new StringContent(groupList.get(0)) : contents.packagesLabel);
- }
- Content table = getTableHeader(caption, tableSummary, HtmlStyle.overviewSummary);
- table.addContent(getPackageTableHeader().toContent());
- table.addContent(tbody);
- Content div = HtmlTree.DIV(HtmlStyle.contentContainer, table);
+
+ Content div = HtmlTree.DIV(HtmlStyle.contentContainer, table.toContent());
if (configuration.allowTag(HtmlTag.MAIN)) {
htmlTree.addContent(div);
} else {
body.addContent(div);
}
- }
- }
- /**
- * Adds list of packages in the index table. Generate link to each package.
- *
- * @param map map of package elements and group names
- * @param tbody the documentation tree to which the list will be added
- */
- protected void addPackagesList(TreeMap<PackageElement, String> map, Content tbody) {
- String groupname;
- for (PackageElement pkg : map.keySet()) {
- if (!pkg.isUnnamed()) {
- if (!(configuration.nodeprecated && utils.isDeprecated(pkg))) {
- groupname = map.get(pkg);
- Content packageLinkContent = getPackageLink(pkg, getPackageName(pkg));
- Content thPackage = HtmlTree.TH_ROW_SCOPE(HtmlStyle.colFirst, packageLinkContent);
- HtmlTree tdSummary = new HtmlTree(HtmlTag.TD);
- tdSummary.addStyle(HtmlStyle.colLast);
- addSummaryComment(pkg, tdSummary);
- HtmlTree tr = HtmlTree.TR(thPackage);
- tr.addContent(tdSummary);
- tr.addStyle(altColor ? HtmlStyle.altColor : HtmlStyle.rowColor);
- int groupType = groupTypes.getTableTab(groupname).value();
- groupTypesOr = groupTypesOr | groupType;
- String tableId = "i" + counter;
- counter++;
- groupTypeMap.put(tableId, groupType);
- tr.addAttr(HtmlAttr.ID, tableId);
- tbody.addContent(tr);
- }
+ if (table.needsScript()) {
+ getScript().addContent(table.getScript());
}
- altColor = !altColor;
}
}
@@ -207,7 +161,7 @@
addConfigurationTitle(body);
if (!utils.getFullBody(configuration.overviewElement).isEmpty()) {
HtmlTree div = new HtmlTree(HtmlTag.DIV);
- div.addStyle(HtmlStyle.contentContainer);
+ div.setStyle(HtmlStyle.contentContainer);
addOverviewComment(div);
if (configuration.allowTag(HtmlTag.MAIN)) {
htmlTree.addContent(div);
@@ -251,13 +205,13 @@
*/
@Override
protected void addNavigationBarHeader(Content body) {
- Content htmlTree = (configuration.allowTag(HtmlTag.HEADER))
+ Content tree = (configuration.allowTag(HtmlTag.HEADER))
? HtmlTree.HEADER()
: body;
- addTop(htmlTree);
- addNavLinks(true, htmlTree);
+ addTop(tree);
+ addNavLinks(true, tree);
if (configuration.allowTag(HtmlTag.HEADER)) {
- body.addContent(htmlTree);
+ body.addContent(tree);
}
}
@@ -269,13 +223,13 @@
*/
@Override
protected void addNavigationBarFooter(Content body) {
- Content htmlTree = (configuration.allowTag(HtmlTag.FOOTER))
+ Content tree = (configuration.allowTag(HtmlTag.FOOTER))
? HtmlTree.FOOTER()
: body;
- addNavLinks(false, htmlTree);
- addBottom(htmlTree);
+ addNavLinks(false, tree);
+ addBottom(tree);
if (configuration.allowTag(HtmlTag.FOOTER)) {
- body.addContent(htmlTree);
+ body.addContent(tree);
}
}
}