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(typeElement, 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) {
289 return;
290 }
291 Utils utils = writer.utils;
292 Contents contents = writer.contents;
293 TypeElement holder = utils.getEnclosingTypeElement(method);
294 if (!(utils.isPublic(holder) ||
295 utils.isLinkable(holder))) {
296 //This is an implementation detail that should not be documented.
297 return;
298 }
299 if (utils.isIncluded(holder) && ! utils.isIncluded(method)) {
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)){
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;
343 VisibleMemberTable vmt = writer.configuration
344 .getVisibleMemberTable(utils.getEnclosingTypeElement(method));
345 SortedSet<ExecutableElement> implementedMethods =
346 new TreeSet<>(utils.makeOverrideUseComparator());
347 implementedMethods.addAll(vmt.getImplementedMethods(method));
348 for (ExecutableElement implementedMeth : implementedMethods) {
349 TypeMirror intfac = vmt.getImplementedMethodHolder(method, implementedMeth);
350 intfac = utils.getDeclaredType(utils.getEnclosingTypeElement(method), intfac);
351 Content intfaclink = writer.getLink(new LinkInfoImpl(
352 writer.configuration, LinkInfoImpl.Kind.METHOD_SPECIFIED_BY, intfac));
353 Content codeIntfacLink = HtmlTree.CODE(intfaclink);
354 Content dt = HtmlTree.DT(HtmlTree.SPAN(HtmlStyle.overrideSpecifyLabel, contents.specifiedByLabel));
355 dl.add(dt);
356 Content methlink = writer.getDocLink(
357 LinkInfoImpl.Kind.MEMBER, implementedMeth,
358 implementedMeth.getSimpleName(), false);
359 Content codeMethLink = HtmlTree.CODE(methlink);
|
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 (options.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(typeElement, 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.options.noComment) {
289 return;
290 }
291 Utils utils = writer.utils;
292 Contents contents = writer.contents;
293 TypeElement holder = utils.getEnclosingTypeElement(method);
294 if (!(utils.isPublic(holder) ||
295 utils.isLinkable(holder))) {
296 //This is an implementation detail that should not be documented.
297 return;
298 }
299 if (utils.isIncluded(holder) && ! utils.isIncluded(method)) {
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)){
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.options.noComment) {
340 return;
341 }
342 Contents contents = writer.contents;
343 VisibleMemberTable vmt = writer.configuration
344 .getVisibleMemberTable(utils.getEnclosingTypeElement(method));
345 SortedSet<ExecutableElement> implementedMethods =
346 new TreeSet<>(utils.makeOverrideUseComparator());
347 implementedMethods.addAll(vmt.getImplementedMethods(method));
348 for (ExecutableElement implementedMeth : implementedMethods) {
349 TypeMirror intfac = vmt.getImplementedMethodHolder(method, implementedMeth);
350 intfac = utils.getDeclaredType(utils.getEnclosingTypeElement(method), intfac);
351 Content intfaclink = writer.getLink(new LinkInfoImpl(
352 writer.configuration, LinkInfoImpl.Kind.METHOD_SPECIFIED_BY, intfac));
353 Content codeIntfacLink = HtmlTree.CODE(intfaclink);
354 Content dt = HtmlTree.DT(HtmlTree.SPAN(HtmlStyle.overrideSpecifyLabel, contents.specifiedByLabel));
355 dl.add(dt);
356 Content methlink = writer.getDocLink(
357 LinkInfoImpl.Kind.MEMBER, implementedMeth,
358 implementedMeth.getSimpleName(), false);
359 Content codeMethLink = HtmlTree.CODE(methlink);
|