40 import javax.lang.model.element.TypeElement; |
40 import javax.lang.model.element.TypeElement; |
41 import javax.lang.model.util.ElementFilter; |
41 import javax.lang.model.util.ElementFilter; |
42 |
42 |
43 import com.sun.source.doctree.DocTree; |
43 import com.sun.source.doctree.DocTree; |
44 import jdk.javadoc.doclet.DocletEnvironment.ModuleMode; |
44 import jdk.javadoc.doclet.DocletEnvironment.ModuleMode; |
|
45 import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; |
45 import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; |
46 import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; |
46 import jdk.javadoc.internal.doclets.formats.html.markup.Entity; |
47 import jdk.javadoc.internal.doclets.formats.html.markup.Entity; |
47 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; |
48 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; |
48 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag; |
49 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag; |
49 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; |
50 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; |
159 * description. |
160 * description. |
160 */ |
161 */ |
161 private final Map<TypeElement, Content> providesTrees |
162 private final Map<TypeElement, Content> providesTrees |
162 = new TreeMap<>(utils.makeAllClassesComparator()); |
163 = new TreeMap<>(utils.makeAllClassesComparator()); |
163 |
164 |
164 /** |
|
165 * The HTML tree for main tag. |
|
166 */ |
|
167 protected HtmlTree mainTree = HtmlTree.MAIN(); |
|
168 |
|
169 private final Navigation navBar; |
165 private final Navigation navBar; |
|
166 |
|
167 private final BodyContents bodyContents = new BodyContents(); |
170 |
168 |
171 /** |
169 /** |
172 * Constructor to construct ModuleWriter object and to generate "moduleName-summary.html" file. |
170 * Constructor to construct ModuleWriter object and to generate "moduleName-summary.html" file. |
173 * |
171 * |
174 * @param configuration the configuration of the doclet. |
172 * @param configuration the configuration of the doclet. |
176 */ |
174 */ |
177 public ModuleWriterImpl(HtmlConfiguration configuration, ModuleElement mdle) { |
175 public ModuleWriterImpl(HtmlConfiguration configuration, ModuleElement mdle) { |
178 super(configuration, configuration.docPaths.moduleSummary(mdle)); |
176 super(configuration, configuration.docPaths.moduleSummary(mdle)); |
179 this.mdle = mdle; |
177 this.mdle = mdle; |
180 this.moduleMode = configuration.docEnv.getModuleMode(); |
178 this.moduleMode = configuration.docEnv.getModuleMode(); |
181 this.navBar = new Navigation(mdle, configuration, fixedNavDiv, PageMode.MODULE, path); |
179 this.navBar = new Navigation(mdle, configuration, PageMode.MODULE, path); |
182 computeModulesData(); |
180 computeModulesData(); |
183 } |
181 } |
184 |
182 |
185 /** |
183 /** |
186 * Get the module header. |
184 * Get the module header. |
188 * @param heading the heading for the section |
186 * @param heading the heading for the section |
189 */ |
187 */ |
190 @Override |
188 @Override |
191 public Content getModuleHeader(String heading) { |
189 public Content getModuleHeader(String heading) { |
192 HtmlTree bodyTree = getBody(getWindowTitle(mdle.getQualifiedName().toString())); |
190 HtmlTree bodyTree = getBody(getWindowTitle(mdle.getQualifiedName().toString())); |
193 HtmlTree htmlTree = HtmlTree.HEADER(); |
191 Content headerContent = new ContentBuilder(); |
194 addTop(htmlTree); |
192 addTop(headerContent); |
195 navBar.setDisplaySummaryModuleDescLink(!utils.getFullBody(mdle).isEmpty() && !configuration.nocomment); |
193 navBar.setDisplaySummaryModuleDescLink(!utils.getFullBody(mdle).isEmpty() && !configuration.nocomment); |
196 navBar.setDisplaySummaryModulesLink(display(requires) || display(indirectModules)); |
194 navBar.setDisplaySummaryModulesLink(display(requires) || display(indirectModules)); |
197 navBar.setDisplaySummaryPackagesLink(display(packages) || display(indirectPackages) |
195 navBar.setDisplaySummaryPackagesLink(display(packages) || display(indirectPackages) |
198 || display(indirectOpenPackages)); |
196 || display(indirectOpenPackages)); |
199 navBar.setDisplaySummaryServicesLink(displayServices(uses, usesTrees) || displayServices(provides.keySet(), providesTrees)); |
197 navBar.setDisplaySummaryServicesLink(displayServices(uses, usesTrees) || displayServices(provides.keySet(), providesTrees)); |
200 navBar.setUserHeader(getUserHeaderFooter(true)); |
198 navBar.setUserHeader(getUserHeaderFooter(true)); |
201 htmlTree.add(navBar.getContent(true)); |
199 headerContent.add(navBar.getContent(true)); |
202 bodyTree.add(htmlTree); |
|
203 HtmlTree div = new HtmlTree(HtmlTag.DIV); |
200 HtmlTree div = new HtmlTree(HtmlTag.DIV); |
204 div.setStyle(HtmlStyle.header); |
201 div.setStyle(HtmlStyle.header); |
205 Content annotationContent = new HtmlTree(HtmlTag.P); |
202 Content annotationContent = new HtmlTree(HtmlTag.P); |
206 addAnnotationInfo(mdle, annotationContent); |
203 addAnnotationInfo(mdle, annotationContent); |
207 div.add(annotationContent); |
204 div.add(annotationContent); |
211 HtmlStyle.title, label); |
208 HtmlStyle.title, label); |
212 tHeading.add(Entity.NO_BREAK_SPACE); |
209 tHeading.add(Entity.NO_BREAK_SPACE); |
213 Content moduleHead = new RawHtml(heading); |
210 Content moduleHead = new RawHtml(heading); |
214 tHeading.add(moduleHead); |
211 tHeading.add(moduleHead); |
215 div.add(tHeading); |
212 div.add(tHeading); |
216 mainTree.add(div); |
213 bodyContents.setHeader(headerContent) |
|
214 .addMainContent(div); |
217 return bodyTree; |
215 return bodyTree; |
218 } |
216 } |
219 |
217 |
220 /** |
218 /** |
221 * Get the content header. |
219 * Get the content header. |
875 |
873 |
876 /** |
874 /** |
877 * {@inheritDoc} |
875 * {@inheritDoc} |
878 */ |
876 */ |
879 @Override |
877 @Override |
880 public void addModuleContent(Content contentTree, Content moduleContentTree) { |
878 public void addModuleContent(Content moduleContentTree) { |
881 mainTree.add(moduleContentTree); |
879 bodyContents.addMainContent(moduleContentTree); |
882 contentTree.add(mainTree); |
|
883 } |
880 } |
884 |
881 |
885 /** |
882 /** |
886 * {@inheritDoc} |
883 * {@inheritDoc} |
887 */ |
884 */ |
888 @Override |
885 @Override |
889 public void addModuleFooter(Content contentTree) { |
886 public void addModuleFooter() { |
890 Content htmlTree = HtmlTree.FOOTER(); |
887 Content htmlTree = HtmlTree.FOOTER(); |
891 navBar.setUserFooter(getUserHeaderFooter(false)); |
888 navBar.setUserFooter(getUserHeaderFooter(false)); |
892 htmlTree.add(navBar.getContent(false)); |
889 htmlTree.add(navBar.getContent(false)); |
893 addBottom(htmlTree); |
890 addBottom(htmlTree); |
894 contentTree.add(htmlTree); |
891 bodyContents.setFooter(htmlTree); |
895 } |
892 } |
896 |
893 |
897 /** |
894 /** |
898 * {@inheritDoc} |
895 * {@inheritDoc} |
899 * |
896 * |
900 * @throws jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException |
897 * @throws jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException |
901 */ |
898 */ |
902 @Override |
899 @Override |
903 public void printDocument(Content contentTree) throws DocFileIOException { |
900 public void printDocument(Content contentTree) throws DocFileIOException { |
|
901 contentTree.add(bodyContents.toContent()); |
904 printHtmlDocument(configuration.metakeywords.getMetaKeywordsForModule(mdle), |
902 printHtmlDocument(configuration.metakeywords.getMetaKeywordsForModule(mdle), |
905 getDescription("declaration", mdle), getLocalStylesheets(mdle), contentTree); |
903 getDescription("declaration", mdle), getLocalStylesheets(mdle), contentTree); |
906 } |
904 } |
907 |
905 |
908 /** |
906 /** |