45 *
46 * <p><b>This is NOT part of any supported API.
47 * If you write code that depends on this, you do so at your own risk.
48 * This code and its internal interfaces are subject to change or
49 * deletion without notice.</b>
50 */
51 public class PropertyWriterImpl extends AbstractMemberWriter
52 implements PropertyWriter, MemberSummaryWriter {
53
54 public PropertyWriterImpl(SubWriterHolderWriter writer, TypeElement typeElement) {
55 super(writer, typeElement);
56 }
57
58 /**
59 * {@inheritDoc}
60 */
61 @Override
62 public Content getMemberSummaryHeader(TypeElement typeElement, Content memberSummaryTree) {
63 memberSummaryTree.add(MarkerComments.START_OF_PROPERTY_SUMMARY);
64 Content memberTree = new ContentBuilder();
65 writer.addSummaryHeader(this, typeElement, memberTree);
66 return memberTree;
67 }
68
69 /**
70 * {@inheritDoc}
71 */
72 @Override
73 public void addMemberTree(Content memberSummaryTree, Content memberTree) {
74 writer.addMemberTree(HtmlStyle.propertySummary, memberSummaryTree, memberTree);
75 }
76
77 /**
78 * {@inheritDoc}
79 */
80 @Override
81 public Content getPropertyDetailsTreeHeader(TypeElement typeElement,
82 Content memberDetailsTree) {
83 memberDetailsTree.add(MarkerComments.START_OF_PROPERTY_DETAILS);
84 Content propertyDetailsTree = new ContentBuilder();
85 Content heading = HtmlTree.HEADING(Headings.TypeDeclaration.DETAILS_HEADING,
86 contents.propertyDetailsLabel);
87 propertyDetailsTree.add(links.createAnchor(SectionName.PROPERTY_DETAIL));
88 propertyDetailsTree.add(heading);
89 return propertyDetailsTree;
90 }
91
92 /**
93 * {@inheritDoc}
94 */
95 @Override
96 public Content getPropertyDocTreeHeader(ExecutableElement property,
97 Content propertyDetailsTree) {
98 Content propertyDocTree = new ContentBuilder();
99 Content heading = new HtmlTree(Headings.TypeDeclaration.MEMBER_HEADING);
100 heading.add(links.createAnchor(name(property),
101 new StringContent(utils.getPropertyLabel(name(property)))));
102 propertyDocTree.add(heading);
103 return HtmlTree.SECTION(HtmlStyle.detail, propertyDocTree);
104 }
105
106 /**
107 * {@inheritDoc}
108 */
109 @Override
110 public Content getSignature(ExecutableElement property) {
111 return new MemberSignature(property)
112 .addType(utils.getReturnType(property))
113 .toContent();
114 }
115
116 /**
117 * {@inheritDoc}
118 */
119 @Override
120 public void addDeprecated(ExecutableElement property, Content propertyDocTree) {
121 }
122
123 /**
147 propertyDocTree.add(HtmlTree.DIV(HtmlStyle.block, descfrmLabel));
148 writer.addInlineComment(property, propertyDocTree);
149 }
150 }
151 }
152
153 /**
154 * {@inheritDoc}
155 */
156 @Override
157 public void addTags(ExecutableElement property, Content propertyDocTree) {
158 writer.addTagsInfo(property, propertyDocTree);
159 }
160
161 /**
162 * {@inheritDoc}
163 */
164 @Override
165 public Content getPropertyDetails(Content propertyDetailsTreeHeader, Content propertyDetailsTree) {
166 Content propertyDetails = new ContentBuilder(propertyDetailsTreeHeader, propertyDetailsTree);
167 return getMemberTree(HtmlTree.SECTION(HtmlStyle.propertyDetails, propertyDetails));
168 }
169
170 /**
171 * {@inheritDoc}
172 */
173 @Override
174 public Content getPropertyDoc(Content propertyDocTree) {
175 return getMemberTree(propertyDocTree);
176 }
177
178 /**
179 * {@inheritDoc}
180 */
181 @Override
182 public void addSummaryLabel(Content memberTree) {
183 Content label = HtmlTree.HEADING(Headings.TypeDeclaration.SUMMARY_HEADING,
184 contents.propertySummaryLabel);
185 memberTree.add(label);
186 }
187
193 return new TableHeader(contents.typeLabel, contents.propertyLabel,
194 contents.descriptionLabel);
195 }
196
197 /**
198 * {@inheritDoc}
199 */
200 @Override
201 protected Table createSummaryTable() {
202 return new Table(HtmlStyle.memberSummary)
203 .setCaption(contents.properties)
204 .setHeader(getSummaryTableHeader(typeElement))
205 .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colSecond, HtmlStyle.colLast)
206 .setRowScopeColumn(1);
207 }
208
209 /**
210 * {@inheritDoc}
211 */
212 @Override
213 public void addSummaryAnchor(TypeElement typeElement, Content memberTree) {
214 memberTree.add(links.createAnchor(SectionName.PROPERTY_SUMMARY));
215 }
216
217 /**
218 * {@inheritDoc}
219 */
220 @Override
221 public void addInheritedSummaryAnchor(TypeElement typeElement, Content inheritedTree) {
222 inheritedTree.add(links.createAnchor(
223 SectionName.PROPERTIES_INHERITANCE,
224 configuration.getClassName(typeElement)));
225 }
226
227 /**
228 * {@inheritDoc}
229 */
230 @Override
231 public void addInheritedSummaryLabel(TypeElement typeElement, Content inheritedTree) {
232 Content classLink = writer.getPreQualifiedClassLink(
233 LinkInfoImpl.Kind.MEMBER, typeElement, false);
234 Content label;
235 if (configuration.summarizeOverriddenMethods) {
236 label = new StringContent(utils.isClass(typeElement)
237 ? resources.getText("doclet.Properties_Declared_In_Class")
238 : resources.getText("doclet.Properties_Declared_In_Interface"));
239 } else {
240 label = new StringContent(utils.isClass(typeElement)
241 ? resources.getText("doclet.Properties_Inherited_From_Class")
242 : resources.getText("doclet.Properties_Inherited_From_Interface"));
243 }
244 Content labelHeading = HtmlTree.HEADING(Headings.TypeDeclaration.INHERITED_SUMMARY_HEADING,
245 label);
246 labelHeading.add(Entity.NO_BREAK_SPACE);
247 labelHeading.add(classLink);
248 inheritedTree.add(labelHeading);
249 }
250
251 /**
252 * {@inheritDoc}
253 */
254 @Override
255 protected void addSummaryLink(LinkInfoImpl.Kind context, TypeElement typeElement, Element member,
256 Content tdSummary) {
257 Content memberLink = HtmlTree.SPAN(HtmlStyle.memberNameLink,
258 writer.getDocLink(context, typeElement,
259 member,
260 utils.getPropertyLabel(name(member)),
261 false,
262 true));
263
264 Content code = HtmlTree.CODE(memberLink);
265 tdSummary.add(code);
|
45 *
46 * <p><b>This is NOT part of any supported API.
47 * If you write code that depends on this, you do so at your own risk.
48 * This code and its internal interfaces are subject to change or
49 * deletion without notice.</b>
50 */
51 public class PropertyWriterImpl extends AbstractMemberWriter
52 implements PropertyWriter, MemberSummaryWriter {
53
54 public PropertyWriterImpl(SubWriterHolderWriter writer, TypeElement typeElement) {
55 super(writer, typeElement);
56 }
57
58 /**
59 * {@inheritDoc}
60 */
61 @Override
62 public Content getMemberSummaryHeader(TypeElement typeElement, Content memberSummaryTree) {
63 memberSummaryTree.add(MarkerComments.START_OF_PROPERTY_SUMMARY);
64 Content memberTree = new ContentBuilder();
65 writer.addSummaryHeader(this, memberTree);
66 return memberTree;
67 }
68
69 /**
70 * {@inheritDoc}
71 */
72 @Override
73 public void addMemberTree(Content memberSummaryTree, Content memberTree) {
74 writer.addMemberTree(HtmlStyle.propertySummary,
75 SectionName.PROPERTY_SUMMARY, memberSummaryTree, memberTree);
76 }
77
78 /**
79 * {@inheritDoc}
80 */
81 @Override
82 public Content getPropertyDetailsTreeHeader(Content memberDetailsTree) {
83 memberDetailsTree.add(MarkerComments.START_OF_PROPERTY_DETAILS);
84 Content propertyDetailsTree = new ContentBuilder();
85 Content heading = HtmlTree.HEADING(Headings.TypeDeclaration.DETAILS_HEADING,
86 contents.propertyDetailsLabel);
87 propertyDetailsTree.add(heading);
88 return propertyDetailsTree;
89 }
90
91 /**
92 * {@inheritDoc}
93 */
94 @Override
95 public Content getPropertyDocTreeHeader(ExecutableElement property) {
96 Content propertyDocTree = new ContentBuilder();
97 Content heading = new HtmlTree(Headings.TypeDeclaration.MEMBER_HEADING,
98 new StringContent(utils.getPropertyLabel(name(property))));
99 propertyDocTree.add(heading);
100 return HtmlTree.SECTION(HtmlStyle.detail, propertyDocTree)
101 .setId(name(property));
102 }
103
104 /**
105 * {@inheritDoc}
106 */
107 @Override
108 public Content getSignature(ExecutableElement property) {
109 return new MemberSignature(property)
110 .addType(utils.getReturnType(property))
111 .toContent();
112 }
113
114 /**
115 * {@inheritDoc}
116 */
117 @Override
118 public void addDeprecated(ExecutableElement property, Content propertyDocTree) {
119 }
120
121 /**
145 propertyDocTree.add(HtmlTree.DIV(HtmlStyle.block, descfrmLabel));
146 writer.addInlineComment(property, propertyDocTree);
147 }
148 }
149 }
150
151 /**
152 * {@inheritDoc}
153 */
154 @Override
155 public void addTags(ExecutableElement property, Content propertyDocTree) {
156 writer.addTagsInfo(property, propertyDocTree);
157 }
158
159 /**
160 * {@inheritDoc}
161 */
162 @Override
163 public Content getPropertyDetails(Content propertyDetailsTreeHeader, Content propertyDetailsTree) {
164 Content propertyDetails = new ContentBuilder(propertyDetailsTreeHeader, propertyDetailsTree);
165 return getMemberTree(HtmlTree.SECTION(HtmlStyle.propertyDetails, propertyDetails)
166 .setId(SectionName.PROPERTY_DETAIL.getName()));
167 }
168
169 /**
170 * {@inheritDoc}
171 */
172 @Override
173 public Content getPropertyDoc(Content propertyDocTree) {
174 return getMemberTree(propertyDocTree);
175 }
176
177 /**
178 * {@inheritDoc}
179 */
180 @Override
181 public void addSummaryLabel(Content memberTree) {
182 Content label = HtmlTree.HEADING(Headings.TypeDeclaration.SUMMARY_HEADING,
183 contents.propertySummaryLabel);
184 memberTree.add(label);
185 }
186
192 return new TableHeader(contents.typeLabel, contents.propertyLabel,
193 contents.descriptionLabel);
194 }
195
196 /**
197 * {@inheritDoc}
198 */
199 @Override
200 protected Table createSummaryTable() {
201 return new Table(HtmlStyle.memberSummary)
202 .setCaption(contents.properties)
203 .setHeader(getSummaryTableHeader(typeElement))
204 .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colSecond, HtmlStyle.colLast)
205 .setRowScopeColumn(1);
206 }
207
208 /**
209 * {@inheritDoc}
210 */
211 @Override
212 public void addInheritedSummaryLabel(TypeElement typeElement, Content inheritedTree) {
213 Content classLink = writer.getPreQualifiedClassLink(
214 LinkInfoImpl.Kind.MEMBER, typeElement, false);
215 Content label;
216 if (configuration.summarizeOverriddenMethods) {
217 label = new StringContent(utils.isClass(typeElement)
218 ? resources.getText("doclet.Properties_Declared_In_Class")
219 : resources.getText("doclet.Properties_Declared_In_Interface"));
220 } else {
221 label = new StringContent(utils.isClass(typeElement)
222 ? resources.getText("doclet.Properties_Inherited_From_Class")
223 : resources.getText("doclet.Properties_Inherited_From_Interface"));
224 }
225 HtmlTree labelHeading = HtmlTree.HEADING(Headings.TypeDeclaration.INHERITED_SUMMARY_HEADING,
226 label);
227 labelHeading.setId(SectionName.PROPERTIES_INHERITANCE.getName()
228 + links.getName(configuration.getClassName(typeElement)));
229 labelHeading.add(Entity.NO_BREAK_SPACE);
230 labelHeading.add(classLink);
231 inheritedTree.add(labelHeading);
232 }
233
234 /**
235 * {@inheritDoc}
236 */
237 @Override
238 protected void addSummaryLink(LinkInfoImpl.Kind context, TypeElement typeElement, Element member,
239 Content tdSummary) {
240 Content memberLink = HtmlTree.SPAN(HtmlStyle.memberNameLink,
241 writer.getDocLink(context, typeElement,
242 member,
243 utils.getPropertyLabel(name(member)),
244 false,
245 true));
246
247 Content code = HtmlTree.CODE(memberLink);
248 tdSummary.add(code);
|