< prev index next >

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

Print this page
rev 47482 : 8190295: Introduce a new Table builder class
rev 47483 : 8190818: Introduce a new Script builder class
rev 47486 : 8190821: Introduce a new Links builder class


  27 
  28 import jdk.javadoc.internal.doclets.formats.html.markup.Table;
  29 import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
  30 
  31 import java.util.*;
  32 import java.util.stream.Collectors;
  33 
  34 import javax.lang.model.element.Element;
  35 import javax.lang.model.element.ExecutableElement;
  36 import javax.lang.model.element.Modifier;
  37 import javax.lang.model.element.TypeElement;
  38 import javax.lang.model.element.TypeParameterElement;
  39 import javax.lang.model.type.TypeMirror;
  40 
  41 import com.sun.source.doctree.DocTree;
  42 import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
  43 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
  44 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
  45 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
  46 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;

  47 import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
  48 import jdk.javadoc.internal.doclets.toolkit.Content;
  49 import jdk.javadoc.internal.doclets.toolkit.MemberSummaryWriter;
  50 import jdk.javadoc.internal.doclets.toolkit.Resources;
  51 import jdk.javadoc.internal.doclets.toolkit.taglets.DeprecatedTaglet;
  52 import jdk.javadoc.internal.doclets.toolkit.util.Utils;
  53 import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberMap;
  54 
  55 import static javax.lang.model.element.Modifier.*;
  56 
  57 /**
  58  * The base class for member writers.
  59  *
  60  *  <p><b>This is NOT part of any supported API.
  61  *  If you write code that depends on this, you do so at your own risk.
  62  *  This code and its internal interfaces are subject to change or
  63  *  deletion without notice.</b>
  64  *
  65  * @author Robert Field
  66  * @author Atul M Dambalkar
  67  * @author Jamie Ho (Re-write)
  68  * @author Bhavesh Patel (Modified)
  69  */
  70 public abstract class AbstractMemberWriter implements MemberSummaryWriter {
  71 
  72     protected final HtmlConfiguration configuration;
  73     protected final Utils utils;
  74     protected final SubWriterHolderWriter writer;
  75     protected final Contents contents;
  76     protected final Resources resources;

  77 
  78     protected final TypeElement typeElement;
  79     public final boolean nodepr;
  80 
  81     protected boolean printedSummaryHeader = false;
  82 
  83     public AbstractMemberWriter(SubWriterHolderWriter writer, TypeElement typeElement) {
  84         this.configuration = writer.configuration;
  85         this.writer = writer;
  86         this.nodepr = configuration.nodeprecated;
  87         this.typeElement = typeElement;
  88         this.utils = configuration.utils;
  89         this.contents = configuration.contents;
  90         this.resources = configuration.resources;

  91     }
  92 
  93     public AbstractMemberWriter(SubWriterHolderWriter writer) {
  94         this(writer, null);
  95     }
  96 
  97     /*** abstracts ***/
  98 
  99     /**
 100      * Add the summary label for the member.
 101      *
 102      * @param memberTree the content tree to which the label will be added
 103      */
 104     public abstract void addSummaryLabel(Content memberTree);
 105 
 106     /**
 107      * Get the summary for the member summary table.
 108      *
 109      * @return a string for the table summary
 110      */


 502                 return;
 503             }
 504             superClass = utils.getSuperClass(superClass);
 505         }
 506         liNav.addContent(getNavSummaryLink(null, false));
 507     }
 508 
 509     protected void serialWarning(Element e, String key, String a1, String a2) {
 510         if (configuration.serialwarn) {
 511             configuration.messages.warning(e, key, a1, a2);
 512         }
 513     }
 514 
 515     /**
 516      * Add the member summary for the given class.
 517      *
 518      * @param tElement the class that is being documented
 519      * @param member the member being documented
 520      * @param firstSentenceTags the first sentence tags to be added to the summary
 521      */

 522     public void addMemberSummary(TypeElement tElement, Element member,
 523             List<? extends DocTree> firstSentenceTags) {
 524         if (tElement != typeElement) {
 525             throw new IllegalStateException();
 526         }
 527         Table table = getSummaryTable();
 528         List<Content> rowContents = new ArrayList<>();
 529         Content summaryType = new ContentBuilder();
 530         addSummaryType(member, summaryType);
 531         if (!summaryType.isEmpty())
 532             rowContents.add(summaryType);
 533         Content summaryLink = new ContentBuilder();
 534         addSummaryLink(tElement, member, summaryLink);
 535         rowContents.add(summaryLink);
 536         Content desc = new ContentBuilder();
 537         writer.addSummaryLinkComment(this, member, firstSentenceTags, desc);
 538         rowContents.add(desc);
 539         table.addRow(member, rowContents);
 540     }
 541 




  27 
  28 import jdk.javadoc.internal.doclets.formats.html.markup.Table;
  29 import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
  30 
  31 import java.util.*;
  32 import java.util.stream.Collectors;
  33 
  34 import javax.lang.model.element.Element;
  35 import javax.lang.model.element.ExecutableElement;
  36 import javax.lang.model.element.Modifier;
  37 import javax.lang.model.element.TypeElement;
  38 import javax.lang.model.element.TypeParameterElement;
  39 import javax.lang.model.type.TypeMirror;
  40 
  41 import com.sun.source.doctree.DocTree;
  42 import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
  43 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
  44 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
  45 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
  46 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
  47 import jdk.javadoc.internal.doclets.formats.html.markup.Links;
  48 import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
  49 import jdk.javadoc.internal.doclets.toolkit.Content;
  50 import jdk.javadoc.internal.doclets.toolkit.MemberSummaryWriter;
  51 import jdk.javadoc.internal.doclets.toolkit.Resources;
  52 import jdk.javadoc.internal.doclets.toolkit.taglets.DeprecatedTaglet;
  53 import jdk.javadoc.internal.doclets.toolkit.util.Utils;
  54 import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberMap;
  55 
  56 import static javax.lang.model.element.Modifier.*;
  57 
  58 /**
  59  * The base class for member writers.
  60  *
  61  *  <p><b>This is NOT part of any supported API.
  62  *  If you write code that depends on this, you do so at your own risk.
  63  *  This code and its internal interfaces are subject to change or
  64  *  deletion without notice.</b>
  65  *
  66  * @author Robert Field
  67  * @author Atul M Dambalkar
  68  * @author Jamie Ho (Re-write)
  69  * @author Bhavesh Patel (Modified)
  70  */
  71 public abstract class AbstractMemberWriter implements MemberSummaryWriter {
  72 
  73     protected final HtmlConfiguration configuration;
  74     protected final Utils utils;
  75     protected final SubWriterHolderWriter writer;
  76     protected final Contents contents;
  77     protected final Resources resources;
  78     protected final Links links;
  79 
  80     protected final TypeElement typeElement;
  81     public final boolean nodepr;
  82 
  83     protected boolean printedSummaryHeader = false;
  84 
  85     public AbstractMemberWriter(SubWriterHolderWriter writer, TypeElement typeElement) {
  86         this.configuration = writer.configuration;
  87         this.writer = writer;
  88         this.nodepr = configuration.nodeprecated;
  89         this.typeElement = typeElement;
  90         this.utils = configuration.utils;
  91         this.contents = configuration.contents;
  92         this.resources = configuration.resources;
  93         this.links = configuration.links;
  94     }
  95 
  96     public AbstractMemberWriter(SubWriterHolderWriter writer) {
  97         this(writer, null);
  98     }
  99 
 100     /*** abstracts ***/
 101 
 102     /**
 103      * Add the summary label for the member.
 104      *
 105      * @param memberTree the content tree to which the label will be added
 106      */
 107     public abstract void addSummaryLabel(Content memberTree);
 108 
 109     /**
 110      * Get the summary for the member summary table.
 111      *
 112      * @return a string for the table summary
 113      */


 505                 return;
 506             }
 507             superClass = utils.getSuperClass(superClass);
 508         }
 509         liNav.addContent(getNavSummaryLink(null, false));
 510     }
 511 
 512     protected void serialWarning(Element e, String key, String a1, String a2) {
 513         if (configuration.serialwarn) {
 514             configuration.messages.warning(e, key, a1, a2);
 515         }
 516     }
 517 
 518     /**
 519      * Add the member summary for the given class.
 520      *
 521      * @param tElement the class that is being documented
 522      * @param member the member being documented
 523      * @param firstSentenceTags the first sentence tags to be added to the summary
 524      */
 525     @Override
 526     public void addMemberSummary(TypeElement tElement, Element member,
 527             List<? extends DocTree> firstSentenceTags) {
 528         if (tElement != typeElement) {
 529             throw new IllegalStateException();
 530         }
 531         Table table = getSummaryTable();
 532         List<Content> rowContents = new ArrayList<>();
 533         Content summaryType = new ContentBuilder();
 534         addSummaryType(member, summaryType);
 535         if (!summaryType.isEmpty())
 536             rowContents.add(summaryType);
 537         Content summaryLink = new ContentBuilder();
 538         addSummaryLink(tElement, member, summaryLink);
 539         rowContents.add(summaryLink);
 540         Content desc = new ContentBuilder();
 541         writer.addSummaryLinkComment(this, member, firstSentenceTags, desc);
 542         rowContents.add(desc);
 543         table.addRow(member, rowContents);
 544     }
 545 


< prev index next >