langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassWriterImpl.java
changeset 40303 96a1226aca18
parent 39670 9d1eafbf29c6
child 40503 cb34fd6e8071
equal deleted inserted replaced
40302:8c0d8d2c3519 40303:96a1226aca18
   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     /**
   123      * @return a content tree for the package link
   123      * @return a content tree for the package link
   124      */
   124      */
   125     @Override
   125     @Override
   126     protected Content getNavLinkPackage() {
   126     protected Content getNavLinkPackage() {
   127         Content linkContent = getHyperLink(DocPaths.PACKAGE_SUMMARY,
   127         Content linkContent = getHyperLink(DocPaths.PACKAGE_SUMMARY,
   128                 packageLabel);
   128                 contents.packageLabel);
   129         Content li = HtmlTree.LI(linkContent);
   129         Content li = HtmlTree.LI(linkContent);
   130         return li;
   130         return li;
   131     }
   131     }
   132 
   132 
   133     /**
   133     /**
   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         }
   669      * {@inheritDoc}
   665      * {@inheritDoc}
   670      */
   666      */
   671     @Override
   667     @Override
   672     protected Content getNavLinkTree() {
   668     protected Content getNavLinkTree() {
   673         Content treeLinkContent = getHyperLink(DocPaths.PACKAGE_TREE,
   669         Content treeLinkContent = getHyperLink(DocPaths.PACKAGE_TREE,
   674                 treeLabel, "", "");
   670                 contents.treeLabel, "", "");
   675         Content li = HtmlTree.LI(treeLinkContent);
   671         Content li = HtmlTree.LI(treeLinkContent);
   676         return li;
   672         return li;
   677     }
   673     }
   678 
   674 
   679     /**
   675     /**
   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);