NestedClassWriterImpl.java revision 3658:7f3b6ce62ea7
1/* 2 * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26package jdk.javadoc.internal.doclets.formats.html; 27 28import java.util.Arrays; 29import java.util.List; 30 31import javax.lang.model.element.Element; 32import javax.lang.model.element.TypeElement; 33 34import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants; 35import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; 36import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; 37import jdk.javadoc.internal.doclets.formats.html.markup.StringContent; 38import jdk.javadoc.internal.doclets.toolkit.Content; 39import jdk.javadoc.internal.doclets.toolkit.MemberSummaryWriter; 40 41/** 42 * Writes nested class documentation in HTML format. 43 * 44 * <p><b>This is NOT part of any supported API. 45 * If you write code that depends on this, you do so at your own risk. 46 * This code and its internal interfaces are subject to change or 47 * deletion without notice.</b> 48 * 49 * @author Robert Field 50 * @author Atul M Dambalkar 51 * @author Jamie Ho (rewrite) 52 * @author Bhavesh Patel (Modified) 53 */ 54public class NestedClassWriterImpl extends AbstractMemberWriter 55 implements MemberSummaryWriter { 56 57 public NestedClassWriterImpl(SubWriterHolderWriter writer, TypeElement typeElement) { 58 super(writer, typeElement); 59 } 60 61 public NestedClassWriterImpl(SubWriterHolderWriter writer) { 62 super(writer); 63 } 64 65 /** 66 * {@inheritDoc} 67 */ 68 @Override 69 public Content getMemberSummaryHeader(TypeElement typeElement, 70 Content memberSummaryTree) { 71 memberSummaryTree.addContent(HtmlConstants.START_OF_NESTED_CLASS_SUMMARY); 72 Content memberTree = writer.getMemberTreeHeader(); 73 writer.addSummaryHeader(this, typeElement, memberTree); 74 return memberTree; 75 } 76 77 /** 78 * {@inheritDoc} 79 */ 80 public void addMemberTree(Content memberSummaryTree, Content memberTree) { 81 writer.addMemberTree(memberSummaryTree, memberTree); 82 } 83 84 /** 85 * {@inheritDoc} 86 */ 87 @Override 88 public void addSummaryLabel(Content memberTree) { 89 Content label = HtmlTree.HEADING(HtmlConstants.SUMMARY_HEADING, 90 contents.nestedClassSummary); 91 memberTree.addContent(label); 92 } 93 94 /** 95 * {@inheritDoc} 96 */ 97 @Override 98 public String getTableSummary() { 99 return resources.getText("doclet.Member_Table_Summary", 100 resources.getText("doclet.Nested_Class_Summary"), 101 resources.getText("doclet.nested_classes")); 102 } 103 104 /** 105 * {@inheritDoc} 106 */ 107 @Override 108 public Content getCaption() { 109 return configuration.getContent("doclet.Nested_Classes"); 110 } 111 112 /** 113 * {@inheritDoc} 114 */ 115 @Override 116 public List<String> getSummaryTableHeader(Element member) { 117 if (utils.isInterface(member)) { 118 return Arrays.asList(writer.getModifierTypeHeader(), 119 resources.getText("doclet.Interface"), resources.getText("doclet.Description")); 120 121 } else { 122 return Arrays.asList(writer.getModifierTypeHeader(), 123 resources.getText("doclet.Class"), resources.getText("doclet.Description")); 124 } 125 } 126 127 /** 128 * {@inheritDoc} 129 */ 130 @Override 131 public void addSummaryAnchor(TypeElement typeElement, Content memberTree) { 132 memberTree.addContent(writer.getMarkerAnchor( 133 SectionName.NESTED_CLASS_SUMMARY)); 134 } 135 136 /** 137 * {@inheritDoc} 138 */ 139 @Override 140 public void addInheritedSummaryAnchor(TypeElement typeElement, Content inheritedTree) { 141 inheritedTree.addContent(writer.getMarkerAnchor( 142 SectionName.NESTED_CLASSES_INHERITANCE, 143 utils.getFullyQualifiedName(typeElement))); 144 } 145 146 /** 147 * {@inheritDoc} 148 */ 149 @Override 150 public void addInheritedSummaryLabel(TypeElement typeElement, Content inheritedTree) { 151 Content classLink = writer.getPreQualifiedClassLink( 152 LinkInfoImpl.Kind.MEMBER, typeElement, false); 153 Content label = new StringContent(utils.isInterface(typeElement) 154 ? configuration.getText("doclet.Nested_Classes_Interface_Inherited_From_Interface") 155 : configuration.getText("doclet.Nested_Classes_Interfaces_Inherited_From_Class")); 156 Content labelHeading = HtmlTree.HEADING(HtmlConstants.INHERITED_SUMMARY_HEADING, 157 label); 158 labelHeading.addContent(Contents.SPACE); 159 labelHeading.addContent(classLink); 160 inheritedTree.addContent(labelHeading); 161 } 162 163 /** 164 * {@inheritDoc} 165 */ 166 @Override 167 protected void addSummaryLink(LinkInfoImpl.Kind context, TypeElement typeElement, Element member, 168 Content tdSummary) { 169 Content memberLink = HtmlTree.SPAN(HtmlStyle.memberNameLink, 170 writer.getLink(new LinkInfoImpl(configuration, context, (TypeElement)member))); 171 Content code = HtmlTree.CODE(memberLink); 172 tdSummary.addContent(code); 173 } 174 175 /** 176 * {@inheritDoc} 177 */ 178 @Override 179 protected void addInheritedSummaryLink(TypeElement typeElement, Element member, Content linksTree) { 180 linksTree.addContent( 181 writer.getLink(new LinkInfoImpl(configuration, LinkInfoImpl.Kind.MEMBER, 182 (TypeElement)member))); 183 } 184 185 /** 186 * {@inheritDoc} 187 */ 188 @Override 189 protected void addSummaryType(Element member, Content tdSummaryType) { 190 addModifierAndType(member, null, tdSummaryType); 191 } 192 193 /** 194 * {@inheritDoc} 195 */ 196 @Override 197 protected Content getDeprecatedLink(Element member) { 198 return writer.getQualifiedClassLink(LinkInfoImpl.Kind.MEMBER, member); 199 } 200 201 /** 202 * {@inheritDoc} 203 */ 204 @Override 205 protected Content getNavSummaryLink(TypeElement typeElement, boolean link) { 206 if (link) { 207 if (typeElement == null) { 208 return writer.getHyperLink( 209 SectionName.NESTED_CLASS_SUMMARY, 210 contents.navNested); 211 } else { 212 return writer.getHyperLink( 213 SectionName.NESTED_CLASSES_INHERITANCE, 214 utils.getFullyQualifiedName(typeElement), contents.navNested); 215 } 216 } else { 217 return contents.navNested; 218 } 219 } 220 221 /** 222 * {@inheritDoc} 223 */ 224 @Override 225 protected void addNavDetailLink(boolean link, Content liNav) { 226 } 227} 228