NestedClassWriterImpl.java revision 3233:b5d08bc0d224
1179645Smarcel/* 2179645Smarcel * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved. 3179645Smarcel * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4179645Smarcel * 5179645Smarcel * This code is free software; you can redistribute it and/or modify it 6179645Smarcel * under the terms of the GNU General Public License version 2 only, as 7179645Smarcel * published by the Free Software Foundation. Oracle designates this 8179645Smarcel * particular file as subject to the "Classpath" exception as provided 9179645Smarcel * by Oracle in the LICENSE file that accompanied this code. 10179645Smarcel * 11179645Smarcel * This code is distributed in the hope that it will be useful, but WITHOUT 12179645Smarcel * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13179645Smarcel * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14179645Smarcel * version 2 for more details (a copy is included in the LICENSE file that 15179645Smarcel * accompanied this code). 16179645Smarcel * 17179645Smarcel * You should have received a copy of the GNU General Public License version 18179645Smarcel * 2 along with this work; if not, write to the Free Software Foundation, 19179645Smarcel * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20179645Smarcel * 21179645Smarcel * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22179645Smarcel * or visit www.oracle.com if you need additional information or have any 23179645Smarcel * questions. 24179645Smarcel */ 25179645Smarcel 26179645Smarcelpackage jdk.javadoc.internal.doclets.formats.html; 27179645Smarcel 28179645Smarcelimport java.io.*; 29179645Smarcel 30179645Smarcelimport java.util.Arrays; 31179645Smarcelimport java.util.List; 32179645Smarcel 33179645Smarcelimport javax.lang.model.element.Element; 34179645Smarcelimport javax.lang.model.element.TypeElement; 35179645Smarcel 36179645Smarcelimport jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants; 37179645Smarcelimport jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; 38179645Smarcelimport jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; 39179645Smarcelimport jdk.javadoc.internal.doclets.formats.html.markup.StringContent; 40179645Smarcelimport jdk.javadoc.internal.doclets.toolkit.Content; 41179645Smarcelimport jdk.javadoc.internal.doclets.toolkit.MemberSummaryWriter; 42179645Smarcel 43179645Smarcel/** 44179645Smarcel * Writes nested class documentation in HTML format. 45179645Smarcel * 46179645Smarcel * <p><b>This is NOT part of any supported API. 47179645Smarcel * If you write code that depends on this, you do so at your own risk. 48179645Smarcel * This code and its internal interfaces are subject to change or 49179645Smarcel * deletion without notice.</b> 50179645Smarcel * 51179645Smarcel * @author Robert Field 52179645Smarcel * @author Atul M Dambalkar 53179645Smarcel * @author Jamie Ho (rewrite) 54179645Smarcel * @author Bhavesh Patel (Modified) 55179645Smarcel */ 56179645Smarcelpublic class NestedClassWriterImpl extends AbstractMemberWriter 57179645Smarcel implements MemberSummaryWriter { 58179645Smarcel 59179645Smarcel public NestedClassWriterImpl(SubWriterHolderWriter writer, TypeElement typeElement) { 60179645Smarcel super(writer, typeElement); 61179645Smarcel } 62179645Smarcel 63179645Smarcel public NestedClassWriterImpl(SubWriterHolderWriter writer) { 64179645Smarcel super(writer); 65179645Smarcel } 66179645Smarcel 67179645Smarcel /** 68179645Smarcel * {@inheritDoc} 69179645Smarcel */ 70179645Smarcel @Override 71179645Smarcel public Content getMemberSummaryHeader(TypeElement typeElement, 72179645Smarcel Content memberSummaryTree) { 73179645Smarcel memberSummaryTree.addContent(HtmlConstants.START_OF_NESTED_CLASS_SUMMARY); 74179645Smarcel Content memberTree = writer.getMemberTreeHeader(); 75179645Smarcel writer.addSummaryHeader(this, typeElement, memberTree); 76179645Smarcel return memberTree; 77179645Smarcel } 78179645Smarcel 79179645Smarcel /** 80179645Smarcel * {@inheritDoc} 81179645Smarcel */ 82179645Smarcel public void addMemberTree(Content memberSummaryTree, Content memberTree) { 83179645Smarcel writer.addMemberTree(memberSummaryTree, memberTree); 84179645Smarcel } 85179645Smarcel 86179645Smarcel /** 87179645Smarcel * Close the writer. 88179645Smarcel */ 89179645Smarcel @Override 90179645Smarcel public void close() throws IOException { 91179645Smarcel writer.close(); 92179645Smarcel } 93179645Smarcel 94179645Smarcel /** 95179645Smarcel * {@inheritDoc} 96179645Smarcel */ 97179645Smarcel @Override 98179645Smarcel public void addSummaryLabel(Content memberTree) { 99179645Smarcel Content label = HtmlTree.HEADING(HtmlConstants.SUMMARY_HEADING, 100179645Smarcel writer.getResource("doclet.Nested_Class_Summary")); 101179645Smarcel memberTree.addContent(label); 102179645Smarcel } 103179645Smarcel 104179645Smarcel /** 105179645Smarcel * {@inheritDoc} 106179645Smarcel */ 107179645Smarcel @Override 108179645Smarcel public String getTableSummary() { 109179645Smarcel return configuration.getText("doclet.Member_Table_Summary", 110179645Smarcel configuration.getText("doclet.Nested_Class_Summary"), 111179645Smarcel configuration.getText("doclet.nested_classes")); 112179645Smarcel } 113179645Smarcel 114 /** 115 * {@inheritDoc} 116 */ 117 @Override 118 public Content getCaption() { 119 return configuration.getResource("doclet.Nested_Classes"); 120 } 121 122 /** 123 * {@inheritDoc} 124 */ 125 @Override 126 public List<String> getSummaryTableHeader(Element member) { 127 if (utils.isInterface(member)) { 128 return Arrays.asList(writer.getModifierTypeHeader(), 129 configuration.getText("doclet.0_and_1", 130 configuration.getText("doclet.Interface"), 131 configuration.getText("doclet.Description"))); 132 133 } else { 134 return Arrays.asList(writer.getModifierTypeHeader(), 135 configuration.getText("doclet.0_and_1", 136 configuration.getText("doclet.Class"), 137 configuration.getText("doclet.Description"))); 138 } 139 } 140 141 /** 142 * {@inheritDoc} 143 */ 144 @Override 145 public void addSummaryAnchor(TypeElement typeElement, Content memberTree) { 146 memberTree.addContent(writer.getMarkerAnchor( 147 SectionName.NESTED_CLASS_SUMMARY)); 148 } 149 150 /** 151 * {@inheritDoc} 152 */ 153 @Override 154 public void addInheritedSummaryAnchor(TypeElement typeElement, Content inheritedTree) { 155 inheritedTree.addContent(writer.getMarkerAnchor( 156 SectionName.NESTED_CLASSES_INHERITANCE, 157 utils.getFullyQualifiedName(typeElement))); 158 } 159 160 /** 161 * {@inheritDoc} 162 */ 163 @Override 164 public void addInheritedSummaryLabel(TypeElement typeElement, Content inheritedTree) { 165 Content classLink = writer.getPreQualifiedClassLink( 166 LinkInfoImpl.Kind.MEMBER, typeElement, false); 167 Content label = new StringContent(utils.isInterface(typeElement) 168 ? configuration.getText("doclet.Nested_Classes_Interface_Inherited_From_Interface") 169 : configuration.getText("doclet.Nested_Classes_Interfaces_Inherited_From_Class")); 170 Content labelHeading = HtmlTree.HEADING(HtmlConstants.INHERITED_SUMMARY_HEADING, 171 label); 172 labelHeading.addContent(writer.getSpace()); 173 labelHeading.addContent(classLink); 174 inheritedTree.addContent(labelHeading); 175 } 176 177 /** 178 * {@inheritDoc} 179 */ 180 @Override 181 protected void addSummaryLink(LinkInfoImpl.Kind context, TypeElement typeElement, Element member, 182 Content tdSummary) { 183 Content memberLink = HtmlTree.SPAN(HtmlStyle.memberNameLink, 184 writer.getLink(new LinkInfoImpl(configuration, context, (TypeElement)member))); 185 Content code = HtmlTree.CODE(memberLink); 186 tdSummary.addContent(code); 187 } 188 189 /** 190 * {@inheritDoc} 191 */ 192 @Override 193 protected void addInheritedSummaryLink(TypeElement typeElement, Element member, Content linksTree) { 194 linksTree.addContent( 195 writer.getLink(new LinkInfoImpl(configuration, LinkInfoImpl.Kind.MEMBER, 196 (TypeElement)member))); 197 } 198 199 /** 200 * {@inheritDoc} 201 */ 202 @Override 203 protected void addSummaryType(Element member, Content tdSummaryType) { 204 addModifierAndType(member, null, tdSummaryType); 205 } 206 207 /** 208 * {@inheritDoc} 209 */ 210 @Override 211 protected Content getDeprecatedLink(Element member) { 212 return writer.getQualifiedClassLink(LinkInfoImpl.Kind.MEMBER, member); 213 } 214 215 /** 216 * {@inheritDoc} 217 */ 218 @Override 219 protected Content getNavSummaryLink(TypeElement typeElement, boolean link) { 220 if (link) { 221 if (typeElement == null) { 222 return writer.getHyperLink( 223 SectionName.NESTED_CLASS_SUMMARY, 224 writer.getResource("doclet.navNested")); 225 } else { 226 return writer.getHyperLink( 227 SectionName.NESTED_CLASSES_INHERITANCE, 228 utils.getFullyQualifiedName(typeElement), writer.getResource("doclet.navNested")); 229 } 230 } else { 231 return writer.getResource("doclet.navNested"); 232 } 233 } 234 235 /** 236 * {@inheritDoc} 237 */ 238 @Override 239 protected void addNavDetailLink(boolean link, Content liNav) { 240 } 241} 242