< prev index next >

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/MethodWriterImpl.java

Print this page




  66     public MethodWriterImpl(SubWriterHolderWriter writer, TypeElement typeElement) {
  67         super(writer, typeElement);
  68     }
  69 
  70     /**
  71      * Construct a new MethodWriterImpl.
  72      *
  73      * @param writer The writer for the class that the methods belong to.
  74      */
  75     public MethodWriterImpl(SubWriterHolderWriter writer) {
  76         super(writer);
  77     }
  78 
  79     /**
  80      * {@inheritDoc}
  81      */
  82     @Override
  83     public Content getMemberSummaryHeader(TypeElement typeElement, Content memberSummaryTree) {
  84         memberSummaryTree.add(MarkerComments.START_OF_METHOD_SUMMARY);
  85         Content memberTree = new ContentBuilder();
  86         writer.addSummaryHeader(this, typeElement, memberTree);
  87         return memberTree;
  88     }
  89 
  90     /**
  91      * {@inheritDoc}
  92      */
  93     @Override
  94     public void addMemberTree(Content memberSummaryTree, Content memberTree) {
  95         writer.addMemberTree(HtmlStyle.methodSummary, memberSummaryTree, memberTree);

  96     }
  97 
  98     /**
  99      * {@inheritDoc}
 100      */
 101     @Override
 102     public Content getMethodDetailsTreeHeader(TypeElement typeElement, Content memberDetailsTree) {
 103         memberDetailsTree.add(MarkerComments.START_OF_METHOD_DETAILS);
 104         Content methodDetailsTree = new ContentBuilder();
 105         Content heading = HtmlTree.HEADING(Headings.TypeDeclaration.DETAILS_HEADING,
 106                 contents.methodDetailLabel);
 107         methodDetailsTree.add(links.createAnchor(SectionName.METHOD_DETAIL));
 108         methodDetailsTree.add(heading);
 109         return methodDetailsTree;
 110     }
 111 
 112     /**
 113      * {@inheritDoc}
 114      */
 115     @Override
 116     public Content getMethodDocTreeHeader(ExecutableElement method, Content methodDetailsTree) {
 117         String erasureAnchor;
 118         Content methodDocTree = new ContentBuilder();
 119         Content heading = new HtmlTree(Headings.TypeDeclaration.MEMBER_HEADING);

 120         if ((erasureAnchor = getErasureAnchor(method)) != null) {
 121             heading.add(links.createAnchor((erasureAnchor)));
 122         }
 123         heading.add(links.createAnchor(writer.getAnchor(method), new StringContent(name(method))));
 124         methodDocTree.add(heading);
 125         return HtmlTree.SECTION(HtmlStyle.detail, methodDocTree);

 126     }
 127 
 128     /**
 129      * Get the signature for the given method.
 130      *
 131      * @param method the method being documented.
 132      * @return a content object for the signature
 133      */
 134     @Override
 135     public Content getSignature(ExecutableElement method) {
 136         return new MemberSignature(method)
 137                 .addTypeParameters(getTypeParameters(method))
 138                 .addReturnType(getReturnType(method))
 139                 .addParameters(getParameters(method, true))
 140                 .addExceptions(getExceptions(method))
 141                 .toContent();
 142     }
 143 
 144     /**
 145      * {@inheritDoc}


 178                 methodDocTree.add(HtmlTree.DIV(HtmlStyle.block, descfrmLabel));
 179                 writer.addInlineComment(method, methodDocTree);
 180             }
 181         }
 182     }
 183 
 184     /**
 185      * {@inheritDoc}
 186      */
 187     @Override
 188     public void addTags(ExecutableElement method, Content methodDocTree) {
 189         writer.addTagsInfo(method, methodDocTree);
 190     }
 191 
 192     /**
 193      * {@inheritDoc}
 194      */
 195     @Override
 196     public Content getMethodDetails(Content methodDetailsTreeHeader, Content methodDetailsTree) {
 197         Content methodDetails = new ContentBuilder(methodDetailsTreeHeader, methodDetailsTree);
 198         return getMemberTree(HtmlTree.SECTION(HtmlStyle.methodDetails, methodDetails));

 199     }
 200 
 201     /**
 202      * {@inheritDoc}
 203      */
 204     @Override
 205     public Content getMethodDoc(Content methodDocTree) {
 206         return getMemberTree(methodDocTree);
 207     }
 208 
 209     /**
 210      * {@inheritDoc}
 211      */
 212     @Override
 213     public void addSummaryLabel(Content memberTree) {
 214         Content label = HtmlTree.HEADING(Headings.TypeDeclaration.SUMMARY_HEADING,
 215                 contents.methodSummary);
 216         memberTree.add(label);
 217     }
 218 


 230         return new Table(HtmlStyle.memberSummary)
 231                 .setHeader(getSummaryTableHeader(typeElement))
 232                 .setRowScopeColumn(1)
 233                 .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colSecond, HtmlStyle.colLast)
 234                 .setDefaultTab(resources.getText("doclet.All_Methods"))
 235                 .addTab(resources.getText("doclet.Static_Methods"), utils::isStatic)
 236                 .addTab(resources.getText("doclet.Instance_Methods"), e -> !utils.isStatic(e))
 237                 .addTab(resources.getText("doclet.Abstract_Methods"), utils::isAbstract)
 238                 .addTab(resources.getText("doclet.Concrete_Methods"),
 239                         e -> !utils.isAbstract(e) && !utils.isInterface(e.getEnclosingElement()))
 240                 .addTab(resources.getText("doclet.Default_Methods"), utils::isDefault)
 241                 .addTab(resources.getText("doclet.Deprecated_Methods"),
 242                         e -> utils.isDeprecated(e) || utils.isDeprecated(typeElement))
 243                 .setTabScript(i -> "show(" + i + ");");
 244     }
 245 
 246     /**
 247      * {@inheritDoc}
 248      */
 249     @Override
 250     public void addSummaryAnchor(TypeElement typeElement, Content memberTree) {
 251         memberTree.add(links.createAnchor(SectionName.METHOD_SUMMARY));
 252     }
 253 
 254     /**
 255      * {@inheritDoc}
 256      */
 257     @Override
 258     public void addInheritedSummaryAnchor(TypeElement typeElement, Content inheritedTree) {
 259         inheritedTree.add(links.createAnchor(
 260                 SectionName.METHODS_INHERITANCE, configuration.getClassName(typeElement)));
 261     }
 262 
 263     /**
 264      * {@inheritDoc}
 265      */
 266     @Override
 267     public void addInheritedSummaryLabel(TypeElement typeElement, Content inheritedTree) {
 268         Content classLink = writer.getPreQualifiedClassLink(
 269                 LinkInfoImpl.Kind.MEMBER, typeElement, false);
 270         Content label;
 271         if (configuration.summarizeOverriddenMethods) {
 272             label = new StringContent(utils.isClass(typeElement)
 273                     ? resources.getText("doclet.Methods_Declared_In_Class")
 274                     : resources.getText("doclet.Methods_Declared_In_Interface"));
 275         } else {
 276             label = new StringContent(utils.isClass(typeElement)
 277                     ? resources.getText("doclet.Methods_Inherited_From_Class")
 278                     : resources.getText("doclet.Methods_Inherited_From_Interface"));
 279         }
 280         Content labelHeading = HtmlTree.HEADING(Headings.TypeDeclaration.INHERITED_SUMMARY_HEADING,
 281                 label);


 282         labelHeading.add(Entity.NO_BREAK_SPACE);
 283         labelHeading.add(classLink);
 284         inheritedTree.add(labelHeading);
 285     }
 286 
 287     /**
 288      * {@inheritDoc}
 289      */
 290     @Override
 291     protected void addSummaryType(Element member, Content tdSummaryType) {
 292         ExecutableElement meth = (ExecutableElement)member;
 293         addModifierAndType(meth, utils.getReturnType(meth), tdSummaryType);
 294     }
 295 
 296     /**
 297      * {@inheritDoc}
 298      */
 299     protected static void addOverridden(HtmlDocletWriter writer,
 300             TypeMirror overriddenType, ExecutableElement method, Content dl) {
 301         if (writer.configuration.nocomment) {


 313             //The class is included but the method is not.  That means that it
 314             //is not visible so don't document this.
 315             return;
 316         }
 317         Content label = contents.overridesLabel;
 318         LinkInfoImpl.Kind context = LinkInfoImpl.Kind.METHOD_OVERRIDES;
 319 
 320         if (method != null) {
 321             if (utils.isAbstract(holder) && utils.isAbstract(method)){
 322                 //Abstract method is implemented from abstract class,
 323                 //not overridden
 324                 label = contents.specifiedByLabel;
 325                 context = LinkInfoImpl.Kind.METHOD_SPECIFIED_BY;
 326             }
 327             Content dt = HtmlTree.DT(HtmlTree.SPAN(HtmlStyle.overrideSpecifyLabel, label));
 328             dl.add(dt);
 329             Content overriddenTypeLink =
 330                     writer.getLink(new LinkInfoImpl(writer.configuration, context, overriddenType));
 331             Content codeOverriddenTypeLink = HtmlTree.CODE(overriddenTypeLink);
 332             Content methlink = writer.getLink(
 333                     new LinkInfoImpl(writer.configuration, LinkInfoImpl.Kind.MEMBER,
 334                     holder)
 335                     .where(writer.links.getName(writer.getAnchor(method))).label(method.getSimpleName()));
 336             Content codeMethLink = HtmlTree.CODE(methlink);
 337             Content dd = HtmlTree.DD(codeMethLink);
 338             dd.add(Entity.NO_BREAK_SPACE);
 339             dd.add(writer.contents.inClass);
 340             dd.add(Entity.NO_BREAK_SPACE);
 341             dd.add(codeOverriddenTypeLink);
 342             dl.add(dd);
 343         }
 344     }
 345 
 346     /**
 347      * {@inheritDoc}
 348      */
 349     protected static void addImplementsInfo(HtmlDocletWriter writer,
 350             ExecutableElement method, Content dl) {
 351         Utils utils = writer.utils;
 352         if (utils.isStatic(method) || writer.configuration.nocomment) {
 353             return;
 354         }
 355         Contents contents = writer.contents;




  66     public MethodWriterImpl(SubWriterHolderWriter writer, TypeElement typeElement) {
  67         super(writer, typeElement);
  68     }
  69 
  70     /**
  71      * Construct a new MethodWriterImpl.
  72      *
  73      * @param writer The writer for the class that the methods belong to.
  74      */
  75     public MethodWriterImpl(SubWriterHolderWriter writer) {
  76         super(writer);
  77     }
  78 
  79     /**
  80      * {@inheritDoc}
  81      */
  82     @Override
  83     public Content getMemberSummaryHeader(TypeElement typeElement, Content memberSummaryTree) {
  84         memberSummaryTree.add(MarkerComments.START_OF_METHOD_SUMMARY);
  85         Content memberTree = new ContentBuilder();
  86         writer.addSummaryHeader(this, memberTree);
  87         return memberTree;
  88     }
  89 
  90     /**
  91      * {@inheritDoc}
  92      */
  93     @Override
  94     public void addMemberTree(Content memberSummaryTree, Content memberTree) {
  95         writer.addMemberTree(HtmlStyle.methodSummary,
  96                 SectionName.METHOD_SUMMARY, memberSummaryTree, memberTree);
  97     }
  98 
  99     /**
 100      * {@inheritDoc}
 101      */
 102     @Override
 103     public Content getMethodDetailsTreeHeader(Content memberDetailsTree) {
 104         memberDetailsTree.add(MarkerComments.START_OF_METHOD_DETAILS);
 105         Content methodDetailsTree = new ContentBuilder();
 106         Content heading = HtmlTree.HEADING(Headings.TypeDeclaration.DETAILS_HEADING,
 107                 contents.methodDetailLabel);

 108         methodDetailsTree.add(heading);
 109         return methodDetailsTree;
 110     }
 111 
 112     /**
 113      * {@inheritDoc}
 114      */
 115     @Override
 116     public Content getMethodDocTreeHeader(ExecutableElement method) {
 117         String erasureAnchor;
 118         Content methodDocTree = new ContentBuilder();
 119         HtmlTree heading = new HtmlTree(Headings.TypeDeclaration.MEMBER_HEADING,
 120                 new StringContent(name(method)));
 121         if ((erasureAnchor = getErasureAnchor(method)) != null) {
 122             heading.setId(erasureAnchor);
 123         }

 124         methodDocTree.add(heading);
 125         return HtmlTree.SECTION(HtmlStyle.detail, methodDocTree)
 126                 .setId(links.getName(writer.getAnchor(method)));
 127     }
 128 
 129     /**
 130      * Get the signature for the given method.
 131      *
 132      * @param method the method being documented.
 133      * @return a content object for the signature
 134      */
 135     @Override
 136     public Content getSignature(ExecutableElement method) {
 137         return new MemberSignature(method)
 138                 .addTypeParameters(getTypeParameters(method))
 139                 .addReturnType(getReturnType(method))
 140                 .addParameters(getParameters(method, true))
 141                 .addExceptions(getExceptions(method))
 142                 .toContent();
 143     }
 144 
 145     /**
 146      * {@inheritDoc}


 179                 methodDocTree.add(HtmlTree.DIV(HtmlStyle.block, descfrmLabel));
 180                 writer.addInlineComment(method, methodDocTree);
 181             }
 182         }
 183     }
 184 
 185     /**
 186      * {@inheritDoc}
 187      */
 188     @Override
 189     public void addTags(ExecutableElement method, Content methodDocTree) {
 190         writer.addTagsInfo(method, methodDocTree);
 191     }
 192 
 193     /**
 194      * {@inheritDoc}
 195      */
 196     @Override
 197     public Content getMethodDetails(Content methodDetailsTreeHeader, Content methodDetailsTree) {
 198         Content methodDetails = new ContentBuilder(methodDetailsTreeHeader, methodDetailsTree);
 199         return getMemberTree(HtmlTree.SECTION(HtmlStyle.methodDetails, methodDetails)
 200                 .setId(SectionName.METHOD_DETAIL.getName()));
 201     }
 202 
 203     /**
 204      * {@inheritDoc}
 205      */
 206     @Override
 207     public Content getMethodDoc(Content methodDocTree) {
 208         return getMemberTree(methodDocTree);
 209     }
 210 
 211     /**
 212      * {@inheritDoc}
 213      */
 214     @Override
 215     public void addSummaryLabel(Content memberTree) {
 216         Content label = HtmlTree.HEADING(Headings.TypeDeclaration.SUMMARY_HEADING,
 217                 contents.methodSummary);
 218         memberTree.add(label);
 219     }
 220 


 232         return new Table(HtmlStyle.memberSummary)
 233                 .setHeader(getSummaryTableHeader(typeElement))
 234                 .setRowScopeColumn(1)
 235                 .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colSecond, HtmlStyle.colLast)
 236                 .setDefaultTab(resources.getText("doclet.All_Methods"))
 237                 .addTab(resources.getText("doclet.Static_Methods"), utils::isStatic)
 238                 .addTab(resources.getText("doclet.Instance_Methods"), e -> !utils.isStatic(e))
 239                 .addTab(resources.getText("doclet.Abstract_Methods"), utils::isAbstract)
 240                 .addTab(resources.getText("doclet.Concrete_Methods"),
 241                         e -> !utils.isAbstract(e) && !utils.isInterface(e.getEnclosingElement()))
 242                 .addTab(resources.getText("doclet.Default_Methods"), utils::isDefault)
 243                 .addTab(resources.getText("doclet.Deprecated_Methods"),
 244                         e -> utils.isDeprecated(e) || utils.isDeprecated(typeElement))
 245                 .setTabScript(i -> "show(" + i + ");");
 246     }
 247 
 248     /**
 249      * {@inheritDoc}
 250      */
 251     @Override

















 252     public void addInheritedSummaryLabel(TypeElement typeElement, Content inheritedTree) {
 253         Content classLink = writer.getPreQualifiedClassLink(
 254                 LinkInfoImpl.Kind.MEMBER, typeElement, false);
 255         Content label;
 256         if (configuration.summarizeOverriddenMethods) {
 257             label = new StringContent(utils.isClass(typeElement)
 258                     ? resources.getText("doclet.Methods_Declared_In_Class")
 259                     : resources.getText("doclet.Methods_Declared_In_Interface"));
 260         } else {
 261             label = new StringContent(utils.isClass(typeElement)
 262                     ? resources.getText("doclet.Methods_Inherited_From_Class")
 263                     : resources.getText("doclet.Methods_Inherited_From_Interface"));
 264         }
 265         HtmlTree labelHeading = HtmlTree.HEADING(Headings.TypeDeclaration.INHERITED_SUMMARY_HEADING,
 266                 label);
 267         labelHeading.setId(SectionName.METHODS_INHERITANCE.getName()
 268                 + links.getName(configuration.getClassName(typeElement)));
 269         labelHeading.add(Entity.NO_BREAK_SPACE);
 270         labelHeading.add(classLink);
 271         inheritedTree.add(labelHeading);
 272     }
 273 
 274     /**
 275      * {@inheritDoc}
 276      */
 277     @Override
 278     protected void addSummaryType(Element member, Content tdSummaryType) {
 279         ExecutableElement meth = (ExecutableElement)member;
 280         addModifierAndType(meth, utils.getReturnType(meth), tdSummaryType);
 281     }
 282 
 283     /**
 284      * {@inheritDoc}
 285      */
 286     protected static void addOverridden(HtmlDocletWriter writer,
 287             TypeMirror overriddenType, ExecutableElement method, Content dl) {
 288         if (writer.configuration.nocomment) {


 300             //The class is included but the method is not.  That means that it
 301             //is not visible so don't document this.
 302             return;
 303         }
 304         Content label = contents.overridesLabel;
 305         LinkInfoImpl.Kind context = LinkInfoImpl.Kind.METHOD_OVERRIDES;
 306 
 307         if (method != null) {
 308             if (utils.isAbstract(holder) && utils.isAbstract(method)){
 309                 //Abstract method is implemented from abstract class,
 310                 //not overridden
 311                 label = contents.specifiedByLabel;
 312                 context = LinkInfoImpl.Kind.METHOD_SPECIFIED_BY;
 313             }
 314             Content dt = HtmlTree.DT(HtmlTree.SPAN(HtmlStyle.overrideSpecifyLabel, label));
 315             dl.add(dt);
 316             Content overriddenTypeLink =
 317                     writer.getLink(new LinkInfoImpl(writer.configuration, context, overriddenType));
 318             Content codeOverriddenTypeLink = HtmlTree.CODE(overriddenTypeLink);
 319             Content methlink = writer.getLink(
 320                     new LinkInfoImpl(writer.configuration, LinkInfoImpl.Kind.MEMBER, holder)
 321                             .where(writer.links.getName(writer.getAnchor(method)))
 322                             .label(method.getSimpleName()));
 323             Content codeMethLink = HtmlTree.CODE(methlink);
 324             Content dd = HtmlTree.DD(codeMethLink);
 325             dd.add(Entity.NO_BREAK_SPACE);
 326             dd.add(writer.contents.inClass);
 327             dd.add(Entity.NO_BREAK_SPACE);
 328             dd.add(codeOverriddenTypeLink);
 329             dl.add(dd);
 330         }
 331     }
 332 
 333     /**
 334      * {@inheritDoc}
 335      */
 336     protected static void addImplementsInfo(HtmlDocletWriter writer,
 337             ExecutableElement method, Content dl) {
 338         Utils utils = writer.utils;
 339         if (utils.isStatic(method) || writer.configuration.nocomment) {
 340             return;
 341         }
 342         Contents contents = writer.contents;


< prev index next >