110 * @return a content tree for the module link |
110 * @return a content tree for the module link |
111 */ |
111 */ |
112 @Override |
112 @Override |
113 protected Content getNavLinkModule() { |
113 protected Content getNavLinkModule() { |
114 Content linkContent = getModuleLink(utils.elementUtils.getModuleOf(typeElement), |
114 Content linkContent = getModuleLink(utils.elementUtils.getModuleOf(typeElement), |
115 moduleLabel); |
115 contents.moduleLabel); |
116 Content li = HtmlTree.LI(linkContent); |
116 Content li = HtmlTree.LI(linkContent); |
117 return li; |
117 return li; |
118 } |
118 } |
119 |
119 |
120 /** |
120 /** |
135 * |
135 * |
136 * @return a content tree for the class link |
136 * @return a content tree for the class link |
137 */ |
137 */ |
138 @Override |
138 @Override |
139 protected Content getNavLinkClass() { |
139 protected Content getNavLinkClass() { |
140 Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, classLabel); |
140 Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, contents.classLabel); |
141 return li; |
141 return li; |
142 } |
142 } |
143 |
143 |
144 /** |
144 /** |
145 * Get the class use link. |
145 * Get the class use link. |
146 * |
146 * |
147 * @return a content tree for the class use link |
147 * @return a content tree for the class use link |
148 */ |
148 */ |
149 @Override |
149 @Override |
150 protected Content getNavLinkClassUse() { |
150 protected Content getNavLinkClassUse() { |
151 Content linkContent = getHyperLink(DocPaths.CLASS_USE.resolve(filename), useLabel); |
151 Content linkContent = getHyperLink(DocPaths.CLASS_USE.resolve(filename), contents.useLabel); |
152 Content li = HtmlTree.LI(linkContent); |
152 Content li = HtmlTree.LI(linkContent); |
153 return li; |
153 return li; |
154 } |
154 } |
155 |
155 |
156 /** |
156 /** |
162 public Content getNavLinkPrevious() { |
162 public Content getNavLinkPrevious() { |
163 Content li; |
163 Content li; |
164 if (prev != null) { |
164 if (prev != null) { |
165 Content prevLink = getLink(new LinkInfoImpl(configuration, |
165 Content prevLink = getLink(new LinkInfoImpl(configuration, |
166 LinkInfoImpl.Kind.CLASS, prev) |
166 LinkInfoImpl.Kind.CLASS, prev) |
167 .label(prevclassLabel).strong(true)); |
167 .label(contents.prevClassLabel).strong(true)); |
168 li = HtmlTree.LI(prevLink); |
168 li = HtmlTree.LI(prevLink); |
169 } |
169 } |
170 else |
170 else |
171 li = HtmlTree.LI(prevclassLabel); |
171 li = HtmlTree.LI(contents.prevClassLabel); |
172 return li; |
172 return li; |
173 } |
173 } |
174 |
174 |
175 /** |
175 /** |
176 * Get link to next class. |
176 * Get link to next class. |
181 public Content getNavLinkNext() { |
181 public Content getNavLinkNext() { |
182 Content li; |
182 Content li; |
183 if (next != null) { |
183 if (next != null) { |
184 Content nextLink = getLink(new LinkInfoImpl(configuration, |
184 Content nextLink = getLink(new LinkInfoImpl(configuration, |
185 LinkInfoImpl.Kind.CLASS, next) |
185 LinkInfoImpl.Kind.CLASS, next) |
186 .label(nextclassLabel).strong(true)); |
186 .label(contents.nextClassLabel).strong(true)); |
187 li = HtmlTree.LI(nextLink); |
187 li = HtmlTree.LI(nextLink); |
188 } |
188 } |
189 else |
189 else |
190 li = HtmlTree.LI(nextclassLabel); |
190 li = HtmlTree.LI(contents.nextClassLabel); |
191 return li; |
191 return li; |
192 } |
192 } |
193 |
193 |
194 /** |
194 /** |
195 * {@inheritDoc} |
195 * {@inheritDoc} |
208 bodyTree.addContent(HtmlConstants.START_OF_CLASS_DATA); |
208 bodyTree.addContent(HtmlConstants.START_OF_CLASS_DATA); |
209 HtmlTree div = new HtmlTree(HtmlTag.DIV); |
209 HtmlTree div = new HtmlTree(HtmlTag.DIV); |
210 div.addStyle(HtmlStyle.header); |
210 div.addStyle(HtmlStyle.header); |
211 ModuleElement mdle = configuration.docEnv.getElementUtils().getModuleOf(typeElement); |
211 ModuleElement mdle = configuration.docEnv.getElementUtils().getModuleOf(typeElement); |
212 if (mdle != null && !mdle.isUnnamed()) { |
212 if (mdle != null && !mdle.isUnnamed()) { |
213 Content classModuleLabel = HtmlTree.SPAN(HtmlStyle.moduleLabelInClass, moduleLabel); |
213 Content classModuleLabel = HtmlTree.SPAN(HtmlStyle.moduleLabelInClass, contents.moduleLabel); |
214 Content moduleNameDiv = HtmlTree.DIV(HtmlStyle.subTitle, classModuleLabel); |
214 Content moduleNameDiv = HtmlTree.DIV(HtmlStyle.subTitle, classModuleLabel); |
215 moduleNameDiv.addContent(getSpace()); |
215 moduleNameDiv.addContent(Contents.SPACE); |
216 moduleNameDiv.addContent(getModuleLink(mdle, |
216 moduleNameDiv.addContent(getModuleLink(mdle, |
217 new StringContent(mdle.getQualifiedName().toString()))); |
217 new StringContent(mdle.getQualifiedName().toString()))); |
218 div.addContent(moduleNameDiv); |
218 div.addContent(moduleNameDiv); |
219 } |
219 } |
220 PackageElement pkg = utils.containingPackage(typeElement); |
220 PackageElement pkg = utils.containingPackage(typeElement); |
221 if (!pkg.isUnnamed()) { |
221 if (!pkg.isUnnamed()) { |
222 Content classPackageLabel = HtmlTree.SPAN(HtmlStyle.packageLabelInClass, packageLabel); |
222 Content classPackageLabel = HtmlTree.SPAN(HtmlStyle.packageLabelInClass, contents.packageLabel); |
223 Content pkgNameDiv = HtmlTree.DIV(HtmlStyle.subTitle, classPackageLabel); |
223 Content pkgNameDiv = HtmlTree.DIV(HtmlStyle.subTitle, classPackageLabel); |
224 pkgNameDiv.addContent(getSpace()); |
224 pkgNameDiv.addContent(Contents.SPACE); |
225 Content pkgNameContent = getPackageLink(pkg, |
225 Content pkgNameContent = getPackageLink(pkg, |
226 new StringContent(utils.getPackageName(pkg))); |
226 new StringContent(utils.getPackageName(pkg))); |
227 pkgNameDiv.addContent(pkgNameContent); |
227 pkgNameDiv.addContent(pkgNameContent); |
228 div.addContent(pkgNameDiv); |
228 div.addContent(pkgNameDiv); |
229 } |
229 } |
467 typeElement.getQualifiedName().toString().equals("org.omg.CORBA.Object")) { |
467 typeElement.getQualifiedName().toString().equals("org.omg.CORBA.Object")) { |
468 return; // Don't generate the list, too huge |
468 return; // Don't generate the list, too huge |
469 } |
469 } |
470 Set<TypeElement> subclasses = classtree.directSubClasses(typeElement, false); |
470 Set<TypeElement> subclasses = classtree.directSubClasses(typeElement, false); |
471 if (!subclasses.isEmpty()) { |
471 if (!subclasses.isEmpty()) { |
472 Content label = getResource( |
472 Content label = contents.subclassesLabel; |
473 "doclet.Subclasses"); |
|
474 Content dt = HtmlTree.DT(label); |
473 Content dt = HtmlTree.DT(label); |
475 Content dl = HtmlTree.DL(dt); |
474 Content dl = HtmlTree.DL(dt); |
476 dl.addContent(getClassLinks(LinkInfoImpl.Kind.SUBCLASSES, |
475 dl.addContent(getClassLinks(LinkInfoImpl.Kind.SUBCLASSES, |
477 subclasses)); |
476 subclasses)); |
478 classInfoTree.addContent(dl); |
477 classInfoTree.addContent(dl); |
486 @Override |
485 @Override |
487 public void addSubInterfacesInfo(Content classInfoTree) { |
486 public void addSubInterfacesInfo(Content classInfoTree) { |
488 if (utils.isInterface(typeElement)) { |
487 if (utils.isInterface(typeElement)) { |
489 Set<TypeElement> subInterfaces = classtree.allSubClasses(typeElement, false); |
488 Set<TypeElement> subInterfaces = classtree.allSubClasses(typeElement, false); |
490 if (!subInterfaces.isEmpty()) { |
489 if (!subInterfaces.isEmpty()) { |
491 Content label = getResource( |
490 Content label = contents.subinterfacesLabel; |
492 "doclet.Subinterfaces"); |
|
493 Content dt = HtmlTree.DT(label); |
491 Content dt = HtmlTree.DT(label); |
494 Content dl = HtmlTree.DL(dt); |
492 Content dl = HtmlTree.DL(dt); |
495 dl.addContent(getClassLinks(LinkInfoImpl.Kind.SUBINTERFACES, |
493 dl.addContent(getClassLinks(LinkInfoImpl.Kind.SUBINTERFACES, |
496 subInterfaces)); |
494 subInterfaces)); |
497 classInfoTree.addContent(dl); |
495 classInfoTree.addContent(dl); |
511 typeElement.getQualifiedName().toString().equals("java.io.Serializable")) { |
509 typeElement.getQualifiedName().toString().equals("java.io.Serializable")) { |
512 return; // Don't generate the list, too big |
510 return; // Don't generate the list, too big |
513 } |
511 } |
514 Set<TypeElement> implcl = classtree.implementingClasses(typeElement); |
512 Set<TypeElement> implcl = classtree.implementingClasses(typeElement); |
515 if (!implcl.isEmpty()) { |
513 if (!implcl.isEmpty()) { |
516 Content label = getResource( |
514 Content label = contents.implementingClassesLabel; |
517 "doclet.Implementing_Classes"); |
|
518 Content dt = HtmlTree.DT(label); |
515 Content dt = HtmlTree.DT(label); |
519 Content dl = HtmlTree.DL(dt); |
516 Content dl = HtmlTree.DL(dt); |
520 dl.addContent(getClassLinks(LinkInfoImpl.Kind.IMPLEMENTED_CLASSES, |
517 dl.addContent(getClassLinks(LinkInfoImpl.Kind.IMPLEMENTED_CLASSES, |
521 implcl)); |
518 implcl)); |
522 classInfoTree.addContent(dl); |
519 classInfoTree.addContent(dl); |
529 @Override |
526 @Override |
530 public void addImplementedInterfacesInfo(Content classInfoTree) { |
527 public void addImplementedInterfacesInfo(Content classInfoTree) { |
531 SortedSet<TypeMirror> interfaces = new TreeSet<>(utils.makeTypeMirrorClassUseComparator()); |
528 SortedSet<TypeMirror> interfaces = new TreeSet<>(utils.makeTypeMirrorClassUseComparator()); |
532 interfaces.addAll(utils.getAllInterfaces(typeElement)); |
529 interfaces.addAll(utils.getAllInterfaces(typeElement)); |
533 if (utils.isClass(typeElement) && !interfaces.isEmpty()) { |
530 if (utils.isClass(typeElement) && !interfaces.isEmpty()) { |
534 Content label = getResource( |
531 Content label = contents.allImplementedInterfacesLabel; |
535 "doclet.All_Implemented_Interfaces"); |
|
536 Content dt = HtmlTree.DT(label); |
532 Content dt = HtmlTree.DT(label); |
537 Content dl = HtmlTree.DL(dt); |
533 Content dl = HtmlTree.DL(dt); |
538 dl.addContent(getClassLinks(LinkInfoImpl.Kind.IMPLEMENTED_INTERFACES, interfaces)); |
534 dl.addContent(getClassLinks(LinkInfoImpl.Kind.IMPLEMENTED_INTERFACES, interfaces)); |
539 classInfoTree.addContent(dl); |
535 classInfoTree.addContent(dl); |
540 } |
536 } |
548 SortedSet<TypeMirror> interfaces = |
544 SortedSet<TypeMirror> interfaces = |
549 new TreeSet<>(utils.makeTypeMirrorIndexUseComparator()); |
545 new TreeSet<>(utils.makeTypeMirrorIndexUseComparator()); |
550 interfaces.addAll(utils.getAllInterfaces(typeElement)); |
546 interfaces.addAll(utils.getAllInterfaces(typeElement)); |
551 |
547 |
552 if (utils.isInterface(typeElement) && !interfaces.isEmpty()) { |
548 if (utils.isInterface(typeElement) && !interfaces.isEmpty()) { |
553 Content label = getResource("doclet.All_Superinterfaces"); |
549 Content label = contents.allSuperinterfacesLabel; |
554 Content dt = HtmlTree.DT(label); |
550 Content dt = HtmlTree.DT(label); |
555 Content dl = HtmlTree.DL(dt); |
551 Content dl = HtmlTree.DL(dt); |
556 dl.addContent(getClassLinks(LinkInfoImpl.Kind.SUPER_INTERFACES, interfaces)); |
552 dl.addContent(getClassLinks(LinkInfoImpl.Kind.SUPER_INTERFACES, interfaces)); |
557 classInfoTree.addContent(dl); |
553 classInfoTree.addContent(dl); |
558 } |
554 } |
567 if (outerClass == null) |
563 if (outerClass == null) |
568 return; |
564 return; |
569 new SimpleElementVisitor8<Void, Void>() { |
565 new SimpleElementVisitor8<Void, Void>() { |
570 @Override @DefinedBy(Api.LANGUAGE_MODEL) |
566 @Override @DefinedBy(Api.LANGUAGE_MODEL) |
571 public Void visitType(TypeElement e, Void p) { |
567 public Void visitType(TypeElement e, Void p) { |
572 String label = utils.isInterface(e) |
568 Content label = utils.isInterface(e) |
573 ? "doclet.Enclosing_Interface" |
569 ? contents.enclosingInterfaceLabel |
574 : "doclet.Enclosing_Class"; |
570 : contents.enclosingClassLabel; |
575 Content dt = HtmlTree.DT(getResource(label)); |
571 Content dt = HtmlTree.DT(label); |
576 Content dl = HtmlTree.DL(dt); |
572 Content dl = HtmlTree.DL(dt); |
577 Content dd = new HtmlTree(HtmlTag.DD); |
573 Content dd = new HtmlTree(HtmlTag.DD); |
578 dd.addContent(getLink(new LinkInfoImpl(configuration, |
574 dd.addContent(getLink(new LinkInfoImpl(configuration, |
579 LinkInfoImpl.Kind.CLASS, e))); |
575 LinkInfoImpl.Kind.CLASS, e))); |
580 dl.addContent(dd); |
576 dl.addContent(dd); |
588 * {@inheritDoc} |
584 * {@inheritDoc} |
589 */ |
585 */ |
590 @Override |
586 @Override |
591 public void addFunctionalInterfaceInfo (Content classInfoTree) { |
587 public void addFunctionalInterfaceInfo (Content classInfoTree) { |
592 if (isFunctionalInterface()) { |
588 if (isFunctionalInterface()) { |
593 Content dt = HtmlTree.DT(getResource("doclet.Functional_Interface")); |
589 Content dt = HtmlTree.DT(contents.functionalInterface); |
594 Content dl = HtmlTree.DL(dt); |
590 Content dl = HtmlTree.DL(dt); |
595 Content dd = new HtmlTree(HtmlTag.DD); |
591 Content dd = new HtmlTree(HtmlTag.DD); |
596 dd.addContent(getResource("doclet.Functional_Interface_Message")); |
592 dd.addContent(contents.functionalInterfaceMessage); |
597 dl.addContent(dd); |
593 dl.addContent(dd); |
598 classInfoTree.addContent(dl); |
594 classInfoTree.addContent(dl); |
599 } |
595 } |
600 } |
596 } |
601 |
597 |
617 public void addClassDeprecationInfo(Content classInfoTree) { |
613 public void addClassDeprecationInfo(Content classInfoTree) { |
618 Content hr = new HtmlTree(HtmlTag.HR); |
614 Content hr = new HtmlTree(HtmlTag.HR); |
619 classInfoTree.addContent(hr); |
615 classInfoTree.addContent(hr); |
620 List<? extends DocTree> deprs = utils.getBlockTags(typeElement, DocTree.Kind.DEPRECATED); |
616 List<? extends DocTree> deprs = utils.getBlockTags(typeElement, DocTree.Kind.DEPRECATED); |
621 if (utils.isDeprecated(typeElement)) { |
617 if (utils.isDeprecated(typeElement)) { |
622 Content deprLabel = HtmlTree.SPAN(HtmlStyle.deprecatedLabel, deprecatedPhrase); |
618 Content deprLabel = HtmlTree.SPAN(HtmlStyle.deprecatedLabel, contents.deprecatedPhrase); |
623 Content div = HtmlTree.DIV(HtmlStyle.block, deprLabel); |
619 Content div = HtmlTree.DIV(HtmlStyle.block, deprLabel); |
624 if (!deprs.isEmpty()) { |
620 if (!deprs.isEmpty()) { |
625 CommentHelper ch = utils.getCommentHelper(typeElement); |
621 CommentHelper ch = utils.getCommentHelper(typeElement); |
626 DocTree dt = deprs.get(0); |
622 DocTree dt = deprs.get(0); |
627 List<? extends DocTree> commentTags = ch.getBody(configuration, dt); |
623 List<? extends DocTree> commentTags = ch.getBody(configuration, dt); |
628 if (!commentTags.isEmpty()) { |
624 if (!commentTags.isEmpty()) { |
629 div.addContent(getSpace()); |
625 div.addContent(Contents.SPACE); |
630 addInlineDeprecatedComment(typeElement, deprs.get(0), div); |
626 addInlineDeprecatedComment(typeElement, deprs.get(0), div); |
631 } |
627 } |
632 } |
628 } |
633 classInfoTree.addContent(div); |
629 classInfoTree.addContent(div); |
634 } |
630 } |
695 * Get summary links for navigation bar. |
691 * Get summary links for navigation bar. |
696 * |
692 * |
697 * @return the content tree for the navigation summary links |
693 * @return the content tree for the navigation summary links |
698 */ |
694 */ |
699 protected Content getNavSummaryLinks() throws Exception { |
695 protected Content getNavSummaryLinks() throws Exception { |
700 Content li = HtmlTree.LI(summaryLabel); |
696 Content li = HtmlTree.LI(contents.summaryLabel); |
701 li.addContent(getSpace()); |
697 li.addContent(Contents.SPACE); |
702 Content ulNav = HtmlTree.UL(HtmlStyle.subNavList, li); |
698 Content ulNav = HtmlTree.UL(HtmlStyle.subNavList, li); |
703 MemberSummaryBuilder memberSummaryBuilder = (MemberSummaryBuilder) |
699 MemberSummaryBuilder memberSummaryBuilder = (MemberSummaryBuilder) |
704 configuration.getBuilderFactory().getMemberSummaryBuilder(this); |
700 configuration.getBuilderFactory().getMemberSummaryBuilder(this); |
705 for (VisibleMemberMap.Kind kind : VisibleMemberMap.Kind.summarySet) { |
701 for (VisibleMemberMap.Kind kind : VisibleMemberMap.Kind.summarySet) { |
706 Content liNav = new HtmlTree(HtmlTag.LI); |
702 Content liNav = new HtmlTree(HtmlTag.LI); |
711 continue; |
707 continue; |
712 } |
708 } |
713 AbstractMemberWriter writer = |
709 AbstractMemberWriter writer = |
714 ((AbstractMemberWriter) memberSummaryBuilder.getMemberSummaryWriter(kind)); |
710 ((AbstractMemberWriter) memberSummaryBuilder.getMemberSummaryWriter(kind)); |
715 if (writer == null) { |
711 if (writer == null) { |
716 liNav.addContent(getResource(VisibleMemberMap.Kind.getNavLinkLabels(kind))); |
712 liNav.addContent(contents.getContent(VisibleMemberMap.Kind.getNavLinkLabels(kind))); |
717 } else { |
713 } else { |
718 writer.addNavSummaryLink( |
714 writer.addNavSummaryLink( |
719 memberSummaryBuilder.members(kind), |
715 memberSummaryBuilder.members(kind), |
720 memberSummaryBuilder.getVisibleMemberMap(kind), liNav); |
716 memberSummaryBuilder.getVisibleMemberMap(kind), liNav); |
721 } |
717 } |
732 * |
728 * |
733 * @return the content tree for the detail links |
729 * @return the content tree for the detail links |
734 * @throws java.lang.Exception |
730 * @throws java.lang.Exception |
735 */ |
731 */ |
736 protected Content getNavDetailLinks() throws Exception { |
732 protected Content getNavDetailLinks() throws Exception { |
737 Content li = HtmlTree.LI(detailLabel); |
733 Content li = HtmlTree.LI(contents.detailLabel); |
738 li.addContent(getSpace()); |
734 li.addContent(Contents.SPACE); |
739 Content ulNav = HtmlTree.UL(HtmlStyle.subNavList, li); |
735 Content ulNav = HtmlTree.UL(HtmlStyle.subNavList, li); |
740 MemberSummaryBuilder memberSummaryBuilder = (MemberSummaryBuilder) |
736 MemberSummaryBuilder memberSummaryBuilder = (MemberSummaryBuilder) |
741 configuration.getBuilderFactory().getMemberSummaryBuilder(this); |
737 configuration.getBuilderFactory().getMemberSummaryBuilder(this); |
742 for (VisibleMemberMap.Kind kind : VisibleMemberMap.Kind.detailSet) { |
738 for (VisibleMemberMap.Kind kind : VisibleMemberMap.Kind.detailSet) { |
743 Content liNav = new HtmlTree(HtmlTag.LI); |
739 Content liNav = new HtmlTree(HtmlTag.LI); |
749 } |
745 } |
750 if (kind == VisibleMemberMap.Kind.CONSTRUCTORS && utils.isEnum(typeElement)) { |
746 if (kind == VisibleMemberMap.Kind.CONSTRUCTORS && utils.isEnum(typeElement)) { |
751 continue; |
747 continue; |
752 } |
748 } |
753 if (writer == null) { |
749 if (writer == null) { |
754 liNav.addContent(getResource(VisibleMemberMap.Kind.getNavLinkLabels(kind))); |
750 liNav.addContent(contents.getContent(VisibleMemberMap.Kind.getNavLinkLabels(kind))); |
755 } else { |
751 } else { |
756 writer.addNavDetailLink(memberSummaryBuilder.members(kind), liNav); |
752 writer.addNavDetailLink(memberSummaryBuilder.members(kind), liNav); |
757 } |
753 } |
758 if (kind != Kind.METHODS) { |
754 if (kind != Kind.METHODS) { |
759 addNavGap(liNav); |
755 addNavGap(liNav); |