8223364: Bad placement of anchor relative to header

Reviewed-by: jjg
This commit is contained in:
Hannes Wallnöfer 2019-06-12 13:21:25 +02:00
parent 62d7317f86
commit 0d8209a2b7
20 changed files with 106 additions and 171 deletions

View file

@ -33,6 +33,7 @@ import javax.lang.model.type.TypeMirror;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.formats.html.markup.Table;
import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
import jdk.javadoc.internal.doclets.toolkit.AnnotationTypeFieldWriter;
@ -104,9 +105,9 @@ public class AnnotationTypeFieldWriterImpl extends AbstractMemberWriter
if (!writer.printedAnnotationFieldHeading) {
Content heading = HtmlTree.HEADING(Headings.TypeDeclaration.DETAILS_HEADING,
contents.fieldDetailsLabel);
memberDetailsTree.add(heading);
memberDetailsTree.add(links.createAnchor(
SectionName.ANNOTATION_TYPE_FIELD_DETAIL));
memberDetailsTree.add(heading);
writer.printedAnnotationFieldHeading = true;
}
return memberDetailsTree;
@ -119,9 +120,8 @@ public class AnnotationTypeFieldWriterImpl extends AbstractMemberWriter
Content annotationDetailsTree) {
Content annotationDocTree = new ContentBuilder();
Content heading = new HtmlTree(Headings.TypeDeclaration.MEMBER_HEADING);
heading.add(name(member));
heading.add(links.createAnchor(name(member), new StringContent(name(member))));
annotationDocTree.add(heading);
annotationDocTree.add(links.createAnchor(name(member)));
return HtmlTree.SECTION(HtmlStyle.detail, annotationDocTree);
}

View file

@ -33,6 +33,7 @@ import javax.lang.model.type.TypeMirror;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.formats.html.markup.Table;
import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
import jdk.javadoc.internal.doclets.toolkit.AnnotationTypeRequiredMemberWriter;
@ -106,9 +107,9 @@ public class AnnotationTypeRequiredMemberWriterImpl extends AbstractMemberWriter
if (!writer.printedAnnotationHeading) {
Content heading = HtmlTree.HEADING(Headings.TypeDeclaration.DETAILS_HEADING,
contents.annotationTypeDetailsLabel);
memberDetailsTree.add(heading);
memberDetailsTree.add(links.createAnchor(
SectionName.ANNOTATION_TYPE_ELEMENT_DETAIL));
memberDetailsTree.add(heading);
writer.printedAnnotationHeading = true;
}
return memberDetailsTree;
@ -122,10 +123,9 @@ public class AnnotationTypeRequiredMemberWriterImpl extends AbstractMemberWriter
String simpleName = name(member);
Content annotationDocTree = new ContentBuilder();
Content heading = new HtmlTree(Headings.TypeDeclaration.MEMBER_HEADING);
heading.add(simpleName);
heading.add(links.createAnchor(
simpleName + utils.signature((ExecutableElement) member), new StringContent(simpleName)));
annotationDocTree.add(heading);
annotationDocTree.add(links.createAnchor(
simpleName + utils.signature((ExecutableElement) member)));
return HtmlTree.SECTION(HtmlStyle.detail, annotationDocTree);
}

View file

@ -37,6 +37,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.formats.html.markup.Table;
import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
import jdk.javadoc.internal.doclets.toolkit.ConstructorWriter;
@ -122,9 +123,9 @@ public class ConstructorWriterImpl extends AbstractExecutableMemberWriter
Content constructorDetailsTree = new ContentBuilder();
Content heading = HtmlTree.HEADING(Headings.TypeDeclaration.DETAILS_HEADING,
contents.constructorDetailsLabel);
constructorDetailsTree.add(heading);
constructorDetailsTree.add(links.createAnchor(
SectionName.CONSTRUCTOR_DETAIL));
constructorDetailsTree.add(heading);
return constructorDetailsTree;
}
@ -137,12 +138,11 @@ public class ConstructorWriterImpl extends AbstractExecutableMemberWriter
String erasureAnchor;
Content constructorDocTree = new ContentBuilder();
Content heading = new HtmlTree(Headings.TypeDeclaration.MEMBER_HEADING);
heading.add(name(constructor));
constructorDocTree.add(heading);
if ((erasureAnchor = getErasureAnchor(constructor)) != null) {
constructorDocTree.add(links.createAnchor((erasureAnchor)));
heading.add(links.createAnchor((erasureAnchor)));
}
constructorDocTree.add(links.createAnchor(writer.getAnchor(constructor)));
heading.add(links.createAnchor(writer.getAnchor(constructor), new StringContent(name(constructor))));
constructorDocTree.add(heading);
return HtmlTree.SECTION(HtmlStyle.detail, constructorDocTree);
}

View file

@ -33,6 +33,7 @@ import javax.lang.model.element.VariableElement;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.formats.html.markup.Table;
import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
import jdk.javadoc.internal.doclets.toolkit.Content;
@ -91,9 +92,9 @@ public class EnumConstantWriterImpl extends AbstractMemberWriter
Content enumConstantsDetailsTree = new ContentBuilder();
Content heading = HtmlTree.HEADING(Headings.TypeDeclaration.DETAILS_HEADING,
contents.enumConstantDetailLabel);
enumConstantsDetailsTree.add(heading);
enumConstantsDetailsTree.add(links.createAnchor(
SectionName.ENUM_CONSTANT_DETAIL));
enumConstantsDetailsTree.add(heading);
return enumConstantsDetailsTree;
}
@ -105,9 +106,8 @@ public class EnumConstantWriterImpl extends AbstractMemberWriter
Content enumConstantsDetailsTree) {
Content enumConstantsTree = new ContentBuilder();
Content heading = new HtmlTree(Headings.TypeDeclaration.MEMBER_HEADING);
heading.add(name(enumConstant));
heading.add(links.createAnchor(name(enumConstant), new StringContent(name(enumConstant))));
enumConstantsTree.add(heading);
enumConstantsTree.add(links.createAnchor(name(enumConstant)));
return HtmlTree.SECTION(HtmlStyle.detail, enumConstantsTree);
}

View file

@ -96,9 +96,9 @@ public class FieldWriterImpl extends AbstractMemberWriter
Content fieldDetailsTree = new ContentBuilder();
Content heading = HtmlTree.HEADING(Headings.TypeDeclaration.DETAILS_HEADING,
contents.fieldDetailsLabel);
fieldDetailsTree.add(heading);
fieldDetailsTree.add(links.createAnchor(
SectionName.FIELD_DETAIL));
fieldDetailsTree.add(heading);
return fieldDetailsTree;
}
@ -109,9 +109,8 @@ public class FieldWriterImpl extends AbstractMemberWriter
public Content getFieldDocTreeHeader(VariableElement field, Content fieldDetailsTree) {
Content fieldTree = new ContentBuilder();
Content heading = new HtmlTree(Headings.TypeDeclaration.MEMBER_HEADING);
heading.add(name(field));
heading.add(links.createAnchor(name(field), new StringContent(name(field))));
fieldTree.add(heading);
fieldTree.add(links.createAnchor(name(field)));
return HtmlTree.SECTION(HtmlStyle.detail, fieldTree);
}

View file

@ -109,8 +109,8 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
Content methodDetailsTree = new ContentBuilder();
Content heading = HtmlTree.HEADING(Headings.TypeDeclaration.DETAILS_HEADING,
contents.methodDetailLabel);
methodDetailsTree.add(heading);
methodDetailsTree.add(links.createAnchor(SectionName.METHOD_DETAIL));
methodDetailsTree.add(heading);
return methodDetailsTree;
}
@ -122,12 +122,11 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
String erasureAnchor;
Content methodDocTree = new ContentBuilder();
Content heading = new HtmlTree(Headings.TypeDeclaration.MEMBER_HEADING);
heading.add(name(method));
methodDocTree.add(heading);
if ((erasureAnchor = getErasureAnchor(method)) != null) {
methodDocTree.add(links.createAnchor((erasureAnchor)));
heading.add(links.createAnchor((erasureAnchor)));
}
methodDocTree.add(links.createAnchor(writer.getAnchor(method)));
heading.add(links.createAnchor(writer.getAnchor(method), new StringContent(name(method))));
methodDocTree.add(heading);
return HtmlTree.SECTION(HtmlStyle.detail, methodDocTree);
}

View file

@ -89,8 +89,8 @@ public class PropertyWriterImpl extends AbstractMemberWriter
Content propertyDetailsTree = new ContentBuilder();
Content heading = HtmlTree.HEADING(Headings.TypeDeclaration.DETAILS_HEADING,
contents.propertyDetailsLabel);
propertyDetailsTree.add(heading);
propertyDetailsTree.add(links.createAnchor(SectionName.PROPERTY_DETAIL));
propertyDetailsTree.add(heading);
return propertyDetailsTree;
}
@ -102,9 +102,9 @@ public class PropertyWriterImpl extends AbstractMemberWriter
Content propertyDetailsTree) {
Content propertyDocTree = new ContentBuilder();
Content heading = new HtmlTree(Headings.TypeDeclaration.MEMBER_HEADING);
heading.add(utils.getPropertyLabel(name(property)));
heading.add(links.createAnchor(name(property),
new StringContent(utils.getPropertyLabel(name(property)))));
propertyDocTree.add(heading);
propertyDocTree.add(links.createAnchor(name(property)));
return HtmlTree.SECTION(HtmlStyle.detail, propertyDocTree);
}

View file

@ -100,7 +100,7 @@ public class Links {
* @return a content tree for the marker anchor
*/
public Content createAnchor(String name, Content content) {
return HtmlTree.A_ID(name, (content == null ? EMPTY_COMMENT : content));
return HtmlTree.A_ID(getName(name), (content == null ? EMPTY_COMMENT : content));
}
private static final Content EMPTY_COMMENT = new Comment(" ");

View file

@ -574,8 +574,7 @@ td.colLast a {
div.memberSignature {
font-family:'DejaVu Sans Mono', monospace;
font-size:14px;
margin-top:6px;
margin-bottom:14px;
margin:14px 0;
white-space: pre-wrap;
}
div.memberSignature span.annotations {