src/share/classes/com/sun/tools/doclets/formats/html/PropertyWriterImpl.java

Sat, 07 Nov 2020 10:30:02 +0800

author
aoqi
date
Sat, 07 Nov 2020 10:30:02 +0800
changeset 3938
93012e2a5d1d
parent 2525
2eb010b6cb22
permissions
-rw-r--r--

Added tag mips-jdk8u275-b01 for changeset eb6ee6a5f2fe

aoqi@0 1 /*
aoqi@0 2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
aoqi@0 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
aoqi@0 4 *
aoqi@0 5 * This code is free software; you can redistribute it and/or modify it
aoqi@0 6 * under the terms of the GNU General Public License version 2 only, as
aoqi@0 7 * published by the Free Software Foundation. Oracle designates this
aoqi@0 8 * particular file as subject to the "Classpath" exception as provided
aoqi@0 9 * by Oracle in the LICENSE file that accompanied this code.
aoqi@0 10 *
aoqi@0 11 * This code is distributed in the hope that it will be useful, but WITHOUT
aoqi@0 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
aoqi@0 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
aoqi@0 14 * version 2 for more details (a copy is included in the LICENSE file that
aoqi@0 15 * accompanied this code).
aoqi@0 16 *
aoqi@0 17 * You should have received a copy of the GNU General Public License version
aoqi@0 18 * 2 along with this work; if not, write to the Free Software Foundation,
aoqi@0 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
aoqi@0 20 *
aoqi@0 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
aoqi@0 22 * or visit www.oracle.com if you need additional information or have any
aoqi@0 23 * questions.
aoqi@0 24 */
aoqi@0 25
aoqi@0 26 package com.sun.tools.doclets.formats.html;
aoqi@0 27
aoqi@0 28 import java.io.*;
aoqi@0 29
aoqi@0 30 import com.sun.javadoc.*;
aoqi@0 31 import com.sun.tools.doclets.formats.html.markup.*;
aoqi@0 32 import com.sun.tools.doclets.internal.toolkit.*;
aoqi@0 33 import com.sun.tools.doclets.internal.toolkit.util.*;
aoqi@0 34
aoqi@0 35 /**
aoqi@0 36 * Writes property documentation in HTML format.
aoqi@0 37 *
aoqi@0 38 * <p><b>This is NOT part of any supported API.
aoqi@0 39 * If you write code that depends on this, you do so at your own risk.
aoqi@0 40 * This code and its internal interfaces are subject to change or
aoqi@0 41 * deletion without notice.</b>
aoqi@0 42 *
aoqi@0 43 * @author Robert Field
aoqi@0 44 * @author Atul M Dambalkar
aoqi@0 45 * @author Jamie Ho (rewrite)
aoqi@0 46 * @author Bhavesh Patel (Modified)
aoqi@0 47 */
aoqi@0 48 public class PropertyWriterImpl extends AbstractMemberWriter
aoqi@0 49 implements PropertyWriter, MemberSummaryWriter {
aoqi@0 50
aoqi@0 51 public PropertyWriterImpl(SubWriterHolderWriter writer, ClassDoc classdoc) {
aoqi@0 52 super(writer, classdoc);
aoqi@0 53 }
aoqi@0 54
aoqi@0 55 /**
aoqi@0 56 * {@inheritDoc}
aoqi@0 57 */
aoqi@0 58 public Content getMemberSummaryHeader(ClassDoc classDoc,
aoqi@0 59 Content memberSummaryTree) {
aoqi@0 60 memberSummaryTree.addContent(HtmlConstants.START_OF_PROPERTY_SUMMARY);
aoqi@0 61 Content memberTree = writer.getMemberTreeHeader();
aoqi@0 62 writer.addSummaryHeader(this, classDoc, memberTree);
aoqi@0 63 return memberTree;
aoqi@0 64 }
aoqi@0 65
aoqi@0 66 /**
aoqi@0 67 * {@inheritDoc}
aoqi@0 68 */
aoqi@0 69 public Content getPropertyDetailsTreeHeader(ClassDoc classDoc,
aoqi@0 70 Content memberDetailsTree) {
aoqi@0 71 memberDetailsTree.addContent(HtmlConstants.START_OF_PROPERTY_DETAILS);
aoqi@0 72 Content propertyDetailsTree = writer.getMemberTreeHeader();
aoqi@0 73 propertyDetailsTree.addContent(writer.getMarkerAnchor(
aoqi@0 74 SectionName.PROPERTY_DETAIL));
aoqi@0 75 Content heading = HtmlTree.HEADING(HtmlConstants.DETAILS_HEADING,
aoqi@0 76 writer.propertyDetailsLabel);
aoqi@0 77 propertyDetailsTree.addContent(heading);
aoqi@0 78 return propertyDetailsTree;
aoqi@0 79 }
aoqi@0 80
aoqi@0 81 /**
aoqi@0 82 * {@inheritDoc}
aoqi@0 83 */
aoqi@0 84 public Content getPropertyDocTreeHeader(MethodDoc property,
aoqi@0 85 Content propertyDetailsTree) {
aoqi@0 86 propertyDetailsTree.addContent(
aoqi@0 87 writer.getMarkerAnchor(property.name()));
aoqi@0 88 Content propertyDocTree = writer.getMemberTreeHeader();
aoqi@0 89 Content heading = new HtmlTree(HtmlConstants.MEMBER_HEADING);
aoqi@0 90 heading.addContent(property.name().substring(0, property.name().lastIndexOf("Property")));
aoqi@0 91 propertyDocTree.addContent(heading);
aoqi@0 92 return propertyDocTree;
aoqi@0 93 }
aoqi@0 94
aoqi@0 95 /**
aoqi@0 96 * {@inheritDoc}
aoqi@0 97 */
aoqi@0 98 public Content getSignature(MethodDoc property) {
aoqi@0 99 Content pre = new HtmlTree(HtmlTag.PRE);
aoqi@0 100 writer.addAnnotationInfo(property, pre);
aoqi@0 101 addModifiers(property, pre);
aoqi@0 102 Content propertylink = writer.getLink(new LinkInfoImpl(
aoqi@0 103 configuration, LinkInfoImpl.Kind.MEMBER,
aoqi@0 104 property.returnType()));
aoqi@0 105 pre.addContent(propertylink);
aoqi@0 106 pre.addContent(" ");
aoqi@0 107 if (configuration.linksource) {
aoqi@0 108 Content propertyName = new StringContent(property.name());
aoqi@0 109 writer.addSrcLink(property, propertyName, pre);
aoqi@0 110 } else {
aoqi@0 111 addName(property.name(), pre);
aoqi@0 112 }
aoqi@0 113 return pre;
aoqi@0 114 }
aoqi@0 115
aoqi@0 116 /**
aoqi@0 117 * {@inheritDoc}
aoqi@0 118 */
aoqi@0 119 public void addDeprecated(MethodDoc property, Content propertyDocTree) {
aoqi@0 120 }
aoqi@0 121
aoqi@0 122 /**
aoqi@0 123 * {@inheritDoc}
aoqi@0 124 */
aoqi@0 125 public void addComments(MethodDoc property, Content propertyDocTree) {
aoqi@0 126 ClassDoc holder = property.containingClass();
aoqi@0 127 if (property.inlineTags().length > 0) {
aoqi@0 128 if (holder.equals(classdoc) ||
aoqi@0 129 (! (holder.isPublic() || Util.isLinkable(holder, configuration)))) {
aoqi@0 130 writer.addInlineComment(property, propertyDocTree);
aoqi@0 131 } else {
aoqi@0 132 Content link =
aoqi@0 133 writer.getDocLink(LinkInfoImpl.Kind.PROPERTY_DOC_COPY,
aoqi@0 134 holder, property,
aoqi@0 135 holder.isIncluded() ?
aoqi@0 136 holder.typeName() : holder.qualifiedTypeName(),
aoqi@0 137 false);
aoqi@0 138 Content codeLink = HtmlTree.CODE(link);
aoqi@0 139 Content descfrmLabel = HtmlTree.SPAN(HtmlStyle.descfrmTypeLabel, holder.isClass()?
aoqi@0 140 writer.descfrmClassLabel : writer.descfrmInterfaceLabel);
aoqi@0 141 descfrmLabel.addContent(writer.getSpace());
aoqi@0 142 descfrmLabel.addContent(codeLink);
aoqi@0 143 propertyDocTree.addContent(HtmlTree.DIV(HtmlStyle.block, descfrmLabel));
aoqi@0 144 writer.addInlineComment(property, propertyDocTree);
aoqi@0 145 }
aoqi@0 146 }
aoqi@0 147 }
aoqi@0 148
aoqi@0 149 /**
aoqi@0 150 * {@inheritDoc}
aoqi@0 151 */
aoqi@0 152 public void addTags(MethodDoc property, Content propertyDocTree) {
aoqi@0 153 writer.addTagsInfo(property, propertyDocTree);
aoqi@0 154 }
aoqi@0 155
aoqi@0 156 /**
aoqi@0 157 * {@inheritDoc}
aoqi@0 158 */
aoqi@0 159 public Content getPropertyDetails(Content propertyDetailsTree) {
aoqi@0 160 return getMemberTree(propertyDetailsTree);
aoqi@0 161 }
aoqi@0 162
aoqi@0 163 /**
aoqi@0 164 * {@inheritDoc}
aoqi@0 165 */
aoqi@0 166 public Content getPropertyDoc(Content propertyDocTree,
aoqi@0 167 boolean isLastContent) {
aoqi@0 168 return getMemberTree(propertyDocTree, isLastContent);
aoqi@0 169 }
aoqi@0 170
aoqi@0 171 /**
aoqi@0 172 * Close the writer.
aoqi@0 173 */
aoqi@0 174 public void close() throws IOException {
aoqi@0 175 writer.close();
aoqi@0 176 }
aoqi@0 177
aoqi@0 178 public int getMemberKind() {
aoqi@0 179 return VisibleMemberMap.PROPERTIES;
aoqi@0 180 }
aoqi@0 181
aoqi@0 182 /**
aoqi@0 183 * {@inheritDoc}
aoqi@0 184 */
aoqi@0 185 public void addSummaryLabel(Content memberTree) {
aoqi@0 186 Content label = HtmlTree.HEADING(HtmlConstants.SUMMARY_HEADING,
aoqi@0 187 writer.getResource("doclet.Property_Summary"));
aoqi@0 188 memberTree.addContent(label);
aoqi@0 189 }
aoqi@0 190
aoqi@0 191 /**
aoqi@0 192 * {@inheritDoc}
aoqi@0 193 */
aoqi@0 194 public String getTableSummary() {
aoqi@0 195 return configuration.getText("doclet.Member_Table_Summary",
aoqi@0 196 configuration.getText("doclet.Property_Summary"),
aoqi@0 197 configuration.getText("doclet.properties"));
aoqi@0 198 }
aoqi@0 199
aoqi@0 200 /**
aoqi@0 201 * {@inheritDoc}
aoqi@0 202 */
aoqi@0 203 public Content getCaption() {
aoqi@0 204 return configuration.getResource("doclet.Properties");
aoqi@0 205 }
aoqi@0 206
aoqi@0 207 /**
aoqi@0 208 * {@inheritDoc}
aoqi@0 209 */
aoqi@0 210 public String[] getSummaryTableHeader(ProgramElementDoc member) {
aoqi@0 211 String[] header = new String[] {
aoqi@0 212 configuration.getText("doclet.Type"),
aoqi@0 213 configuration.getText("doclet.0_and_1",
aoqi@0 214 configuration.getText("doclet.Property"),
aoqi@0 215 configuration.getText("doclet.Description"))
aoqi@0 216 };
aoqi@0 217 return header;
aoqi@0 218 }
aoqi@0 219
aoqi@0 220 /**
aoqi@0 221 * {@inheritDoc}
aoqi@0 222 */
aoqi@0 223 public void addSummaryAnchor(ClassDoc cd, Content memberTree) {
aoqi@0 224 memberTree.addContent(writer.getMarkerAnchor(
aoqi@0 225 SectionName.PROPERTY_SUMMARY));
aoqi@0 226 }
aoqi@0 227
aoqi@0 228 /**
aoqi@0 229 * {@inheritDoc}
aoqi@0 230 */
aoqi@0 231 public void addInheritedSummaryAnchor(ClassDoc cd, Content inheritedTree) {
aoqi@0 232 inheritedTree.addContent(writer.getMarkerAnchor(
aoqi@0 233 SectionName.PROPERTIES_INHERITANCE,
aoqi@0 234 configuration.getClassName(cd)));
aoqi@0 235 }
aoqi@0 236
aoqi@0 237 /**
aoqi@0 238 * {@inheritDoc}
aoqi@0 239 */
aoqi@0 240 public void addInheritedSummaryLabel(ClassDoc cd, Content inheritedTree) {
aoqi@0 241 Content classLink = writer.getPreQualifiedClassLink(
aoqi@0 242 LinkInfoImpl.Kind.MEMBER, cd, false);
aoqi@0 243 Content label = new StringContent(cd.isClass() ?
aoqi@0 244 configuration.getText("doclet.Properties_Inherited_From_Class") :
aoqi@0 245 configuration.getText("doclet.Properties_Inherited_From_Interface"));
aoqi@0 246 Content labelHeading = HtmlTree.HEADING(HtmlConstants.INHERITED_SUMMARY_HEADING,
aoqi@0 247 label);
aoqi@0 248 labelHeading.addContent(writer.getSpace());
aoqi@0 249 labelHeading.addContent(classLink);
aoqi@0 250 inheritedTree.addContent(labelHeading);
aoqi@0 251 }
aoqi@0 252
aoqi@0 253 /**
aoqi@0 254 * {@inheritDoc}
aoqi@0 255 */
aoqi@0 256 protected void addSummaryLink(LinkInfoImpl.Kind context, ClassDoc cd, ProgramElementDoc member,
aoqi@0 257 Content tdSummary) {
aoqi@0 258 Content memberLink = HtmlTree.SPAN(HtmlStyle.memberNameLink,
aoqi@0 259 writer.getDocLink(context, cd,
aoqi@0 260 (MemberDoc) member,
aoqi@0 261 member.name().substring(0, member.name().lastIndexOf("Property")),
aoqi@0 262 false,
aoqi@0 263 true));
aoqi@0 264
aoqi@0 265 Content code = HtmlTree.CODE(memberLink);
aoqi@0 266 tdSummary.addContent(code);
aoqi@0 267 }
aoqi@0 268
aoqi@0 269 /**
aoqi@0 270 * {@inheritDoc}
aoqi@0 271 */
aoqi@0 272 protected void addInheritedSummaryLink(ClassDoc cd,
aoqi@0 273 ProgramElementDoc member, Content linksTree) {
aoqi@0 274 linksTree.addContent(
aoqi@0 275 writer.getDocLink(LinkInfoImpl.Kind.MEMBER, cd, (MemberDoc)member,
aoqi@0 276 ((member.name().lastIndexOf("Property") != -1) && configuration.javafx)
aoqi@0 277 ? member.name().substring(0, member.name().length() - "Property".length())
aoqi@0 278 : member.name(),
aoqi@0 279 false, true));
aoqi@0 280 }
aoqi@0 281
aoqi@0 282 /**
aoqi@0 283 * {@inheritDoc}
aoqi@0 284 */
aoqi@0 285 protected void addSummaryType(ProgramElementDoc member, Content tdSummaryType) {
aoqi@0 286 MethodDoc property = (MethodDoc)member;
aoqi@0 287 addModifierAndType(property, property.returnType(), tdSummaryType);
aoqi@0 288 }
aoqi@0 289
aoqi@0 290 /**
aoqi@0 291 * {@inheritDoc}
aoqi@0 292 */
aoqi@0 293 protected Content getDeprecatedLink(ProgramElementDoc member) {
aoqi@0 294 return writer.getDocLink(LinkInfoImpl.Kind.MEMBER,
aoqi@0 295 (MemberDoc) member, ((MethodDoc)member).qualifiedName());
aoqi@0 296 }
aoqi@0 297
aoqi@0 298 /**
aoqi@0 299 * {@inheritDoc}
aoqi@0 300 */
aoqi@0 301 protected Content getNavSummaryLink(ClassDoc cd, boolean link) {
aoqi@0 302 if (link) {
aoqi@0 303 if (cd == null) {
aoqi@0 304 return writer.getHyperLink(
aoqi@0 305 SectionName.PROPERTY_SUMMARY,
aoqi@0 306 writer.getResource("doclet.navProperty"));
aoqi@0 307 } else {
aoqi@0 308 return writer.getHyperLink(
aoqi@0 309 SectionName.PROPERTIES_INHERITANCE,
aoqi@0 310 configuration.getClassName(cd), writer.getResource("doclet.navProperty"));
aoqi@0 311 }
aoqi@0 312 } else {
aoqi@0 313 return writer.getResource("doclet.navProperty");
aoqi@0 314 }
aoqi@0 315 }
aoqi@0 316
aoqi@0 317 /**
aoqi@0 318 * {@inheritDoc}
aoqi@0 319 */
aoqi@0 320 protected void addNavDetailLink(boolean link, Content liNav) {
aoqi@0 321 if (link) {
aoqi@0 322 liNav.addContent(writer.getHyperLink(
aoqi@0 323 SectionName.PROPERTY_DETAIL,
aoqi@0 324 writer.getResource("doclet.navProperty")));
aoqi@0 325 } else {
aoqi@0 326 liNav.addContent(writer.getResource("doclet.navProperty"));
aoqi@0 327 }
aoqi@0 328 }
aoqi@0 329 }

mercurial