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

Fri, 04 Mar 2011 19:53:03 -0800

author
jjg
date
Fri, 04 Mar 2011 19:53:03 -0800
changeset 910
ebf7c13df6c0
parent 798
4868a36f6fd8
child 1359
25e14ad23cef
permissions
-rw-r--r--

6866185: Util.getPackageSourcePath should use lastIndexOf not indexOf and related cleanup
Reviewed-by: bpatel

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

mercurial