8190821: Introduce a new Links builder class
Reviewed-by: bpatel, ksrini
This commit is contained in:
parent
7f0a1c7e36
commit
29cd769953
@ -358,6 +358,6 @@ public abstract class AbstractExecutableMemberWriter extends AbstractMemberWrite
|
||||
}
|
||||
}
|
||||
buf.append(")");
|
||||
return foundTypeVariable ? writer.getName(buf.toString()) : null;
|
||||
return foundTypeVariable ? configuration.links.getName(buf.toString()) : null;
|
||||
}
|
||||
}
|
||||
|
@ -222,6 +222,7 @@ public class AbstractIndexWriter extends HtmlDocletWriter {
|
||||
*
|
||||
* @param mdle the module to be documented
|
||||
* @param dlTree the content tree to which the description will be added
|
||||
* @param si the search index item
|
||||
*/
|
||||
protected void addDescription(ModuleElement mdle, Content dlTree, SearchIndexItem si) {
|
||||
String moduleName = utils.getFullyQualifiedName(mdle);
|
||||
@ -316,7 +317,7 @@ public class AbstractIndexWriter extends HtmlDocletWriter {
|
||||
name = name + utils.flatSignature(ee);
|
||||
si.setLabel(name);
|
||||
if (!((utils.signature(ee)).equals(utils.flatSignature(ee)))) {
|
||||
si.setUrl(getName(getAnchor(ee)));
|
||||
si.setUrl(links.getName(getAnchor(ee)));
|
||||
}
|
||||
|
||||
} else {
|
||||
@ -420,7 +421,7 @@ public class AbstractIndexWriter extends HtmlDocletWriter {
|
||||
* @return a content tree for the marker anchor
|
||||
*/
|
||||
public Content getMarkerAnchorForIndex(String anchorNameForIndex) {
|
||||
return getMarkerAnchor(getNameForIndex(anchorNameForIndex), null);
|
||||
return links.createAnchor(getNameForIndex(anchorNameForIndex), null);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -430,7 +431,7 @@ public class AbstractIndexWriter extends HtmlDocletWriter {
|
||||
* @return a valid HTML name string.
|
||||
*/
|
||||
public String getNameForIndex(String unicode) {
|
||||
return "I:" + getName(unicode);
|
||||
return "I:" + links.getName(unicode);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -452,6 +453,13 @@ public class AbstractIndexWriter extends HtmlDocletWriter {
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a search index file.
|
||||
*
|
||||
* @param searchIndexFile the file to be generated
|
||||
* @param searchIndexZip the zip file to be generated
|
||||
* @param searchIndexJS the file for the JavaScript to be generated
|
||||
* @param searchIndex the search index items
|
||||
* @param varName the variable name to write in the JavaScript file
|
||||
* @throws DocFileIOException if there is a problem creating the search index file
|
||||
*/
|
||||
protected void createSearchIndexFile(DocPath searchIndexFile, DocPath searchIndexZip,
|
||||
|
@ -44,6 +44,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
import jdk.javadoc.internal.doclets.toolkit.MemberSummaryWriter;
|
||||
@ -74,6 +75,7 @@ public abstract class AbstractMemberWriter implements MemberSummaryWriter {
|
||||
protected final SubWriterHolderWriter writer;
|
||||
protected final Contents contents;
|
||||
protected final Resources resources;
|
||||
protected final Links links;
|
||||
|
||||
protected final TypeElement typeElement;
|
||||
public final boolean nodepr;
|
||||
@ -88,6 +90,7 @@ public abstract class AbstractMemberWriter implements MemberSummaryWriter {
|
||||
this.utils = configuration.utils;
|
||||
this.contents = configuration.contents;
|
||||
this.resources = configuration.resources;
|
||||
this.links = configuration.links;
|
||||
}
|
||||
|
||||
public AbstractMemberWriter(SubWriterHolderWriter writer) {
|
||||
@ -519,6 +522,7 @@ public abstract class AbstractMemberWriter implements MemberSummaryWriter {
|
||||
* @param member the member being documented
|
||||
* @param firstSentenceTags the first sentence tags to be added to the summary
|
||||
*/
|
||||
@Override
|
||||
public void addMemberSummary(TypeElement tElement, Element member,
|
||||
List<? extends DocTree> firstSentenceTags) {
|
||||
if (tElement != typeElement) {
|
||||
|
@ -39,6 +39,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.AnnotationTypeFieldWriter;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
@ -108,7 +109,7 @@ public class AnnotationTypeFieldWriterImpl extends AbstractMemberWriter
|
||||
public void addAnnotationDetailsTreeHeader(TypeElement typeElement,
|
||||
Content memberDetailsTree) {
|
||||
if (!writer.printedAnnotationFieldHeading) {
|
||||
memberDetailsTree.addContent(writer.getMarkerAnchor(
|
||||
memberDetailsTree.addContent(links.createAnchor(
|
||||
SectionName.ANNOTATION_TYPE_FIELD_DETAIL));
|
||||
Content heading = HtmlTree.HEADING(HtmlConstants.DETAILS_HEADING,
|
||||
contents.fieldDetailsLabel);
|
||||
@ -122,8 +123,7 @@ public class AnnotationTypeFieldWriterImpl extends AbstractMemberWriter
|
||||
*/
|
||||
public Content getAnnotationDocTreeHeader(Element member,
|
||||
Content annotationDetailsTree) {
|
||||
annotationDetailsTree.addContent(
|
||||
writer.getMarkerAnchor(name(member)));
|
||||
annotationDetailsTree.addContent(links.createAnchor(name(member)));
|
||||
Content annotationDocTree = writer.getMemberTreeHeader();
|
||||
Content heading = new HtmlTree(HtmlConstants.MEMBER_HEADING);
|
||||
heading.addContent(name(member));
|
||||
@ -232,26 +232,30 @@ public class AnnotationTypeFieldWriterImpl extends AbstractMemberWriter
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public void addSummaryAnchor(TypeElement typeElement, Content memberTree) {
|
||||
memberTree.addContent(writer.getMarkerAnchor(
|
||||
memberTree.addContent(links.createAnchor(
|
||||
SectionName.ANNOTATION_TYPE_FIELD_SUMMARY));
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public void addInheritedSummaryAnchor(TypeElement typeElement, Content inheritedTree) {
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public void addInheritedSummaryLabel(TypeElement typeElement, Content inheritedTree) {
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
protected void addSummaryLink(LinkInfoImpl.Kind context, TypeElement typeElement, Element member,
|
||||
Content tdSummary) {
|
||||
Content memberLink = HtmlTree.SPAN(HtmlStyle.memberNameLink,
|
||||
@ -288,7 +292,7 @@ public class AnnotationTypeFieldWriterImpl extends AbstractMemberWriter
|
||||
*/
|
||||
protected Content getNavSummaryLink(TypeElement typeElement, boolean link) {
|
||||
if (link) {
|
||||
return writer.getHyperLink(
|
||||
return Links.createLink(
|
||||
SectionName.ANNOTATION_TYPE_FIELD_SUMMARY,
|
||||
contents.navField);
|
||||
} else {
|
||||
@ -301,7 +305,7 @@ public class AnnotationTypeFieldWriterImpl extends AbstractMemberWriter
|
||||
*/
|
||||
protected void addNavDetailLink(boolean link, Content liNav) {
|
||||
if (link) {
|
||||
liNav.addContent(writer.getHyperLink(
|
||||
liNav.addContent(Links.createLink(
|
||||
SectionName.ANNOTATION_TYPE_FIELD_DETAIL,
|
||||
contents.navField));
|
||||
} else {
|
||||
|
@ -35,6 +35,7 @@ import javax.lang.model.element.TypeElement;
|
||||
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.AnnotationTypeOptionalMemberWriter;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
@ -148,7 +149,7 @@ public class AnnotationTypeOptionalMemberWriterImpl extends
|
||||
*/
|
||||
@Override
|
||||
public void addSummaryAnchor(TypeElement typeElement, Content memberTree) {
|
||||
memberTree.addContent(writer.getMarkerAnchor(
|
||||
memberTree.addContent(links.createAnchor(
|
||||
SectionName.ANNOTATION_TYPE_OPTIONAL_ELEMENT_SUMMARY));
|
||||
}
|
||||
|
||||
@ -158,7 +159,7 @@ public class AnnotationTypeOptionalMemberWriterImpl extends
|
||||
@Override
|
||||
protected Content getNavSummaryLink(TypeElement typeElement, boolean link) {
|
||||
if (link) {
|
||||
return writer.getHyperLink(
|
||||
return Links.createLink(
|
||||
SectionName.ANNOTATION_TYPE_OPTIONAL_ELEMENT_SUMMARY,
|
||||
contents.navAnnotationTypeOptionalMember);
|
||||
} else {
|
||||
|
@ -40,6 +40,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.AnnotationTypeRequiredMemberWriter;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
@ -110,7 +111,7 @@ public class AnnotationTypeRequiredMemberWriterImpl extends AbstractMemberWriter
|
||||
public void addAnnotationDetailsTreeHeader(TypeElement te,
|
||||
Content memberDetailsTree) {
|
||||
if (!writer.printedAnnotationHeading) {
|
||||
memberDetailsTree.addContent(writer.getMarkerAnchor(
|
||||
memberDetailsTree.addContent(links.createAnchor(
|
||||
SectionName.ANNOTATION_TYPE_ELEMENT_DETAIL));
|
||||
Content heading = HtmlTree.HEADING(HtmlConstants.DETAILS_HEADING,
|
||||
contents.annotationTypeDetailsLabel);
|
||||
@ -122,11 +123,11 @@ public class AnnotationTypeRequiredMemberWriterImpl extends AbstractMemberWriter
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public Content getAnnotationDocTreeHeader(Element member,
|
||||
Content annotationDetailsTree) {
|
||||
@Override
|
||||
public Content getAnnotationDocTreeHeader(Element member, Content annotationDetailsTree) {
|
||||
String simpleName = name(member);
|
||||
annotationDetailsTree.addContent(writer.getMarkerAnchor(simpleName +
|
||||
utils.signature((ExecutableElement) member)));
|
||||
annotationDetailsTree.addContent(links.createAnchor(
|
||||
simpleName + utils.signature((ExecutableElement) member)));
|
||||
Content annotationDocTree = writer.getMemberTreeHeader();
|
||||
Content heading = new HtmlTree(HtmlConstants.MEMBER_HEADING);
|
||||
heading.addContent(simpleName);
|
||||
@ -252,7 +253,7 @@ public class AnnotationTypeRequiredMemberWriterImpl extends AbstractMemberWriter
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public void addSummaryAnchor(TypeElement typeElement, Content memberTree) {
|
||||
memberTree.addContent(writer.getMarkerAnchor(
|
||||
memberTree.addContent(links.createAnchor(
|
||||
SectionName.ANNOTATION_TYPE_REQUIRED_ELEMENT_SUMMARY));
|
||||
}
|
||||
|
||||
@ -307,7 +308,7 @@ public class AnnotationTypeRequiredMemberWriterImpl extends AbstractMemberWriter
|
||||
*/
|
||||
protected Content getNavSummaryLink(TypeElement typeElement, boolean link) {
|
||||
if (link) {
|
||||
return writer.getHyperLink(
|
||||
return Links.createLink(
|
||||
SectionName.ANNOTATION_TYPE_REQUIRED_ELEMENT_SUMMARY,
|
||||
contents.navAnnotationTypeRequiredMember);
|
||||
} else {
|
||||
@ -320,7 +321,7 @@ public class AnnotationTypeRequiredMemberWriterImpl extends AbstractMemberWriter
|
||||
*/
|
||||
protected void addNavDetailLink(boolean link, Content liNav) {
|
||||
if (link) {
|
||||
liNav.addContent(writer.getHyperLink(
|
||||
liNav.addContent(Links.createLink(
|
||||
SectionName.ANNOTATION_TYPE_ELEMENT_DETAIL,
|
||||
contents.navAnnotationTypeMember));
|
||||
} else {
|
||||
|
@ -37,6 +37,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.AnnotationTypeWriter;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
@ -108,7 +109,7 @@ public class AnnotationTypeWriterImpl extends SubWriterHolderWriter
|
||||
*/
|
||||
@Override
|
||||
protected Content getNavLinkPackage() {
|
||||
Content linkContent = getHyperLink(DocPaths.PACKAGE_SUMMARY,
|
||||
Content linkContent = Links.createLink(DocPaths.PACKAGE_SUMMARY,
|
||||
contents.packageLabel);
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
@ -132,7 +133,7 @@ public class AnnotationTypeWriterImpl extends SubWriterHolderWriter
|
||||
*/
|
||||
@Override
|
||||
protected Content getNavLinkClassUse() {
|
||||
Content linkContent = getHyperLink(DocPaths.CLASS_USE.resolve(filename), contents.useLabel);
|
||||
Content linkContent = Links.createLink(DocPaths.CLASS_USE.resolve(filename), contents.useLabel);
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
}
|
||||
@ -346,7 +347,7 @@ public class AnnotationTypeWriterImpl extends SubWriterHolderWriter
|
||||
*/
|
||||
@Override
|
||||
protected Content getNavLinkTree() {
|
||||
Content treeLinkContent = getHyperLink(DocPaths.PACKAGE_TREE,
|
||||
Content treeLinkContent = Links.createLink(DocPaths.PACKAGE_TREE,
|
||||
contents.treeLabel, "", "");
|
||||
Content li = HtmlTree.LI(treeLinkContent);
|
||||
return li;
|
||||
|
@ -47,6 +47,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
import jdk.javadoc.internal.doclets.toolkit.util.ClassTree;
|
||||
@ -348,7 +349,7 @@ public class ClassUseWriter extends SubWriterHolderWriter {
|
||||
HtmlTree ul = new HtmlTree(HtmlTag.UL);
|
||||
ul.setStyle(HtmlStyle.blockList);
|
||||
for (PackageElement pkg : pkgSet) {
|
||||
Content markerAnchor = getMarkerAnchor(getPackageAnchorName(pkg));
|
||||
Content markerAnchor = links.createAnchor(getPackageAnchorName(pkg));
|
||||
HtmlTree htmlTree = (configuration.allowTag(HtmlTag.SECTION))
|
||||
? HtmlTree.SECTION(markerAnchor)
|
||||
: HtmlTree.LI(HtmlStyle.blockList, markerAnchor);
|
||||
@ -377,7 +378,7 @@ public class ClassUseWriter extends SubWriterHolderWriter {
|
||||
*/
|
||||
protected void addPackageUse(PackageElement pkg, Table table) {
|
||||
Content pkgLink =
|
||||
getHyperLink(getPackageAnchorName(pkg), new StringContent(utils.getPackageName(pkg)));
|
||||
links.createLink(getPackageAnchorName(pkg), new StringContent(utils.getPackageName(pkg)));
|
||||
Content summary = new ContentBuilder();
|
||||
addSummaryComment(pkg, summary);
|
||||
table.addRow(pkgLink, summary);
|
||||
@ -514,7 +515,7 @@ public class ClassUseWriter extends SubWriterHolderWriter {
|
||||
*/
|
||||
protected Content getNavLinkPackage() {
|
||||
Content linkContent =
|
||||
getHyperLink(DocPath.parent.resolve(DocPaths.PACKAGE_SUMMARY), contents.packageLabel);
|
||||
Links.createLink(DocPath.parent.resolve(DocPaths.PACKAGE_SUMMARY), contents.packageLabel);
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
}
|
||||
@ -549,8 +550,8 @@ public class ClassUseWriter extends SubWriterHolderWriter {
|
||||
*/
|
||||
protected Content getNavLinkTree() {
|
||||
Content linkContent = utils.isEnclosingPackageIncluded(typeElement)
|
||||
? getHyperLink(DocPath.parent.resolve(DocPaths.PACKAGE_TREE), contents.treeLabel)
|
||||
: getHyperLink(pathToRoot.resolve(DocPaths.OVERVIEW_TREE), contents.treeLabel);
|
||||
? Links.createLink(DocPath.parent.resolve(DocPaths.PACKAGE_TREE), contents.treeLabel)
|
||||
: Links.createLink(pathToRoot.resolve(DocPaths.OVERVIEW_TREE), contents.treeLabel);
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
}
|
||||
|
@ -40,6 +40,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.ClassWriter;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
@ -119,7 +120,7 @@ public class ClassWriterImpl extends SubWriterHolderWriter implements ClassWrite
|
||||
*/
|
||||
@Override
|
||||
protected Content getNavLinkPackage() {
|
||||
Content linkContent = getHyperLink(DocPaths.PACKAGE_SUMMARY,
|
||||
Content linkContent = Links.createLink(DocPaths.PACKAGE_SUMMARY,
|
||||
contents.packageLabel);
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
@ -143,7 +144,7 @@ public class ClassWriterImpl extends SubWriterHolderWriter implements ClassWrite
|
||||
*/
|
||||
@Override
|
||||
protected Content getNavLinkClassUse() {
|
||||
Content linkContent = getHyperLink(DocPaths.CLASS_USE.resolve(filename), contents.useLabel);
|
||||
Content linkContent = Links.createLink(DocPaths.CLASS_USE.resolve(filename), contents.useLabel);
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
}
|
||||
@ -659,7 +660,7 @@ public class ClassWriterImpl extends SubWriterHolderWriter implements ClassWrite
|
||||
*/
|
||||
@Override
|
||||
protected Content getNavLinkTree() {
|
||||
Content treeLinkContent = getHyperLink(DocPaths.PACKAGE_TREE,
|
||||
Content treeLinkContent = Links.createLink(DocPaths.PACKAGE_TREE,
|
||||
contents.treeLabel, "", "");
|
||||
Content li = HtmlTree.LI(treeLinkContent);
|
||||
return li;
|
||||
|
@ -40,6 +40,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.ConstantsSummaryWriter;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
@ -134,14 +135,13 @@ public class ConstantsSummaryWriterImpl extends HtmlDocletWriter implements Cons
|
||||
//add link to summary
|
||||
Content link;
|
||||
if (pkg.isUnnamed()) {
|
||||
link = getHyperLink(getDocLink(
|
||||
SectionName.UNNAMED_PACKAGE_ANCHOR),
|
||||
link = Links.createLink(SectionName.UNNAMED_PACKAGE_ANCHOR,
|
||||
contents.defaultPackageLabel, "", "");
|
||||
} else {
|
||||
String parsedPackageName = utils.parsePackageName(pkg);
|
||||
Content packageNameContent = getPackageLabel(parsedPackageName);
|
||||
packageNameContent.addContent(".*");
|
||||
link = getHyperLink(DocLink.fragment(parsedPackageName),
|
||||
link = Links.createLink(DocLink.fragment(parsedPackageName),
|
||||
packageNameContent, "", "");
|
||||
PackageElement abbrevPkg = configuration.workArounds.getAbbreviatedPackageElement(pkg);
|
||||
printedPackageHeaders.add(abbrevPkg);
|
||||
@ -193,12 +193,11 @@ public class ConstantsSummaryWriterImpl extends HtmlDocletWriter implements Cons
|
||||
summariesTree.addContent(summaryTree);
|
||||
}
|
||||
if (pkg.isUnnamed()) {
|
||||
summariesTree.addContent(getMarkerAnchor(
|
||||
SectionName.UNNAMED_PACKAGE_ANCHOR));
|
||||
summariesTree.addContent(links.createAnchor(SectionName.UNNAMED_PACKAGE_ANCHOR));
|
||||
pkgNameContent = contents.defaultPackageLabel;
|
||||
} else {
|
||||
String parsedPackageName = utils.parsePackageName(pkg);
|
||||
summariesTree.addContent(getMarkerAnchor(parsedPackageName));
|
||||
summariesTree.addContent(links.createAnchor(parsedPackageName));
|
||||
pkgNameContent = getPackageLabel(parsedPackageName);
|
||||
}
|
||||
Content headingContent = new StringContent(".*");
|
||||
@ -277,8 +276,8 @@ public class ConstantsSummaryWriterImpl extends HtmlDocletWriter implements Cons
|
||||
* @return the type column of the constant table row
|
||||
*/
|
||||
private Content getTypeColumn(VariableElement member) {
|
||||
Content anchor = getMarkerAnchor(currentTypeElement.getQualifiedName() +
|
||||
"." + member.getSimpleName());
|
||||
Content anchor = links.createAnchor(
|
||||
currentTypeElement.getQualifiedName() + "." + member.getSimpleName());
|
||||
Content typeContent = new ContentBuilder();
|
||||
typeContent.addContent(anchor);
|
||||
Content code = new HtmlTree(HtmlTag.CODE);
|
||||
|
@ -38,6 +38,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.ConstructorWriter;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
@ -119,7 +120,7 @@ public class ConstructorWriterImpl extends AbstractExecutableMemberWriter
|
||||
Content memberDetailsTree) {
|
||||
memberDetailsTree.addContent(HtmlConstants.START_OF_CONSTRUCTOR_DETAILS);
|
||||
Content constructorDetailsTree = writer.getMemberTreeHeader();
|
||||
constructorDetailsTree.addContent(writer.getMarkerAnchor(
|
||||
constructorDetailsTree.addContent(links.createAnchor(
|
||||
SectionName.CONSTRUCTOR_DETAIL));
|
||||
Content heading = HtmlTree.HEADING(HtmlConstants.DETAILS_HEADING,
|
||||
contents.constructorDetailsLabel);
|
||||
@ -135,10 +136,9 @@ public class ConstructorWriterImpl extends AbstractExecutableMemberWriter
|
||||
Content constructorDetailsTree) {
|
||||
String erasureAnchor;
|
||||
if ((erasureAnchor = getErasureAnchor(constructor)) != null) {
|
||||
constructorDetailsTree.addContent(writer.getMarkerAnchor((erasureAnchor)));
|
||||
constructorDetailsTree.addContent(links.createAnchor((erasureAnchor)));
|
||||
}
|
||||
constructorDetailsTree.addContent(
|
||||
writer.getMarkerAnchor(writer.getAnchor(constructor)));
|
||||
constructorDetailsTree.addContent(links.createAnchor(writer.getAnchor(constructor)));
|
||||
Content constructorDocTree = writer.getMemberTreeHeader();
|
||||
Content heading = new HtmlTree(HtmlConstants.MEMBER_HEADING);
|
||||
heading.addContent(name(constructor));
|
||||
@ -277,8 +277,7 @@ public class ConstructorWriterImpl extends AbstractExecutableMemberWriter
|
||||
*/
|
||||
@Override
|
||||
public void addSummaryAnchor(TypeElement typeElement, Content memberTree) {
|
||||
memberTree.addContent(writer.getMarkerAnchor(
|
||||
SectionName.CONSTRUCTOR_SUMMARY));
|
||||
memberTree.addContent(links.createAnchor(SectionName.CONSTRUCTOR_SUMMARY));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -301,7 +300,7 @@ public class ConstructorWriterImpl extends AbstractExecutableMemberWriter
|
||||
@Override
|
||||
protected Content getNavSummaryLink(TypeElement typeElement, boolean link) {
|
||||
if (link) {
|
||||
return writer.getHyperLink(SectionName.CONSTRUCTOR_SUMMARY,
|
||||
return Links.createLink(SectionName.CONSTRUCTOR_SUMMARY,
|
||||
contents.navConstructor);
|
||||
} else {
|
||||
return contents.navConstructor;
|
||||
@ -314,7 +313,7 @@ public class ConstructorWriterImpl extends AbstractExecutableMemberWriter
|
||||
@Override
|
||||
protected void addNavDetailLink(boolean link, Content liNav) {
|
||||
if (link) {
|
||||
liNav.addContent(writer.getHyperLink(
|
||||
liNav.addContent(Links.createLink(
|
||||
SectionName.CONSTRUCTOR_DETAIL,
|
||||
contents.navConstructor));
|
||||
} else {
|
||||
|
@ -325,7 +325,7 @@ public class DeprecatedListWriter extends SubWriterHolderWriter {
|
||||
private void addIndexLink(DeprecatedAPIListBuilder builder,
|
||||
DeprElementKind kind, Content contentTree) {
|
||||
if (builder.hasDocumentation(kind)) {
|
||||
Content li = HtmlTree.LI(getHyperLink(getAnchorName(kind),
|
||||
Content li = HtmlTree.LI(links.createLink(getAnchorName(kind),
|
||||
contents.getContent(getHeadingKey(kind))));
|
||||
contentTree.addContent(li);
|
||||
}
|
||||
@ -362,7 +362,7 @@ public class DeprecatedListWriter extends SubWriterHolderWriter {
|
||||
*/
|
||||
private void addAnchor(DeprecatedAPIListBuilder builder, DeprElementKind kind, Content htmlTree) {
|
||||
if (builder.hasDocumentation(kind)) {
|
||||
htmlTree.addContent(getMarkerAnchor(getAnchorName(kind)));
|
||||
htmlTree.addContent(links.createAnchor(getAnchorName(kind)));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -37,6 +37,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
import jdk.javadoc.internal.doclets.toolkit.EnumConstantWriter;
|
||||
@ -92,7 +93,7 @@ public class EnumConstantWriterImpl extends AbstractMemberWriter
|
||||
Content memberDetailsTree) {
|
||||
memberDetailsTree.addContent(HtmlConstants.START_OF_ENUM_CONSTANT_DETAILS);
|
||||
Content enumConstantsDetailsTree = writer.getMemberTreeHeader();
|
||||
enumConstantsDetailsTree.addContent(writer.getMarkerAnchor(
|
||||
enumConstantsDetailsTree.addContent(links.createAnchor(
|
||||
SectionName.ENUM_CONSTANT_DETAIL));
|
||||
Content heading = HtmlTree.HEADING(HtmlConstants.DETAILS_HEADING,
|
||||
contents.enumConstantDetailLabel);
|
||||
@ -106,8 +107,7 @@ public class EnumConstantWriterImpl extends AbstractMemberWriter
|
||||
@Override
|
||||
public Content getEnumConstantsTreeHeader(VariableElement enumConstant,
|
||||
Content enumConstantsDetailsTree) {
|
||||
enumConstantsDetailsTree.addContent(
|
||||
writer.getMarkerAnchor(name(enumConstant)));
|
||||
enumConstantsDetailsTree.addContent(links.createAnchor(name(enumConstant)));
|
||||
Content enumConstantsTree = writer.getMemberTreeHeader();
|
||||
Content heading = new HtmlTree(HtmlConstants.MEMBER_HEADING);
|
||||
heading.addContent(name(enumConstant));
|
||||
@ -221,8 +221,7 @@ public class EnumConstantWriterImpl extends AbstractMemberWriter
|
||||
*/
|
||||
@Override
|
||||
public void addSummaryAnchor(TypeElement typeElement, Content memberTree) {
|
||||
memberTree.addContent(writer.getMarkerAnchor(
|
||||
SectionName.ENUM_CONSTANT_SUMMARY));
|
||||
memberTree.addContent(links.createAnchor(SectionName.ENUM_CONSTANT_SUMMARY));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -282,10 +281,10 @@ public class EnumConstantWriterImpl extends AbstractMemberWriter
|
||||
protected Content getNavSummaryLink(TypeElement typeElement, boolean link) {
|
||||
if (link) {
|
||||
if (typeElement == null) {
|
||||
return writer.getHyperLink(SectionName.ENUM_CONSTANT_SUMMARY,
|
||||
return Links.createLink(SectionName.ENUM_CONSTANT_SUMMARY,
|
||||
contents.navEnum);
|
||||
} else {
|
||||
return writer.getHyperLink(
|
||||
return links.createLink(
|
||||
SectionName.ENUM_CONSTANTS_INHERITANCE,
|
||||
configuration.getClassName(typeElement), contents.navEnum);
|
||||
}
|
||||
@ -300,7 +299,7 @@ public class EnumConstantWriterImpl extends AbstractMemberWriter
|
||||
@Override
|
||||
protected void addNavDetailLink(boolean link, Content liNav) {
|
||||
if (link) {
|
||||
liNav.addContent(writer.getHyperLink(
|
||||
liNav.addContent(Links.createLink(
|
||||
SectionName.ENUM_CONSTANT_DETAIL,
|
||||
contents.navEnum));
|
||||
} else {
|
||||
|
@ -39,6 +39,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
import jdk.javadoc.internal.doclets.toolkit.FieldWriter;
|
||||
@ -95,7 +96,7 @@ public class FieldWriterImpl extends AbstractMemberWriter
|
||||
public Content getFieldDetailsTreeHeader(TypeElement typeElement, Content memberDetailsTree) {
|
||||
memberDetailsTree.addContent(HtmlConstants.START_OF_FIELD_DETAILS);
|
||||
Content fieldDetailsTree = writer.getMemberTreeHeader();
|
||||
fieldDetailsTree.addContent(writer.getMarkerAnchor(
|
||||
fieldDetailsTree.addContent(links.createAnchor(
|
||||
SectionName.FIELD_DETAIL));
|
||||
Content heading = HtmlTree.HEADING(HtmlConstants.DETAILS_HEADING,
|
||||
contents.fieldDetailsLabel);
|
||||
@ -108,7 +109,7 @@ public class FieldWriterImpl extends AbstractMemberWriter
|
||||
*/
|
||||
@Override
|
||||
public Content getFieldDocTreeHeader(VariableElement field, Content fieldDetailsTree) {
|
||||
fieldDetailsTree.addContent(writer.getMarkerAnchor(name(field)));
|
||||
fieldDetailsTree.addContent(links.createAnchor(name(field)));
|
||||
Content fieldTree = writer.getMemberTreeHeader();
|
||||
Content heading = new HtmlTree(HtmlConstants.MEMBER_HEADING);
|
||||
heading.addContent(name(field));
|
||||
@ -226,7 +227,7 @@ public class FieldWriterImpl extends AbstractMemberWriter
|
||||
*/
|
||||
@Override
|
||||
public void addSummaryAnchor(TypeElement typeElement, Content memberTree) {
|
||||
memberTree.addContent(writer.getMarkerAnchor(
|
||||
memberTree.addContent(links.createAnchor(
|
||||
SectionName.FIELD_SUMMARY));
|
||||
}
|
||||
|
||||
@ -235,7 +236,7 @@ public class FieldWriterImpl extends AbstractMemberWriter
|
||||
*/
|
||||
@Override
|
||||
public void addInheritedSummaryAnchor(TypeElement typeElement, Content inheritedTree) {
|
||||
inheritedTree.addContent(writer.getMarkerAnchor(
|
||||
inheritedTree.addContent(links.createAnchor(
|
||||
SectionName.FIELDS_INHERITANCE, configuration.getClassName(typeElement)));
|
||||
}
|
||||
|
||||
@ -309,11 +310,11 @@ public class FieldWriterImpl extends AbstractMemberWriter
|
||||
protected Content getNavSummaryLink(TypeElement typeElement, boolean link) {
|
||||
if (link) {
|
||||
if (typeElement == null) {
|
||||
return writer.getHyperLink(
|
||||
return Links.createLink(
|
||||
SectionName.FIELD_SUMMARY,
|
||||
contents.navField);
|
||||
} else {
|
||||
return writer.getHyperLink(
|
||||
return links.createLink(
|
||||
SectionName.FIELDS_INHERITANCE,
|
||||
configuration.getClassName(typeElement), contents.navField);
|
||||
}
|
||||
@ -328,7 +329,7 @@ public class FieldWriterImpl extends AbstractMemberWriter
|
||||
@Override
|
||||
protected void addNavDetailLink(boolean link, Content liNav) {
|
||||
if (link) {
|
||||
liNav.addContent(writer.getHyperLink(
|
||||
liNav.addContent(Links.createLink(
|
||||
SectionName.FIELD_DETAIL,
|
||||
contents.navField));
|
||||
} else {
|
||||
|
@ -29,6 +29,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException;
|
||||
@ -132,7 +133,7 @@ public class HelpWriter extends HtmlDocletWriter {
|
||||
? HtmlTree.SECTION(overviewHeading)
|
||||
: HtmlTree.LI(HtmlStyle.blockList, overviewHeading);
|
||||
Content line3 = contents.getContent("doclet.Help_line_3",
|
||||
getHyperLink(DocPaths.overviewSummary(configuration.frames),
|
||||
Links.createLink(DocPaths.overviewSummary(configuration.frames),
|
||||
configuration.getText("doclet.Overview")));
|
||||
Content overviewPara = HtmlTree.P(line3);
|
||||
htmlTree.addContent(overviewPara);
|
||||
@ -282,7 +283,7 @@ public class HelpWriter extends HtmlDocletWriter {
|
||||
? HtmlTree.SECTION(treeHead)
|
||||
: HtmlTree.LI(HtmlStyle.blockList, treeHead);
|
||||
Content line17 = contents.getContent("doclet.Help_line_17_with_tree_link",
|
||||
getHyperLink(DocPaths.OVERVIEW_TREE,
|
||||
Links.createLink(DocPaths.OVERVIEW_TREE,
|
||||
configuration.getText("doclet.Class_Hierarchy")),
|
||||
HtmlTree.CODE(new StringContent("java.lang.Object")));
|
||||
Content treePara = HtmlTree.P(line17);
|
||||
@ -307,7 +308,7 @@ public class HelpWriter extends HtmlDocletWriter {
|
||||
? HtmlTree.SECTION(dHead)
|
||||
: HtmlTree.LI(HtmlStyle.blockList, dHead);
|
||||
Content line20 = contents.getContent("doclet.Help_line_20_with_deprecated_api_link",
|
||||
getHyperLink(DocPaths.DEPRECATED_LIST,
|
||||
Links.createLink(DocPaths.DEPRECATED_LIST,
|
||||
configuration.getText("doclet.Deprecated_API")));
|
||||
Content dPara = HtmlTree.P(line20);
|
||||
htmlTree.addContent(dPara);
|
||||
@ -320,10 +321,10 @@ public class HelpWriter extends HtmlDocletWriter {
|
||||
if (configuration.createindex) {
|
||||
Content indexlink;
|
||||
if (configuration.splitindex) {
|
||||
indexlink = getHyperLink(DocPaths.INDEX_FILES.resolve(DocPaths.indexN(1)),
|
||||
indexlink = Links.createLink(DocPaths.INDEX_FILES.resolve(DocPaths.indexN(1)),
|
||||
configuration.getText("doclet.Index"));
|
||||
} else {
|
||||
indexlink = getHyperLink(DocPaths.INDEX_ALL,
|
||||
indexlink = Links.createLink(DocPaths.INDEX_ALL,
|
||||
configuration.getText("doclet.Index"));
|
||||
}
|
||||
Content indexHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
|
||||
@ -377,7 +378,7 @@ public class HelpWriter extends HtmlDocletWriter {
|
||||
? HtmlTree.SECTION(allclassesHead)
|
||||
: HtmlTree.LI(HtmlStyle.blockList, allclassesHead);
|
||||
Content line27 = contents.getContent("doclet.Help_line_27",
|
||||
getHyperLink(DocPaths.AllClasses(configuration.frames),
|
||||
Links.createLink(DocPaths.AllClasses(configuration.frames),
|
||||
resources.getText("doclet.All_Classes")));
|
||||
Content allclassesPara = HtmlTree.P(line27);
|
||||
htmlTree.addContent(allclassesPara);
|
||||
@ -405,7 +406,7 @@ public class HelpWriter extends HtmlDocletWriter {
|
||||
? HtmlTree.SECTION(constHead)
|
||||
: HtmlTree.LI(HtmlStyle.blockList, constHead);
|
||||
Content line29 = contents.getContent("doclet.Help_line_29",
|
||||
getHyperLink(DocPaths.CONSTANT_VALUES,
|
||||
Links.createLink(DocPaths.CONSTANT_VALUES,
|
||||
resources.getText("doclet.Constants_Summary")));
|
||||
Content constPara = HtmlTree.P(line29);
|
||||
htmlTree.addContent(constPara);
|
||||
|
@ -44,6 +44,7 @@ import jdk.javadoc.doclet.DocletEnvironment;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlVersion;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.Links;
|
||||
import jdk.javadoc.internal.doclets.toolkit.BaseConfiguration;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
import jdk.javadoc.internal.doclets.toolkit.DocletException;
|
||||
@ -239,9 +240,11 @@ public class HtmlConfiguration extends BaseConfiguration {
|
||||
|
||||
protected Set<Character> tagSearchIndexKeys;
|
||||
|
||||
protected Contents contents;
|
||||
protected final Contents contents;
|
||||
|
||||
protected Messages messages;
|
||||
protected final Messages messages;
|
||||
|
||||
protected Links links;
|
||||
|
||||
/**
|
||||
* Creates an object to hold the configuration for a doclet.
|
||||
@ -353,6 +356,7 @@ public class HtmlConfiguration extends BaseConfiguration {
|
||||
setTopFile(docEnv);
|
||||
workArounds.initDocLint(doclintOpts.values(), tagletManager.getCustomTagNames(),
|
||||
Utils.toLowerCase(htmlVersion.name()));
|
||||
links = new Links(htmlVersion);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -77,6 +77,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlDocument;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.RawHtml;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.Script;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
@ -154,6 +155,8 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
|
||||
protected final Resources resources;
|
||||
|
||||
protected final Links links;
|
||||
|
||||
/**
|
||||
* To check whether annotation heading is printed or not.
|
||||
*/
|
||||
@ -196,6 +199,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
this.contents = configuration.contents;
|
||||
this.messages = configuration.messages;
|
||||
this.resources = configuration.resources;
|
||||
this.links = configuration.links;
|
||||
this.utils = configuration.utils;
|
||||
this.path = path;
|
||||
this.pathToRoot = path.parent().invert();
|
||||
@ -366,7 +370,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
*/
|
||||
public Content getTargetPackageLink(PackageElement pkg, String target,
|
||||
Content label) {
|
||||
return getHyperLink(pathString(pkg, DocPaths.PACKAGE_SUMMARY), label, "", target);
|
||||
return Links.createLink(pathString(pkg, DocPaths.PACKAGE_SUMMARY), label, "", target);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -380,7 +384,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
*/
|
||||
public Content getTargetModulePackageLink(PackageElement pkg, String target,
|
||||
Content label, ModuleElement mdle) {
|
||||
return getHyperLink(pathString(pkg, DocPaths.PACKAGE_SUMMARY),
|
||||
return Links.createLink(pathString(pkg, DocPaths.PACKAGE_SUMMARY),
|
||||
label, "", target);
|
||||
}
|
||||
|
||||
@ -393,7 +397,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
* @return a content for the target module link
|
||||
*/
|
||||
public Content getTargetModuleLink(String target, Content label, ModuleElement mdle) {
|
||||
return getHyperLink(pathToRoot.resolve(
|
||||
return Links.createLink(pathToRoot.resolve(
|
||||
DocPaths.moduleSummary(mdle)), label, "", target);
|
||||
}
|
||||
|
||||
@ -500,28 +504,28 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
fixedNavDiv.addContent(HtmlConstants.START_OF_TOP_NAVBAR);
|
||||
navDiv.setStyle(HtmlStyle.topNav);
|
||||
allClassesId += "navbar_top";
|
||||
Content a = getMarkerAnchor(SectionName.NAVBAR_TOP);
|
||||
Content a = links.createAnchor(SectionName.NAVBAR_TOP);
|
||||
//WCAG - Hyperlinks should contain text or an image with alt text - for AT tools
|
||||
navDiv.addContent(a);
|
||||
Content skipLinkContent = HtmlTree.DIV(HtmlStyle.skipNav, getHyperLink(
|
||||
getDocLink(SectionName.SKIP_NAVBAR_TOP), skipNavLinks,
|
||||
skipNavLinks.toString(), ""));
|
||||
Content skipLinkContent = HtmlTree.DIV(HtmlStyle.skipNav,
|
||||
Links.createLink(SectionName.SKIP_NAVBAR_TOP, skipNavLinks,
|
||||
skipNavLinks.toString(), ""));
|
||||
navDiv.addContent(skipLinkContent);
|
||||
} else {
|
||||
tree.addContent(HtmlConstants.START_OF_BOTTOM_NAVBAR);
|
||||
navDiv.setStyle(HtmlStyle.bottomNav);
|
||||
allClassesId += "navbar_bottom";
|
||||
Content a = getMarkerAnchor(SectionName.NAVBAR_BOTTOM);
|
||||
Content a = links.createAnchor(SectionName.NAVBAR_BOTTOM);
|
||||
navDiv.addContent(a);
|
||||
Content skipLinkContent = HtmlTree.DIV(HtmlStyle.skipNav, getHyperLink(
|
||||
getDocLink(SectionName.SKIP_NAVBAR_BOTTOM), skipNavLinks,
|
||||
skipNavLinks.toString(), ""));
|
||||
Content skipLinkContent = HtmlTree.DIV(HtmlStyle.skipNav,
|
||||
Links.createLink(SectionName.SKIP_NAVBAR_BOTTOM, skipNavLinks,
|
||||
skipNavLinks.toString(), ""));
|
||||
navDiv.addContent(skipLinkContent);
|
||||
}
|
||||
if (header) {
|
||||
navDiv.addContent(getMarkerAnchor(SectionName.NAVBAR_TOP_FIRSTROW));
|
||||
navDiv.addContent(links.createAnchor(SectionName.NAVBAR_TOP_FIRSTROW));
|
||||
} else {
|
||||
navDiv.addContent(getMarkerAnchor(SectionName.NAVBAR_BOTTOM_FIRSTROW));
|
||||
navDiv.addContent(links.createAnchor(SectionName.NAVBAR_BOTTOM_FIRSTROW));
|
||||
}
|
||||
HtmlTree navList = new HtmlTree(HtmlTag.UL);
|
||||
navList.setStyle(HtmlStyle.navList);
|
||||
@ -592,7 +596,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
subDiv.addContent(getAllClassesLinkScript(allClassesId));
|
||||
addSummaryDetailLinks(subDiv);
|
||||
if (header) {
|
||||
subDiv.addContent(getMarkerAnchor(SectionName.SKIP_NAVBAR_TOP));
|
||||
subDiv.addContent(links.createAnchor(SectionName.SKIP_NAVBAR_TOP));
|
||||
fixedNavDiv.addContent(subDiv);
|
||||
fixedNavDiv.addContent(HtmlConstants.END_OF_TOP_NAVBAR);
|
||||
tree.addContent(fixedNavDiv);
|
||||
@ -604,7 +608,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
+ "//-->\n");
|
||||
tree.addContent(script.asContent());
|
||||
} else {
|
||||
subDiv.addContent(getMarkerAnchor(SectionName.SKIP_NAVBAR_BOTTOM));
|
||||
subDiv.addContent(links.createAnchor(SectionName.SKIP_NAVBAR_BOTTOM));
|
||||
tree.addContent(subDiv);
|
||||
tree.addContent(HtmlConstants.END_OF_BOTTOM_NAVBAR);
|
||||
}
|
||||
@ -646,7 +650,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
protected Content getNavLinkContents() {
|
||||
Content linkContent = getHyperLink(pathToRoot.resolve(DocPaths.overviewSummary(configuration.frames)),
|
||||
Content linkContent = Links.createLink(pathToRoot.resolve(DocPaths.overviewSummary(configuration.frames)),
|
||||
contents.overviewLabel, "", "");
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
@ -715,7 +719,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
public Content getNavLinkPrevious(DocPath prev) {
|
||||
Content li;
|
||||
if (prev != null) {
|
||||
li = HtmlTree.LI(getHyperLink(prev, contents.prevLabel, "", ""));
|
||||
li = HtmlTree.LI(Links.createLink(prev, contents.prevLabel, "", ""));
|
||||
}
|
||||
else
|
||||
li = HtmlTree.LI(contents.prevLabel);
|
||||
@ -732,7 +736,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
public Content getNavLinkNext(DocPath next) {
|
||||
Content li;
|
||||
if (next != null) {
|
||||
li = HtmlTree.LI(getHyperLink(next, contents.nextLabel, "", ""));
|
||||
li = HtmlTree.LI(Links.createLink(next, contents.nextLabel, "", ""));
|
||||
}
|
||||
else
|
||||
li = HtmlTree.LI(contents.nextLabel);
|
||||
@ -747,7 +751,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
*/
|
||||
protected Content getNavShowLists(DocPath link) {
|
||||
DocLink dl = new DocLink(link, path.getPath(), null);
|
||||
Content framesContent = getHyperLink(dl, contents.framesLabel, "", "_top");
|
||||
Content framesContent = Links.createLink(dl, contents.framesLabel, "", "_top");
|
||||
Content li = HtmlTree.LI(framesContent);
|
||||
return li;
|
||||
}
|
||||
@ -768,7 +772,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
protected Content getNavHideLists(DocPath link) {
|
||||
Content noFramesContent = getHyperLink(link, contents.noFramesLabel, "", "_top");
|
||||
Content noFramesContent = Links.createLink(link, contents.noFramesLabel, "", "_top");
|
||||
Content li = HtmlTree.LI(noFramesContent);
|
||||
return li;
|
||||
}
|
||||
@ -786,7 +790,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
DocPath docPath = packages.size() == 1 && configuration.getSpecifiedTypeElements().isEmpty()
|
||||
? pathString(packages.get(0), DocPaths.PACKAGE_TREE)
|
||||
: pathToRoot.resolve(DocPaths.OVERVIEW_TREE);
|
||||
return HtmlTree.LI(getHyperLink(docPath, contents.treeLabel, "", ""));
|
||||
return HtmlTree.LI(Links.createLink(docPath, contents.treeLabel, "", ""));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -796,7 +800,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
protected Content getNavLinkMainTree(String label) {
|
||||
Content mainTreeContent = getHyperLink(pathToRoot.resolve(DocPaths.OVERVIEW_TREE),
|
||||
Content mainTreeContent = Links.createLink(pathToRoot.resolve(DocPaths.OVERVIEW_TREE),
|
||||
new StringContent(label));
|
||||
Content li = HtmlTree.LI(mainTreeContent);
|
||||
return li;
|
||||
@ -818,7 +822,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
protected Content getNavLinkDeprecated() {
|
||||
Content linkContent = getHyperLink(pathToRoot.resolve(DocPaths.DEPRECATED_LIST),
|
||||
Content linkContent = Links.createLink(pathToRoot.resolve(DocPaths.DEPRECATED_LIST),
|
||||
contents.deprecatedLabel, "", "");
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
@ -832,7 +836,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
protected Content getNavLinkClassIndex() {
|
||||
Content allClassesContent = getHyperLink(pathToRoot.resolve(
|
||||
Content allClassesContent = Links.createLink(pathToRoot.resolve(
|
||||
DocPaths.AllClasses(configuration.frames)),
|
||||
contents.allClassesLabel, "", "");
|
||||
Content li = HtmlTree.LI(allClassesContent);
|
||||
@ -845,7 +849,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
protected Content getNavLinkIndex() {
|
||||
Content linkContent = getHyperLink(pathToRoot.resolve(
|
||||
Content linkContent = Links.createLink(pathToRoot.resolve(
|
||||
(configuration.splitindex
|
||||
? DocPaths.INDEX_FILES.resolve(DocPaths.indexN(1))
|
||||
: DocPaths.INDEX_ALL)),
|
||||
@ -870,7 +874,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
DocFile file = DocFile.createFileForInput(configuration, helpfile);
|
||||
helpfilenm = DocPath.create(file.getName());
|
||||
}
|
||||
Content linkContent = getHyperLink(pathToRoot.resolve(helpfilenm),
|
||||
Content linkContent = Links.createLink(pathToRoot.resolve(helpfilenm),
|
||||
contents.helpLabel, "", "");
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
@ -902,51 +906,6 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
return caption;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the marker anchor which will be added to the documentation tree.
|
||||
*
|
||||
* @param anchorName the anchor name attribute
|
||||
* @return a content tree for the marker anchor
|
||||
*/
|
||||
public Content getMarkerAnchor(String anchorName) {
|
||||
return getMarkerAnchor(getName(anchorName), null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the marker anchor which will be added to the documentation tree.
|
||||
*
|
||||
* @param sectionName the section name anchor attribute for page
|
||||
* @return a content tree for the marker anchor
|
||||
*/
|
||||
public Content getMarkerAnchor(SectionName sectionName) {
|
||||
return getMarkerAnchor(sectionName.getName(), null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the marker anchor which will be added to the documentation tree.
|
||||
*
|
||||
* @param sectionName the section name anchor attribute for page
|
||||
* @param anchorName the anchor name combined with section name attribute for the page
|
||||
* @return a content tree for the marker anchor
|
||||
*/
|
||||
public Content getMarkerAnchor(SectionName sectionName, String anchorName) {
|
||||
return getMarkerAnchor(sectionName.getName() + getName(anchorName), null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the marker anchor which will be added to the documentation tree.
|
||||
*
|
||||
* @param anchorName the anchor name or id attribute
|
||||
* @param anchorContent the content that should be added to the anchor
|
||||
* @return a content tree for the marker anchor
|
||||
*/
|
||||
public Content getMarkerAnchor(String anchorName, Content anchorContent) {
|
||||
if (anchorContent == null)
|
||||
anchorContent = new Comment(" ");
|
||||
Content markerAnchor = HtmlTree.A(configuration.htmlVersion, anchorName, anchorContent);
|
||||
return markerAnchor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a packagename content.
|
||||
*
|
||||
@ -1039,12 +998,12 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
}
|
||||
}
|
||||
if (included || packageElement == null) {
|
||||
return getHyperLink(pathString(packageElement, DocPaths.PACKAGE_SUMMARY),
|
||||
return Links.createLink(pathString(packageElement, DocPaths.PACKAGE_SUMMARY),
|
||||
label);
|
||||
} else {
|
||||
DocLink crossPkgLink = getCrossPackageLink(utils.getPackageName(packageElement));
|
||||
if (crossPkgLink != null) {
|
||||
return getHyperLink(crossPkgLink, label);
|
||||
return Links.createLink(crossPkgLink, label);
|
||||
} else {
|
||||
return label;
|
||||
}
|
||||
@ -1061,7 +1020,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
public Content getModuleLink(ModuleElement mdle, Content label) {
|
||||
boolean included = utils.isIncluded(mdle);
|
||||
return (included)
|
||||
? getHyperLink(pathToRoot.resolve(DocPaths.moduleSummary(mdle)), label, "", "")
|
||||
? Links.createLink(pathToRoot.resolve(DocPaths.moduleSummary(mdle)), label, "", "")
|
||||
: label;
|
||||
}
|
||||
|
||||
@ -1091,7 +1050,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
DocPath href = pathToRoot
|
||||
.resolve(DocPaths.SOURCE_OUTPUT)
|
||||
.resolve(DocPath.forClass(utils, te));
|
||||
Content linkContent = getHyperLink(href
|
||||
Content linkContent = Links.createLink(href
|
||||
.fragment(SourceToHTMLConverter.getAnchorName(utils, typeElement)), label, "", "");
|
||||
htmltree.addContent(linkContent);
|
||||
}
|
||||
@ -1156,7 +1115,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
*/
|
||||
DocLink link = configuration.extern.getExternalLink(packageName, pathToRoot,
|
||||
className + ".html", refMemName);
|
||||
return getHyperLink(link,
|
||||
return Links.createLink(link,
|
||||
(label == null) || label.isEmpty() ? defaultLabel : label,
|
||||
strong, style,
|
||||
configuration.getText("doclet.Href_Class_Or_Interface_Title", packageName),
|
||||
@ -1340,12 +1299,12 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
ExecutableElement ee = (ExecutableElement)element;
|
||||
return getLink(new LinkInfoImpl(configuration, context, typeElement)
|
||||
.label(label)
|
||||
.where(getName(getAnchor(ee, isProperty)))
|
||||
.where(links.getName(getAnchor(ee, isProperty)))
|
||||
.strong(strong));
|
||||
} else if (utils.isVariableElement(element) || utils.isTypeElement(element)) {
|
||||
return getLink(new LinkInfoImpl(configuration, context, typeElement)
|
||||
.label(label)
|
||||
.where(getName(element.getSimpleName().toString()))
|
||||
.where(links.getName(element.getSimpleName().toString()))
|
||||
.strong(strong));
|
||||
} else {
|
||||
return label;
|
||||
@ -1371,10 +1330,10 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
ExecutableElement emd = (ExecutableElement) element;
|
||||
return getLink(new LinkInfoImpl(configuration, context, typeElement)
|
||||
.label(label)
|
||||
.where(getName(getAnchor(emd))));
|
||||
.where(links.getName(getAnchor(emd))));
|
||||
} else if (utils.isVariableElement(element) || utils.isTypeElement(element)) {
|
||||
return getLink(new LinkInfoImpl(configuration, context, typeElement)
|
||||
.label(label).where(getName(element.getSimpleName().toString())));
|
||||
.label(label).where(links.getName(element.getSimpleName().toString())));
|
||||
} else {
|
||||
return label;
|
||||
}
|
||||
@ -1445,7 +1404,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
DocLink packageCrossLink = getCrossPackageLink(refClassName);
|
||||
if (packageCrossLink != null) {
|
||||
// Package cross link found
|
||||
return getHyperLink(packageCrossLink,
|
||||
return Links.createLink(packageCrossLink,
|
||||
(label.isEmpty() ? text : label));
|
||||
} else if ((classCrossLink = getCrossClassLink(refClassName,
|
||||
refMemName, label, false, "", !isLinkPlain)) != null) {
|
||||
|
@ -33,6 +33,7 @@ import javax.lang.model.element.TypeElement;
|
||||
import javax.lang.model.type.TypeMirror;
|
||||
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.Links;
|
||||
import jdk.javadoc.internal.doclets.toolkit.BaseConfiguration;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
import jdk.javadoc.internal.doclets.toolkit.util.DocPath;
|
||||
@ -92,11 +93,13 @@ public class LinkFactoryImpl extends LinkFactory {
|
||||
DocPath filename = getPath(classLinkInfo);
|
||||
if (linkInfo.linkToSelf ||
|
||||
!(DocPath.forName(utils, typeElement)).equals(m_writer.filename)) {
|
||||
link.addContent(m_writer.getHyperLink(
|
||||
link.addContent(Links.createLink(
|
||||
filename.fragment(classLinkInfo.where),
|
||||
label,
|
||||
classLinkInfo.isStrong, classLinkInfo.styleName,
|
||||
title, classLinkInfo.target));
|
||||
label,
|
||||
classLinkInfo.isStrong,
|
||||
classLinkInfo.styleName,
|
||||
title,
|
||||
classLinkInfo.target));
|
||||
if (noLabel && !classLinkInfo.excludeTypeParameterLinks) {
|
||||
link.addContent(getTypeParameterLinks(linkInfo));
|
||||
}
|
||||
|
@ -40,6 +40,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
import jdk.javadoc.internal.doclets.toolkit.MemberSummaryWriter;
|
||||
@ -108,8 +109,7 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
|
||||
public Content getMethodDetailsTreeHeader(TypeElement typeElement, Content memberDetailsTree) {
|
||||
memberDetailsTree.addContent(HtmlConstants.START_OF_METHOD_DETAILS);
|
||||
Content methodDetailsTree = writer.getMemberTreeHeader();
|
||||
methodDetailsTree.addContent(writer.getMarkerAnchor(
|
||||
SectionName.METHOD_DETAIL));
|
||||
methodDetailsTree.addContent(links.createAnchor(SectionName.METHOD_DETAIL));
|
||||
Content heading = HtmlTree.HEADING(HtmlConstants.DETAILS_HEADING,
|
||||
contents.methodDetailLabel);
|
||||
methodDetailsTree.addContent(heading);
|
||||
@ -123,10 +123,9 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
|
||||
public Content getMethodDocTreeHeader(ExecutableElement method, Content methodDetailsTree) {
|
||||
String erasureAnchor;
|
||||
if ((erasureAnchor = getErasureAnchor(method)) != null) {
|
||||
methodDetailsTree.addContent(writer.getMarkerAnchor((erasureAnchor)));
|
||||
methodDetailsTree.addContent(links.createAnchor((erasureAnchor)));
|
||||
}
|
||||
methodDetailsTree.addContent(
|
||||
writer.getMarkerAnchor(writer.getAnchor(method)));
|
||||
methodDetailsTree.addContent(links.createAnchor(writer.getAnchor(method)));
|
||||
Content methodDocTree = writer.getMemberTreeHeader();
|
||||
Content heading = new HtmlTree(HtmlConstants.MEMBER_HEADING);
|
||||
heading.addContent(name(method));
|
||||
@ -280,8 +279,7 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
|
||||
*/
|
||||
@Override
|
||||
public void addSummaryAnchor(TypeElement typeElement, Content memberTree) {
|
||||
memberTree.addContent(writer.getMarkerAnchor(
|
||||
SectionName.METHOD_SUMMARY));
|
||||
memberTree.addContent(links.createAnchor(SectionName.METHOD_SUMMARY));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -289,7 +287,7 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
|
||||
*/
|
||||
@Override
|
||||
public void addInheritedSummaryAnchor(TypeElement typeElement, Content inheritedTree) {
|
||||
inheritedTree.addContent(writer.getMarkerAnchor(
|
||||
inheritedTree.addContent(links.createAnchor(
|
||||
SectionName.METHODS_INHERITANCE, configuration.getClassName(typeElement)));
|
||||
}
|
||||
|
||||
@ -365,7 +363,7 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
|
||||
Content methlink = writer.getLink(
|
||||
new LinkInfoImpl(writer.configuration, LinkInfoImpl.Kind.MEMBER,
|
||||
holder)
|
||||
.where(writer.getName(writer.getAnchor(method))).label(method.getSimpleName()));
|
||||
.where(writer.links.getName(writer.getAnchor(method))).label(method.getSimpleName()));
|
||||
Content codeMethLink = HtmlTree.CODE(methlink);
|
||||
Content dd = HtmlTree.DD(codeMethLink);
|
||||
dd.addContent(Contents.SPACE);
|
||||
@ -435,11 +433,11 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
|
||||
protected Content getNavSummaryLink(TypeElement typeElement, boolean link) {
|
||||
if (link) {
|
||||
if (typeElement == null) {
|
||||
return writer.getHyperLink(
|
||||
return Links.createLink(
|
||||
SectionName.METHOD_SUMMARY,
|
||||
contents.navMethod);
|
||||
} else {
|
||||
return writer.getHyperLink(
|
||||
return links.createLink(
|
||||
SectionName.METHODS_INHERITANCE,
|
||||
configuration.getClassName(typeElement), contents.navMethod);
|
||||
}
|
||||
@ -454,7 +452,7 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
|
||||
@Override
|
||||
protected void addNavDetailLink(boolean link, Content liNav) {
|
||||
if (link) {
|
||||
liNav.addContent(writer.getHyperLink(
|
||||
liNav.addContent(Links.createLink(
|
||||
SectionName.METHOD_DETAIL, contents.navMethod));
|
||||
} else {
|
||||
liNav.addContent(contents.navMethod);
|
||||
|
@ -36,6 +36,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException;
|
||||
@ -100,7 +101,7 @@ public class ModuleFrameWriter extends HtmlDocletWriter {
|
||||
? HtmlTree.MAIN()
|
||||
: body;
|
||||
Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, HtmlStyle.bar,
|
||||
mdlgen.getHyperLink(DocPaths.moduleSummary(moduleElement), mdlLabel, "", "classFrame"));
|
||||
Links.createLink(DocPaths.moduleSummary(moduleElement), mdlLabel, "", "classFrame"));
|
||||
htmlTree.addContent(heading);
|
||||
HtmlTree div = new HtmlTree(HtmlTag.DIV);
|
||||
div.setStyle(HtmlStyle.indexContainer);
|
||||
|
@ -35,6 +35,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.RawHtml;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
@ -138,7 +139,7 @@ public class ModuleIndexFrameWriter extends AbstractModuleIndexWriter {
|
||||
* @param ul the Content object to which the all classes link should be added
|
||||
*/
|
||||
protected void addAllClassesLink(Content ul) {
|
||||
Content linkContent = getHyperLink(DocPaths.ALLCLASSES_FRAME,
|
||||
Content linkContent = Links.createLink(DocPaths.ALLCLASSES_FRAME,
|
||||
contents.allClassesLabel, "", "packageFrame");
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
ul.addContent(li);
|
||||
@ -151,7 +152,7 @@ public class ModuleIndexFrameWriter extends AbstractModuleIndexWriter {
|
||||
* @param ul the Content object to which the all packages link should be added
|
||||
*/
|
||||
protected void addAllPackagesLink(Content ul) {
|
||||
Content linkContent = getHyperLink(DocPaths.OVERVIEW_FRAME,
|
||||
Content linkContent = Links.createLink(DocPaths.OVERVIEW_FRAME,
|
||||
contents.allPackagesLabel, "", "packageListFrame");
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
ul.addContent(li);
|
||||
|
@ -37,6 +37,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.RawHtml;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
@ -142,12 +143,12 @@ public class ModulePackageIndexFrameWriter extends AbstractModuleIndexWriter {
|
||||
Content pkgLabel;
|
||||
if (!pkg.isUnnamed()) {
|
||||
pkgLabel = getPackageLabel(utils.getPackageName(pkg));
|
||||
packageLinkContent = getHyperLink(pathString(pkg,
|
||||
packageLinkContent = Links.createLink(pathString(pkg,
|
||||
DocPaths.PACKAGE_FRAME), pkgLabel, "",
|
||||
"packageFrame");
|
||||
} else {
|
||||
pkgLabel = new StringContent("<unnamed package>");
|
||||
packageLinkContent = getHyperLink(DocPaths.PACKAGE_FRAME,
|
||||
packageLinkContent = Links.createLink(DocPaths.PACKAGE_FRAME,
|
||||
pkgLabel, "", "packageFrame");
|
||||
}
|
||||
Content li = HtmlTree.LI(packageLinkContent);
|
||||
@ -188,7 +189,7 @@ public class ModulePackageIndexFrameWriter extends AbstractModuleIndexWriter {
|
||||
* @param ul the Content object to which the all classes link should be added
|
||||
*/
|
||||
protected void addAllClassesLink(Content ul) {
|
||||
Content linkContent = getHyperLink(DocPaths.ALLCLASSES_FRAME,
|
||||
Content linkContent = Links.createLink(DocPaths.ALLCLASSES_FRAME,
|
||||
contents.allClassesLabel, "", "packageFrame");
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
ul.addContent(li);
|
||||
@ -201,7 +202,7 @@ public class ModulePackageIndexFrameWriter extends AbstractModuleIndexWriter {
|
||||
* @param ul the Content object to which the all packages link should be added
|
||||
*/
|
||||
protected void addAllPackagesLink(Content ul) {
|
||||
Content linkContent = getHyperLink(DocPaths.OVERVIEW_FRAME,
|
||||
Content linkContent = Links.createLink(DocPaths.OVERVIEW_FRAME,
|
||||
contents.allPackagesLabel, "", "packageListFrame");
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
ul.addContent(li);
|
||||
@ -214,7 +215,7 @@ public class ModulePackageIndexFrameWriter extends AbstractModuleIndexWriter {
|
||||
* @param ul the Content object to which the all modules link should be added
|
||||
*/
|
||||
protected void addAllModulesLink(Content ul) {
|
||||
Content linkContent = getHyperLink(DocPaths.MODULE_OVERVIEW_FRAME,
|
||||
Content linkContent = Links.createLink(DocPaths.MODULE_OVERVIEW_FRAME,
|
||||
contents.allModulesLabel, "", "packageListFrame");
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
ul.addContent(li);
|
||||
|
@ -50,6 +50,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.RawHtml;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
@ -455,7 +456,7 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
|
||||
public void addSummaryHeader(Content startMarker, SectionName markerAnchor, Content heading,
|
||||
Content htmltree) {
|
||||
htmltree.addContent(startMarker);
|
||||
htmltree.addContent(getMarkerAnchor(markerAnchor));
|
||||
htmltree.addContent(links.createAnchor(markerAnchor));
|
||||
htmltree.addContent(HtmlTree.HEADING(HtmlTag.H3, heading));
|
||||
}
|
||||
|
||||
@ -846,7 +847,7 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
|
||||
Content tree = configuration.allowTag(HtmlTag.SECTION) ? HtmlTree.SECTION() : moduleContentTree;
|
||||
addDeprecationInfo(tree);
|
||||
tree.addContent(HtmlConstants.START_OF_MODULE_DESCRIPTION);
|
||||
tree.addContent(getMarkerAnchor(SectionName.MODULE_DESCRIPTION));
|
||||
tree.addContent(links.createAnchor(SectionName.MODULE_DESCRIPTION));
|
||||
addInlineComment(mdle, tree);
|
||||
if (configuration.allowTag(HtmlTag.SECTION)) {
|
||||
moduleContentTree.addContent(tree);
|
||||
@ -890,20 +891,20 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
|
||||
Content ulNav = HtmlTree.UL(HtmlStyle.subNavList, li);
|
||||
Content liNav = new HtmlTree(HtmlTag.LI);
|
||||
liNav.addContent(!utils.getFullBody(mdle).isEmpty() && !configuration.nocomment
|
||||
? getHyperLink(SectionName.MODULE_DESCRIPTION, contents.navModuleDescription)
|
||||
? Links.createLink(SectionName.MODULE_DESCRIPTION, contents.navModuleDescription)
|
||||
: contents.navModuleDescription);
|
||||
addNavGap(liNav);
|
||||
liNav.addContent((display(requires) || display(indirectModules))
|
||||
? getHyperLink(SectionName.MODULES, contents.navModules)
|
||||
? Links.createLink(SectionName.MODULES, contents.navModules)
|
||||
: contents.navModules);
|
||||
addNavGap(liNav);
|
||||
liNav.addContent((display(exportedPackages) || display(openedPackages) || display(concealedPackages)
|
||||
|| display(indirectPackages) || display(indirectOpenPackages))
|
||||
? getHyperLink(SectionName.PACKAGES, contents.navPackages)
|
||||
? Links.createLink(SectionName.PACKAGES, contents.navPackages)
|
||||
: contents.navPackages);
|
||||
addNavGap(liNav);
|
||||
liNav.addContent((displayServices(uses, usesTrees) || displayServices(provides.keySet(), providesTrees))
|
||||
? getHyperLink(SectionName.SERVICES, contents.navServices)
|
||||
? Links.createLink(SectionName.SERVICES, contents.navServices)
|
||||
: contents.navServices);
|
||||
ulNav.addContent(liNav);
|
||||
return ulNav;
|
||||
@ -995,7 +996,7 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
|
||||
if (prevModule == null) {
|
||||
li = HtmlTree.LI(contents.prevModuleLabel);
|
||||
} else {
|
||||
li = HtmlTree.LI(getHyperLink(pathToRoot.resolve(DocPaths.moduleSummary(
|
||||
li = HtmlTree.LI(Links.createLink(pathToRoot.resolve(DocPaths.moduleSummary(
|
||||
prevModule)), contents.prevModuleLabel, "", ""));
|
||||
}
|
||||
return li;
|
||||
@ -1012,7 +1013,7 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
|
||||
if (nextModule == null) {
|
||||
li = HtmlTree.LI(contents.nextModuleLabel);
|
||||
} else {
|
||||
li = HtmlTree.LI(getHyperLink(pathToRoot.resolve(DocPaths.moduleSummary(
|
||||
li = HtmlTree.LI(Links.createLink(pathToRoot.resolve(DocPaths.moduleSummary(
|
||||
nextModule)), contents.nextModuleLabel, "", ""));
|
||||
}
|
||||
return li;
|
||||
|
@ -37,6 +37,7 @@ import javax.lang.model.element.TypeElement;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
import jdk.javadoc.internal.doclets.toolkit.MemberSummaryWriter;
|
||||
@ -129,7 +130,7 @@ public class NestedClassWriterImpl extends AbstractMemberWriter
|
||||
*/
|
||||
@Override
|
||||
public void addSummaryAnchor(TypeElement typeElement, Content memberTree) {
|
||||
memberTree.addContent(writer.getMarkerAnchor(
|
||||
memberTree.addContent(links.createAnchor(
|
||||
SectionName.NESTED_CLASS_SUMMARY));
|
||||
}
|
||||
|
||||
@ -138,7 +139,7 @@ public class NestedClassWriterImpl extends AbstractMemberWriter
|
||||
*/
|
||||
@Override
|
||||
public void addInheritedSummaryAnchor(TypeElement typeElement, Content inheritedTree) {
|
||||
inheritedTree.addContent(writer.getMarkerAnchor(
|
||||
inheritedTree.addContent(links.createAnchor(
|
||||
SectionName.NESTED_CLASSES_INHERITANCE,
|
||||
utils.getFullyQualifiedName(typeElement)));
|
||||
}
|
||||
@ -212,11 +213,11 @@ public class NestedClassWriterImpl extends AbstractMemberWriter
|
||||
protected Content getNavSummaryLink(TypeElement typeElement, boolean link) {
|
||||
if (link) {
|
||||
if (typeElement == null) {
|
||||
return writer.getHyperLink(
|
||||
return Links.createLink(
|
||||
SectionName.NESTED_CLASS_SUMMARY,
|
||||
contents.navNested);
|
||||
} else {
|
||||
return writer.getHyperLink(
|
||||
return links.createLink(
|
||||
SectionName.NESTED_CLASSES_INHERITANCE,
|
||||
utils.getFullyQualifiedName(typeElement), contents.navNested);
|
||||
}
|
||||
|
@ -33,6 +33,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.RawHtml;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
@ -109,11 +110,11 @@ public class PackageIndexFrameWriter extends AbstractPackageIndexWriter {
|
||||
Content packageLabel;
|
||||
if (pe.isUnnamed()) {
|
||||
packageLabel = new StringContent("<unnamed package>");
|
||||
packageLinkContent = getHyperLink(DocPaths.PACKAGE_FRAME,
|
||||
packageLinkContent = Links.createLink(DocPaths.PACKAGE_FRAME,
|
||||
packageLabel, "", "packageFrame");
|
||||
} else {
|
||||
packageLabel = getPackageLabel(pe.getQualifiedName());
|
||||
packageLinkContent = getHyperLink(pathString(pe,
|
||||
packageLinkContent = Links.createLink(pathString(pe,
|
||||
DocPaths.PACKAGE_FRAME), packageLabel, "",
|
||||
"packageFrame");
|
||||
}
|
||||
@ -152,7 +153,7 @@ public class PackageIndexFrameWriter extends AbstractPackageIndexWriter {
|
||||
*/
|
||||
@Override
|
||||
protected void addAllClassesLink(Content ul) {
|
||||
Content linkContent = getHyperLink(DocPaths.ALLCLASSES_FRAME,
|
||||
Content linkContent = Links.createLink(DocPaths.ALLCLASSES_FRAME,
|
||||
contents.allClassesLabel, "", "packageFrame");
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
ul.addContent(li);
|
||||
@ -166,7 +167,7 @@ public class PackageIndexFrameWriter extends AbstractPackageIndexWriter {
|
||||
*/
|
||||
@Override
|
||||
protected void addAllModulesLink(Content ul) {
|
||||
Content linkContent = getHyperLink(DocPaths.MODULE_OVERVIEW_FRAME,
|
||||
Content linkContent = Links.createLink(DocPaths.MODULE_OVERVIEW_FRAME,
|
||||
contents.allModulesLabel, "", "packageListFrame");
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
ul.addContent(li);
|
||||
|
@ -31,6 +31,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
import jdk.javadoc.internal.doclets.toolkit.util.ClassTree;
|
||||
import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException;
|
||||
@ -231,7 +232,7 @@ public class PackageTreeWriter extends AbstractTreeWriter {
|
||||
*/
|
||||
@Override
|
||||
protected Content getNavLinkPackage() {
|
||||
Content linkContent = getHyperLink(DocPaths.PACKAGE_SUMMARY,
|
||||
Content linkContent = Links.createLink(DocPaths.PACKAGE_SUMMARY,
|
||||
contents.packageLabel);
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
|
@ -38,6 +38,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
import jdk.javadoc.internal.doclets.toolkit.util.ClassUseMapper;
|
||||
@ -178,7 +179,7 @@ public class PackageUseWriter extends SubWriterHolderWriter {
|
||||
.setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast);
|
||||
for (String pkgname: usingPackageToUsedClasses.keySet()) {
|
||||
PackageElement pkg = utils.elementUtils.getPackageElement(pkgname);
|
||||
Content packageLink = getHyperLink(utils.getPackageName(pkg),
|
||||
Content packageLink = links.createLink(utils.getPackageName(pkg),
|
||||
new StringContent(utils.getPackageName(pkg)));
|
||||
Content summary = new ContentBuilder();
|
||||
if (pkg != null && !pkg.isUnnamed()) {
|
||||
@ -205,7 +206,7 @@ public class PackageUseWriter extends SubWriterHolderWriter {
|
||||
HtmlTree li = new HtmlTree(HtmlTag.LI);
|
||||
li.setStyle(HtmlStyle.blockList);
|
||||
if (usingPackage != null) {
|
||||
li.addContent(getMarkerAnchor(utils.getPackageName(usingPackage)));
|
||||
li.addContent(links.createAnchor(utils.getPackageName(usingPackage)));
|
||||
}
|
||||
String tableSummary = resources.getText("doclet.Use_Table_Summary",
|
||||
resources.getText("doclet.classes"));
|
||||
@ -222,7 +223,7 @@ public class PackageUseWriter extends SubWriterHolderWriter {
|
||||
DocPath dp = pathString(te,
|
||||
DocPaths.CLASS_USE.resolve(DocPath.forName(utils, te)));
|
||||
Content stringContent = new StringContent(utils.getSimpleName(te));
|
||||
Content typeContent = getHyperLink(dp.fragment(getPackageAnchorName(usingPackage)),
|
||||
Content typeContent = Links.createLink(dp.fragment(getPackageAnchorName(usingPackage)),
|
||||
stringContent);
|
||||
Content summary = new ContentBuilder();
|
||||
addIndexComment(te, summary);
|
||||
@ -287,7 +288,7 @@ public class PackageUseWriter extends SubWriterHolderWriter {
|
||||
*/
|
||||
@Override
|
||||
protected Content getNavLinkPackage() {
|
||||
Content linkContent = getHyperLink(DocPaths.PACKAGE_SUMMARY,
|
||||
Content linkContent = Links.createLink(DocPaths.PACKAGE_SUMMARY,
|
||||
contents.packageLabel);
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
@ -311,7 +312,7 @@ public class PackageUseWriter extends SubWriterHolderWriter {
|
||||
*/
|
||||
@Override
|
||||
protected Content getNavLinkTree() {
|
||||
Content linkContent = getHyperLink(DocPaths.PACKAGE_TREE,
|
||||
Content linkContent = Links.createLink(DocPaths.PACKAGE_TREE,
|
||||
contents.treeLabel);
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
|
@ -40,6 +40,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
import jdk.javadoc.internal.doclets.toolkit.PackageSummaryWriter;
|
||||
@ -320,7 +321,7 @@ public class PackageWriterImpl extends HtmlDocletWriter
|
||||
public void addPackageDescription(Content packageContentTree) {
|
||||
if (!utils.getBody(packageElement).isEmpty()) {
|
||||
Content tree = configuration.allowTag(HtmlTag.SECTION) ? sectionTree : packageContentTree;
|
||||
tree.addContent(getMarkerAnchor(SectionName.PACKAGE_DESCRIPTION));
|
||||
tree.addContent(links.createAnchor(SectionName.PACKAGE_DESCRIPTION));
|
||||
addDeprecationInfo(tree);
|
||||
addInlineComment(packageElement, tree);
|
||||
}
|
||||
@ -384,7 +385,7 @@ public class PackageWriterImpl extends HtmlDocletWriter
|
||||
*/
|
||||
@Override
|
||||
protected Content getNavLinkClassUse() {
|
||||
Content useLink = getHyperLink(DocPaths.PACKAGE_USE,
|
||||
Content useLink = Links.createLink(DocPaths.PACKAGE_USE,
|
||||
contents.useLabel, "", "");
|
||||
Content li = HtmlTree.LI(useLink);
|
||||
return li;
|
||||
@ -402,7 +403,7 @@ public class PackageWriterImpl extends HtmlDocletWriter
|
||||
li = HtmlTree.LI(contents.prevPackageLabel);
|
||||
} else {
|
||||
DocPath p = DocPath.relativePath(packageElement, prev);
|
||||
li = HtmlTree.LI(getHyperLink(p.resolve(DocPaths.PACKAGE_SUMMARY),
|
||||
li = HtmlTree.LI(Links.createLink(p.resolve(DocPaths.PACKAGE_SUMMARY),
|
||||
contents.prevPackageLabel, "", ""));
|
||||
}
|
||||
return li;
|
||||
@ -420,7 +421,7 @@ public class PackageWriterImpl extends HtmlDocletWriter
|
||||
li = HtmlTree.LI(contents.nextPackageLabel);
|
||||
} else {
|
||||
DocPath p = DocPath.relativePath(packageElement, next);
|
||||
li = HtmlTree.LI(getHyperLink(p.resolve(DocPaths.PACKAGE_SUMMARY),
|
||||
li = HtmlTree.LI(Links.createLink(p.resolve(DocPaths.PACKAGE_SUMMARY),
|
||||
contents.nextPackageLabel, "", ""));
|
||||
}
|
||||
return li;
|
||||
@ -434,7 +435,7 @@ public class PackageWriterImpl extends HtmlDocletWriter
|
||||
*/
|
||||
@Override
|
||||
protected Content getNavLinkTree() {
|
||||
Content useLink = getHyperLink(DocPaths.PACKAGE_TREE,
|
||||
Content useLink = Links.createLink(DocPaths.PACKAGE_TREE,
|
||||
contents.treeLabel, "", "");
|
||||
Content li = HtmlTree.LI(useLink);
|
||||
return li;
|
||||
|
@ -37,6 +37,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
import jdk.javadoc.internal.doclets.toolkit.MemberSummaryWriter;
|
||||
@ -90,8 +91,7 @@ public class PropertyWriterImpl extends AbstractMemberWriter
|
||||
Content memberDetailsTree) {
|
||||
memberDetailsTree.addContent(HtmlConstants.START_OF_PROPERTY_DETAILS);
|
||||
Content propertyDetailsTree = writer.getMemberTreeHeader();
|
||||
propertyDetailsTree.addContent(writer.getMarkerAnchor(
|
||||
SectionName.PROPERTY_DETAIL));
|
||||
propertyDetailsTree.addContent(links.createAnchor(SectionName.PROPERTY_DETAIL));
|
||||
Content heading = HtmlTree.HEADING(HtmlConstants.DETAILS_HEADING,
|
||||
contents.propertyDetailsLabel);
|
||||
propertyDetailsTree.addContent(heading);
|
||||
@ -104,8 +104,7 @@ public class PropertyWriterImpl extends AbstractMemberWriter
|
||||
@Override
|
||||
public Content getPropertyDocTreeHeader(ExecutableElement property,
|
||||
Content propertyDetailsTree) {
|
||||
propertyDetailsTree.addContent(
|
||||
writer.getMarkerAnchor(name(property)));
|
||||
propertyDetailsTree.addContent(links.createAnchor(name(property)));
|
||||
Content propertyDocTree = writer.getMemberTreeHeader();
|
||||
Content heading = new HtmlTree(HtmlConstants.MEMBER_HEADING);
|
||||
heading.addContent(utils.getPropertyLabel(name(property)));
|
||||
@ -243,8 +242,7 @@ public class PropertyWriterImpl extends AbstractMemberWriter
|
||||
*/
|
||||
@Override
|
||||
public void addSummaryAnchor(TypeElement typeElement, Content memberTree) {
|
||||
memberTree.addContent(writer.getMarkerAnchor(
|
||||
SectionName.PROPERTY_SUMMARY));
|
||||
memberTree.addContent(links.createAnchor(SectionName.PROPERTY_SUMMARY));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -252,7 +250,7 @@ public class PropertyWriterImpl extends AbstractMemberWriter
|
||||
*/
|
||||
@Override
|
||||
public void addInheritedSummaryAnchor(TypeElement typeElement, Content inheritedTree) {
|
||||
inheritedTree.addContent(writer.getMarkerAnchor(
|
||||
inheritedTree.addContent(links.createAnchor(
|
||||
SectionName.PROPERTIES_INHERITANCE,
|
||||
configuration.getClassName(typeElement)));
|
||||
}
|
||||
@ -334,13 +332,13 @@ public class PropertyWriterImpl extends AbstractMemberWriter
|
||||
protected Content getNavSummaryLink(TypeElement typeElement, boolean link) {
|
||||
if (link) {
|
||||
if (typeElement == null) {
|
||||
return writer.getHyperLink(
|
||||
SectionName.PROPERTY_SUMMARY,
|
||||
contents.navProperty);
|
||||
return Links.createLink(
|
||||
SectionName.PROPERTY_SUMMARY,
|
||||
contents.navProperty);
|
||||
} else {
|
||||
return writer.getHyperLink(
|
||||
SectionName.PROPERTIES_INHERITANCE,
|
||||
configuration.getClassName(typeElement), contents.navProperty);
|
||||
return links.createLink(
|
||||
SectionName.PROPERTIES_INHERITANCE,
|
||||
configuration.getClassName(typeElement), contents.navProperty);
|
||||
}
|
||||
} else {
|
||||
return contents.navProperty;
|
||||
@ -353,7 +351,7 @@ public class PropertyWriterImpl extends AbstractMemberWriter
|
||||
@Override
|
||||
protected void addNavDetailLink(boolean link, Content liNav) {
|
||||
if (link) {
|
||||
liNav.addContent(writer.getHyperLink(
|
||||
liNav.addContent(Links.createLink(
|
||||
SectionName.PROPERTY_DETAIL,
|
||||
contents.navProperty));
|
||||
} else {
|
||||
|
@ -168,7 +168,7 @@ public class SerializedFormWriterImpl extends SubWriterHolderWriter
|
||||
? getLink(new LinkInfoImpl(configuration, LinkInfoImpl.Kind.DEFAULT, typeElement)
|
||||
.label(configuration.getClassName(typeElement)))
|
||||
: new StringContent(utils.getFullyQualifiedName(typeElement));
|
||||
Content li = HtmlTree.LI(HtmlStyle.blockList, getMarkerAnchor(
|
||||
Content li = HtmlTree.LI(HtmlStyle.blockList, links.createAnchor(
|
||||
utils.getFullyQualifiedName(typeElement)));
|
||||
Content superClassLink = typeElement.getSuperclass() != null
|
||||
? getLink(new LinkInfoImpl(configuration, LinkInfoImpl.Kind.SERIALIZED_FORM,
|
||||
|
@ -141,7 +141,7 @@ public class SingleIndexWriter extends AbstractIndexWriter {
|
||||
for (Object ch : elements) {
|
||||
String unicode = ch.toString();
|
||||
contentTree.addContent(
|
||||
getHyperLink(getNameForIndex(unicode),
|
||||
links.createLink(getNameForIndex(unicode),
|
||||
new StringContent(unicode)));
|
||||
contentTree.addContent(Contents.SPACE);
|
||||
}
|
||||
|
@ -35,6 +35,7 @@ import java.util.TreeSet;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException;
|
||||
@ -176,7 +177,7 @@ public class SplitIndexWriter extends AbstractIndexWriter {
|
||||
protected void addLinksForIndexes(Content contentTree) {
|
||||
for (int i = 0; i < indexElements.size(); i++) {
|
||||
int j = i + 1;
|
||||
contentTree.addContent(getHyperLink(DocPaths.indexN(j),
|
||||
contentTree.addContent(Links.createLink(DocPaths.indexN(j),
|
||||
new StringContent(indexElements.get(i).toString())));
|
||||
contentTree.addContent(Contents.SPACE);
|
||||
}
|
||||
@ -194,7 +195,7 @@ public class SplitIndexWriter extends AbstractIndexWriter {
|
||||
return HtmlTree.LI(prevletterLabel);
|
||||
}
|
||||
else {
|
||||
Content prevLink = getHyperLink(DocPaths.indexN(prev),
|
||||
Content prevLink = Links.createLink(DocPaths.indexN(prev),
|
||||
prevletterLabel);
|
||||
return HtmlTree.LI(prevLink);
|
||||
}
|
||||
@ -212,7 +213,7 @@ public class SplitIndexWriter extends AbstractIndexWriter {
|
||||
return HtmlTree.LI(nextletterLabel);
|
||||
}
|
||||
else {
|
||||
Content nextLink = getHyperLink(DocPaths.indexN(next),
|
||||
Content nextLink = Links.createLink(DocPaths.indexN(next),
|
||||
nextletterLabel);
|
||||
return HtmlTree.LI(nextLink);
|
||||
}
|
||||
|
@ -40,6 +40,7 @@ import com.sun.source.doctree.IndexTree;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.RawHtml;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.BaseConfiguration;
|
||||
@ -105,7 +106,7 @@ public class TagletWriterImpl extends TagletWriter {
|
||||
}
|
||||
String desc = ch.getText(itt.getDescription());
|
||||
|
||||
String anchorName = htmlWriter.getName(tagText);
|
||||
String anchorName = configuration.links.getName(tagText);
|
||||
Content result = HtmlTree.A_ID(HtmlStyle.searchTagResult, anchorName, new StringContent(tagText));
|
||||
if (configuration.createindex && !tagText.isEmpty()) {
|
||||
SearchIndexItem si = new SearchIndexItem();
|
||||
@ -287,7 +288,7 @@ public class TagletWriterImpl extends TagletWriter {
|
||||
((ClassWriterImpl) htmlWriter).getTypeElement().getQualifiedName() + "." +
|
||||
utils.getSimpleName(holder);
|
||||
DocLink link = constantsPath.fragment(whichConstant);
|
||||
body.addContent(htmlWriter.getHyperLink(link,
|
||||
body.addContent(Links.createLink(link,
|
||||
new StringContent(configuration.getText("doclet.Constants_Summary"))));
|
||||
}
|
||||
if (utils.isClass(holder) && utils.isSerializable((TypeElement)holder)) {
|
||||
@ -297,7 +298,7 @@ public class TagletWriterImpl extends TagletWriter {
|
||||
appendSeparatorIfNotEmpty(body);
|
||||
DocPath serialPath = htmlWriter.pathToRoot.resolve(DocPaths.SERIALIZED_FORM);
|
||||
DocLink link = serialPath.fragment(utils.getFullyQualifiedName(holder));
|
||||
body.addContent(htmlWriter.getHyperLink(link,
|
||||
body.addContent(Links.createLink(link,
|
||||
new StringContent(configuration.getText("doclet.Serialized_Form"))));
|
||||
}
|
||||
}
|
||||
|
@ -33,6 +33,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
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.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
import jdk.javadoc.internal.doclets.toolkit.util.ClassTree;
|
||||
@ -161,7 +162,7 @@ public class TreeWriter extends AbstractTreeWriter {
|
||||
continue;
|
||||
}
|
||||
DocPath link = pathString(pkg, DocPaths.PACKAGE_TREE);
|
||||
Content li = HtmlTree.LI(getHyperLink(link,
|
||||
Content li = HtmlTree.LI(Links.createLink(link,
|
||||
new StringContent(utils.getPackageName(pkg))));
|
||||
if (i < packages.size() - 1) {
|
||||
li.addContent(", ");
|
||||
|
@ -30,7 +30,6 @@ import javax.lang.model.element.PackageElement;
|
||||
import javax.lang.model.element.TypeElement;
|
||||
|
||||
import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration;
|
||||
import jdk.javadoc.internal.doclets.formats.html.SectionName;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Messages;
|
||||
import jdk.javadoc.internal.doclets.toolkit.util.DocFile;
|
||||
@ -69,213 +68,6 @@ public abstract class HtmlDocWriter {
|
||||
DocFile.createFileForOutput(configuration, filename).getPath());
|
||||
}
|
||||
|
||||
public Content getHyperLink(DocPath link, String label) {
|
||||
return getHyperLink(link, new StringContent(label), false, "", "", "");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Html Hyper Link Content.
|
||||
*
|
||||
* @param where Position of the link in the file. Character '#' is not
|
||||
* needed.
|
||||
* @param label Tag for the link.
|
||||
* @return a content tree for the hyper link
|
||||
*/
|
||||
public Content getHyperLink(String where,
|
||||
Content label) {
|
||||
return getHyperLink(getDocLink(where), label, "", "");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Html Hyper Link Content.
|
||||
*
|
||||
* @param sectionName The section name to which the link will be created.
|
||||
* @param label Tag for the link.
|
||||
* @return a content tree for the hyper link
|
||||
*/
|
||||
public Content getHyperLink(SectionName sectionName,
|
||||
Content label) {
|
||||
return getHyperLink(getDocLink(sectionName), label, "", "");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Html Hyper Link Content.
|
||||
*
|
||||
* @param sectionName The section name combined with where to which the link
|
||||
* will be created.
|
||||
* @param where The fragment combined with sectionName to which the link
|
||||
* will be created.
|
||||
* @param label Tag for the link.
|
||||
* @return a content tree for the hyper link
|
||||
*/
|
||||
public Content getHyperLink(SectionName sectionName, String where,
|
||||
Content label) {
|
||||
return getHyperLink(getDocLink(sectionName, where), label, "", "");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the link.
|
||||
*
|
||||
* @param where Position of the link in the file.
|
||||
* @return a DocLink object for the hyper link
|
||||
*/
|
||||
public DocLink getDocLink(String where) {
|
||||
return DocLink.fragment(getName(where));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the link.
|
||||
*
|
||||
* @param sectionName The section name to which the link will be created.
|
||||
* @return a DocLink object for the hyper link
|
||||
*/
|
||||
public DocLink getDocLink(SectionName sectionName) {
|
||||
return DocLink.fragment(sectionName.getName());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the link.
|
||||
*
|
||||
* @param sectionName The section name combined with where to which the link
|
||||
* will be created.
|
||||
* @param where The fragment combined with sectionName to which the link
|
||||
* will be created.
|
||||
* @return a DocLink object for the hyper link
|
||||
*/
|
||||
public DocLink getDocLink(SectionName sectionName, String where) {
|
||||
return DocLink.fragment(sectionName.getName() + getName(where));
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert the name to a valid HTML name.
|
||||
*
|
||||
* @param name the name that needs to be converted to valid HTML name.
|
||||
* @return a valid HTML name string.
|
||||
*/
|
||||
public String getName(String name) {
|
||||
/* The HTML 4 spec at http://www.w3.org/TR/html4/types.html#h-6.2 mentions
|
||||
* that the name/id should begin with a letter followed by other valid characters.
|
||||
* The HTML 5 spec (draft) is more permissive on names/ids where the only restriction
|
||||
* is that it should be at least one character long and should not contain spaces.
|
||||
* The spec draft is @ http://www.w3.org/html/wg/drafts/html/master/dom.html#the-id-attribute.
|
||||
*
|
||||
* For HTML 4, we need to check for non-characters at the beginning of the name and
|
||||
* substitute it accordingly, "_" and "$" can appear at the beginning of a member name.
|
||||
* The method substitutes "$" with "Z:Z:D" and will prefix "_" with "Z:Z".
|
||||
*/
|
||||
|
||||
if (configuration.isOutputHtml5()) {
|
||||
return name.replaceAll(" +", "");
|
||||
}
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < name.length(); i++) {
|
||||
char ch = name.charAt(i);
|
||||
switch (ch) {
|
||||
case '(':
|
||||
case ')':
|
||||
case '<':
|
||||
case '>':
|
||||
case ',':
|
||||
sb.append('-');
|
||||
break;
|
||||
case ' ':
|
||||
case '[':
|
||||
break;
|
||||
case ']':
|
||||
sb.append(":A");
|
||||
break;
|
||||
// Any appearance of $ needs to be substituted with ":D" and not with hyphen
|
||||
// since a field name "P$$ and a method P(), both valid member names, can end
|
||||
// up as "P--". A member name beginning with $ needs to be substituted with
|
||||
// "Z:Z:D".
|
||||
case '$':
|
||||
if (i == 0)
|
||||
sb.append("Z:Z");
|
||||
sb.append(":D");
|
||||
break;
|
||||
// A member name beginning with _ needs to be prefixed with "Z:Z" since valid anchor
|
||||
// names can only begin with a letter.
|
||||
case '_':
|
||||
if (i == 0)
|
||||
sb.append("Z:Z");
|
||||
sb.append(ch);
|
||||
break;
|
||||
default:
|
||||
sb.append(ch);
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Html hyperlink.
|
||||
*
|
||||
* @param link path of the file.
|
||||
* @param label Tag for the link.
|
||||
* @return a content tree for the hyper link
|
||||
*/
|
||||
public Content getHyperLink(DocPath link, Content label) {
|
||||
return getHyperLink(link, label, "", "");
|
||||
}
|
||||
|
||||
public Content getHyperLink(DocLink link, Content label) {
|
||||
return getHyperLink(link, label, "", "");
|
||||
}
|
||||
|
||||
public Content getHyperLink(DocPath link,
|
||||
Content label, boolean strong,
|
||||
String stylename, String title, String target) {
|
||||
return getHyperLink(new DocLink(link), label, strong,
|
||||
stylename, title, target);
|
||||
}
|
||||
|
||||
public Content getHyperLink(DocLink link,
|
||||
Content label, boolean strong,
|
||||
String stylename, String title, String target) {
|
||||
Content body = label;
|
||||
if (strong) {
|
||||
body = HtmlTree.SPAN(HtmlStyle.typeNameLink, body);
|
||||
}
|
||||
if (stylename != null && stylename.length() != 0) {
|
||||
HtmlTree t = new HtmlTree(HtmlTag.FONT, body);
|
||||
t.addAttr(HtmlAttr.CLASS, stylename);
|
||||
body = t;
|
||||
}
|
||||
HtmlTree l = HtmlTree.A(link.toString(), body);
|
||||
if (title != null && title.length() != 0) {
|
||||
l.addAttr(HtmlAttr.TITLE, title);
|
||||
}
|
||||
if (target != null && target.length() != 0) {
|
||||
l.addAttr(HtmlAttr.TARGET, target);
|
||||
}
|
||||
return l;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Html Hyper Link.
|
||||
*
|
||||
* @param link String name of the file.
|
||||
* @param label Tag for the link.
|
||||
* @param title String that describes the link's content for accessibility.
|
||||
* @param target Target frame.
|
||||
* @return a content tree for the hyper link.
|
||||
*/
|
||||
public Content getHyperLink(DocPath link, Content label, String title, String target) {
|
||||
return getHyperLink(new DocLink(link), label, title, target);
|
||||
}
|
||||
|
||||
public Content getHyperLink(DocLink link, Content label, String title, String target) {
|
||||
HtmlTree anchor = HtmlTree.A(link.toString(), label);
|
||||
if (title != null && title.length() != 0) {
|
||||
anchor.addAttr(HtmlAttr.TITLE, title);
|
||||
}
|
||||
if (target != null && target.length() != 0) {
|
||||
anchor.addAttr(HtmlAttr.TARGET, target);
|
||||
}
|
||||
return anchor;
|
||||
}
|
||||
|
||||
public Content getModuleFramesHyperLink(ModuleElement mdle, Content label, String target) {
|
||||
DocLink mdlLink = new DocLink(DocPaths.moduleFrame(mdle));
|
||||
DocLink mtFrameLink = new DocLink(DocPaths.moduleTypeFrame(mdle));
|
||||
|
@ -0,0 +1,347 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package jdk.javadoc.internal.doclets.formats.html.markup;
|
||||
|
||||
import jdk.javadoc.internal.doclets.formats.html.SectionName;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
import jdk.javadoc.internal.doclets.toolkit.util.DocLink;
|
||||
import jdk.javadoc.internal.doclets.toolkit.util.DocPath;
|
||||
|
||||
/**
|
||||
* Factory for HTML A elements, both links (with a {@code href} attribute)
|
||||
* and anchors (with an {@code id} or {@code name} attribute).
|
||||
*
|
||||
* Most methods in this class are static factory methods.
|
||||
* The exceptions are those methods that directly or indirectly depend on the HTML version
|
||||
* being used, when determining valid HTML names (ids),
|
||||
* and those methods that generate anchors.
|
||||
*
|
||||
* <p><b>This is NOT part of any supported API.
|
||||
* If you write code that depends on this, you do so at your own risk.
|
||||
* This code and its internal interfaces are subject to change or
|
||||
* deletion without notice.</b>
|
||||
*/
|
||||
public class Links {
|
||||
|
||||
private final HtmlVersion version;
|
||||
|
||||
/**
|
||||
* Creates a {@code Links} object for a specific HTML version.
|
||||
* The version is used by the {@link #getName(String) getName} method
|
||||
* to help determine valid HTML names (ids), and to determine whether
|
||||
* to use an {@code id} or {@code name} attribute when creating anchors.
|
||||
*
|
||||
* @param version the HTML version
|
||||
*/
|
||||
public Links(HtmlVersion version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an anchor of the form {@code <a id="name"><!-- --></a>}.
|
||||
* In HTML4, a {@code name} attribute will be generated instead of an {@code id} attribute.
|
||||
*
|
||||
* @param name the value for the {@code id} or {@code name} attribute
|
||||
* @return a content tree for the anchor
|
||||
*/
|
||||
public Content createAnchor(String name) {
|
||||
return createAnchor(getName(name), null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an anchor of the form {@code <a id="sectionName"><!-- --></a>}.
|
||||
* In HTML4, a {@code name} attribute will be generated instead of an {@code id} attribute.
|
||||
*
|
||||
* @param sectionName the value for the {@code id} or {@code name} attribute
|
||||
* @return a content tree for the anchor
|
||||
*/
|
||||
public Content createAnchor(SectionName sectionName) {
|
||||
return createAnchor(sectionName.getName(), null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an anchor of the form {@code <a id="sectionNameName"><!-- --></a>}.
|
||||
* In HTML4, a {@code name} attribute will be generated instead of an {@code id} attribute.
|
||||
*
|
||||
* @param sectionName the first part of the value for the {@code id} or {@code name} attribute
|
||||
* @param name the second part of the value for the {@code id} or {@code name} attribute
|
||||
* @return a content tree for the anchor
|
||||
*/
|
||||
public Content createAnchor(SectionName sectionName, String name) {
|
||||
return createAnchor(sectionName.getName() + getName(name), null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an anchor of the form {@code <a id="anchorName">content</a>}.
|
||||
* In HTML4, a {@code name} attribute will be generated instead of an {@code id} attribute.
|
||||
*
|
||||
* @param name the value for the {@code id} or {@code name} attribute
|
||||
* @param content the content that should be added to the anchor,
|
||||
* or null, to use an empty comment
|
||||
* @return a content tree for the marker anchor
|
||||
*/
|
||||
public Content createAnchor(String name, Content content) {
|
||||
return HtmlTree.A(version, name, (content == null ? EMPTY_COMMENT : content));
|
||||
}
|
||||
|
||||
private static final Content EMPTY_COMMENT = new Comment(" ");
|
||||
|
||||
/**
|
||||
* Creates a link of the form {@code <a href="#where">label</a>}.
|
||||
*
|
||||
* @param where the position of the link in the file
|
||||
* @param label the content for the link
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
public Content createLink(String where, Content label) {
|
||||
DocLink l = DocLink.fragment(getName(where));
|
||||
return Links.createLink(l, label, "", "");
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a link of the form {@code <a href="#sectionName">label</a>}.
|
||||
*
|
||||
* @param sectionName the section name to which the link will be created
|
||||
* @param label the content for the link
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
public static Content createLink(SectionName sectionName, Content label) {
|
||||
DocLink l = DocLink.fragment(sectionName.getName());
|
||||
return Links.createLink(l, label, "", "");
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a link of the form {@code <a href="#sectionNameWhere">label</a>}.
|
||||
*
|
||||
* @param sectionName the section name combined with where to which the link
|
||||
* will be created
|
||||
* @param where the fragment combined with sectionName to which the link
|
||||
* will be created
|
||||
* @param label the content for the link
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
public Content createLink(SectionName sectionName, String where, Content label) {
|
||||
DocLink l = DocLink.fragment(sectionName.getName() + getName(where));
|
||||
return Links.createLink(l, label, "", "");
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a link of the form {@code <a href="#stylename" title="title" target="target">label</a>}.
|
||||
*
|
||||
* @param sectionName the section name to which the link will be created
|
||||
* @param label the content for the link
|
||||
* @param title the title for the link
|
||||
* @param target the target for the link, or null
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
public static Content createLink(SectionName sectionName, Content label, String title, String target) {
|
||||
DocLink l = DocLink.fragment(sectionName.getName());
|
||||
return createLink(l, label, title, target);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a link of the form {@code <a href="path">label</a>}.
|
||||
*
|
||||
* @param path the path for the link
|
||||
* @param label the content for the link
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
public static Content createLink(DocPath path, String label) {
|
||||
return Links.createLink(path, new StringContent(label), false, "", "", "");
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a link of the form {@code <a href="path">label</a>}.
|
||||
*
|
||||
* @param path the path for the link
|
||||
* @param label the content for the link
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
public static Content createLink(DocPath path, Content label) {
|
||||
return Links.createLink(path, label, "", "");
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a link of the form {@code <a href="path" title="title" target="target">label</a>}.
|
||||
* If {@code strong} is set, the label will be wrapped in
|
||||
* {@code <span style="typeNameLink">...</span>}.
|
||||
*
|
||||
* @param path the path for the link
|
||||
* @param label the content for the link
|
||||
* @param strong whether to wrap the {@code label} in a SPAN element
|
||||
* @param stylename (deprecated)
|
||||
* @param title the title for the link
|
||||
* @param target the target for the link, or null
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
public static Content createLink(DocPath path, Content label, boolean strong, String stylename,
|
||||
String title, String target) {
|
||||
return createLink(new DocLink(path), label, strong, stylename, title, target);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a link of the form {@code <a href="path" title="title" target="target">label</a>}.
|
||||
*
|
||||
* @param path the path for the link
|
||||
* @param label the content for the link
|
||||
* @param title the title for the link
|
||||
* @param target the target for the link, or null
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
public static Content createLink(DocPath path, Content label, String title, String target) {
|
||||
return Links.createLink(new DocLink(path), label, title, target);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a link of the form {@code <a href="link">label</a>}.
|
||||
*
|
||||
* @param link the details for the link
|
||||
* @param label the content for the link
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
public static Content createLink(DocLink link, Content label) {
|
||||
return Links.createLink(link, label, "", "");
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a link of the form {@code <a href="path" title="title" target="target">label</a>}.
|
||||
*
|
||||
* @param link the details for the link
|
||||
* @param label the content for the link
|
||||
* @param title the title for the link
|
||||
* @param target the target for the link, or null
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
public static Content createLink(DocLink link, Content label, String title, String target) {
|
||||
HtmlTree anchor = HtmlTree.A(link.toString(), label);
|
||||
if (title != null && title.length() != 0) {
|
||||
anchor.addAttr(HtmlAttr.TITLE, title);
|
||||
}
|
||||
if (target != null && target.length() != 0) {
|
||||
anchor.addAttr(HtmlAttr.TARGET, target);
|
||||
}
|
||||
return anchor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a link of the form {@code <a href="link" title="title" target="target">label</a>}.
|
||||
* If {@code strong} is set, the label will be wrapped in
|
||||
* {@code <span style="typeNameLink">...</span>}.
|
||||
*
|
||||
* @param link the details for the link
|
||||
* @param label the content for the link
|
||||
* @param strong whether to wrap the {@code label} in a SPAN element
|
||||
* @param stylename (deprecated)
|
||||
* @param title the title for the link
|
||||
* @param target the target for the link, or null
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
public static Content createLink(DocLink link, Content label, boolean strong, String stylename,
|
||||
String title, String target) {
|
||||
Content body = label;
|
||||
if (strong) {
|
||||
body = HtmlTree.SPAN(HtmlStyle.typeNameLink, body);
|
||||
}
|
||||
if (stylename != null && stylename.length() != 0) {
|
||||
HtmlTree t = new HtmlTree(HtmlTag.FONT, body);
|
||||
t.addAttr(HtmlAttr.CLASS, stylename);
|
||||
body = t;
|
||||
}
|
||||
HtmlTree l = HtmlTree.A(link.toString(), body);
|
||||
if (title != null && title.length() != 0) {
|
||||
l.addAttr(HtmlAttr.TITLE, title);
|
||||
}
|
||||
if (target != null && target.length() != 0) {
|
||||
l.addAttr(HtmlAttr.TARGET, target);
|
||||
}
|
||||
return l;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Converts a name to a valid HTML name (id).
|
||||
* This depends on the HTML version specified when the {@code Links} object was created.
|
||||
*
|
||||
* @param name the string that needs to be converted to a valid HTML name
|
||||
* @return a valid HTML name
|
||||
*/
|
||||
public String getName(String name) {
|
||||
/* The HTML 4 spec at http://www.w3.org/TR/html4/types.html#h-6.2 mentions
|
||||
* that the name/id should begin with a letter followed by other valid characters.
|
||||
* The HTML 5 spec (draft) is more permissive on names/ids where the only restriction
|
||||
* is that it should be at least one character long and should not contain spaces.
|
||||
* The spec draft is @ http://www.w3.org/html/wg/drafts/html/master/dom.html#the-id-attribute.
|
||||
*
|
||||
* For HTML 4, we need to check for non-characters at the beginning of the name and
|
||||
* substitute it accordingly, "_" and "$" can appear at the beginning of a member name.
|
||||
* The method substitutes "$" with "Z:Z:D" and will prefix "_" with "Z:Z".
|
||||
*/
|
||||
|
||||
if (version == HtmlVersion.HTML5) {
|
||||
return name.replaceAll(" +", "");
|
||||
}
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < name.length(); i++) {
|
||||
char ch = name.charAt(i);
|
||||
switch (ch) {
|
||||
case '(':
|
||||
case ')':
|
||||
case '<':
|
||||
case '>':
|
||||
case ',':
|
||||
sb.append('-');
|
||||
break;
|
||||
case ' ':
|
||||
case '[':
|
||||
break;
|
||||
case ']':
|
||||
sb.append(":A");
|
||||
break;
|
||||
// Any appearance of $ needs to be substituted with ":D" and not with hyphen
|
||||
// since a field name "P$$ and a method P(), both valid member names, can end
|
||||
// up as "P--". A member name beginning with $ needs to be substituted with
|
||||
// "Z:Z:D".
|
||||
case '$':
|
||||
if (i == 0)
|
||||
sb.append("Z:Z");
|
||||
sb.append(":D");
|
||||
break;
|
||||
// A member name beginning with _ needs to be prefixed with "Z:Z" since valid anchor
|
||||
// names can only begin with a letter.
|
||||
case '_':
|
||||
if (i == 0)
|
||||
sb.append("Z:Z");
|
||||
sb.append(ch);
|
||||
break;
|
||||
default:
|
||||
sb.append(ch);
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user