class.cs revision 4ff8891dd21b357948d7e3588f22bee2145784c2
1<?cs # THIS CREATES A CLASS OR INTERFACE PAGE FROM .java FILES ?>
2<?cs include:"macros.cs" ?>
3<?cs include:"macros_override.cs" ?>
4<?cs
5####################
6# MACRO FUNCTION USED ONLY IN THIS TEMPLATE TO GENERATE API REFERENCE
7# FIRST, THE FUNCTIONS FOR THE SUMMARY AT THE TOP OF THE PAGE
8####################
9?>
10
11<?cs
12# Prints the table cells for the summary of methods.
13?><?cs def:write_method_summary(methods, included) ?>
14<?cs set:count = #1 ?>
15<?cs each:method = methods ?>
16  <?cs # The apilevel-N class MUST BE LAST in the sequence of class names ?>
17  <tr class="api apilevel-<?cs var:method.since ?>" >
18  <?cs # leave out this cell if there is no return type = if constructors ?>
19  <?cs if:subcount(method.returnType) ?>
20    <td><code>
21        <?cs var:method.abstract ?>
22        <?cs var:method.default ?>
23        <?cs var:method.static ?>
24        <?cs var:method.final ?>
25        <?cs call:type_link(method.generic) ?>
26        <?cs call:type_link(method.returnType) ?></code>
27    </td>
28  <?cs /if ?>
29    <td width="100%">
30      <code>
31      <?cs call:cond_link(method.name, toroot, method.href, included) ?>(<?cs call:parameter_list(method.params, 0) ?>)
32      </code>
33      <?cs if:subcount(method.shortDescr) || subcount(method.deprecated) ?>
34        <p><?cs call:short_descr(method) ?>
35        <?cs call:show_annotations_list(method) ?></p>
36      <?cs /if ?>
37    </td>
38  </tr>
39  <?cs set:count = count + #1 ?>
40<?cs /each ?>
41<?cs /def ?>
42
43<?cs
44# Print the table cells for the summary of fields.
45?><?cs def:write_field_summary(fields, included) ?>
46<?cs set:count = #1 ?>
47<?cs each:field=fields ?>
48  <tr class="api apilevel-<?cs var:field.since ?>" >
49    <td><code>
50    <?cs var:field.scope ?>
51    <?cs var:field.static ?>
52    <?cs var:field.final ?>
53    <?cs call:type_link(field.type) ?></code></td>
54    <td width="100%">
55      <code><?cs call:cond_link(field.name, toroot, field.href, included) ?></code>
56      <p><?cs call:short_descr(field) ?>
57      <?cs call:show_annotations_list(field) ?></p>
58    </td>
59  </tr>
60  <?cs set:count = count + #1 ?>
61<?cs /each ?>
62<?cs /def ?>
63
64<?cs
65# Print the table cells for the summary of constants
66?><?cs def:write_constant_summary(fields, included) ?>
67<?cs set:count = #1 ?>
68    <?cs each:field=fields ?>
69    <tr class="api apilevel-<?cs var:field.since ?>" >
70        <td><code><?cs call:type_link(field.type) ?></code></td>
71        <td width="100%">
72          <code><?cs call:cond_link(field.name, toroot, field.href, included) ?></code>
73          <p><?cs call:short_descr(field) ?>
74          <?cs call:show_annotations_list(field) ?></p>
75        </td>
76    </tr>
77    <?cs set:count = count + #1 ?>
78    <?cs /each ?>
79<?cs /def ?>
80
81<?cs
82# Print the table cells for the summary of attributes
83?><?cs def:write_attr_summary(attrs, included) ?>
84<?cs set:count = #1 ?>
85    <?cs each:attr=attrs ?>
86    <tr class="api apilevel-<?cs var:attr.since ?>" >
87        <td><?cs if:included ?><a href="<?cs var:toroot ?><?cs var:attr.href ?>"><?cs /if
88          ?><code><?cs var:attr.name ?></code><?cs if:included ?></a><?cs /if ?></td>
89        <td width="100%">
90          <?cs call:short_descr(attr) ?>&nbsp;
91          <?cs call:show_annotations_list(attr) ?>
92        </td>
93    </tr>
94    <?cs set:count = count + #1 ?>
95    <?cs /each ?>
96<?cs /def ?>
97
98<?cs
99# Print the table cells for the inner classes
100?><?cs def:write_inners_summary(classes) ?>
101<?cs set:count = #1 ?>
102  <?cs each:cl=class.inners ?>
103    <tr class="api apilevel-<?cs var:cl.since ?>" >
104      <td class="jd-typecol"><code>
105        <?cs var:cl.scope ?>
106        <?cs var:cl.static ?>
107        <?cs var:cl.final ?>
108        <?cs var:cl.abstract ?>
109        <?cs var:cl.kind ?></code></td>
110      <td class="jd-descrcol" width="100%">
111        <code><?cs call:type_link(cl.type) ?></code>
112        <p><?cs call:short_descr(cl) ?>&nbsp;
113        <?cs call:show_annotations_list(cl) ?></p>
114      </td>
115    </tr>
116    <?cs set:count = count + #1 ?>
117    <?cs /each ?>
118<?cs /def ?>
119<?cs
120###################
121# END OF FUNCTIONS FOR API SUMMARY
122# START OF FUNCTIONS FOR THE API DETAILS
123###################
124?>
125<?cs
126# Print the table cells for the summary of constants
127?>
128<?cs def:write_field_details(fields) ?>
129<?cs each:field=fields ?>
130<?cs # this next line must be exactly like this to be parsed by eclipse ?>
131<?cs # the A tag in the next line must remain where it is, so that Eclipse can parse the docs ?>
132<A NAME="<?cs var:field.anchor ?>"></A>
133<?cs # The apilevel-N class MUST BE LAST in the sequence of class names ?>
134<div class="api apilevel-<?cs var:field.since ?>">
135    <h3 class="api-name"><?cs var:field.name ?></h3>
136    <div class="api-level">
137      <?cs call:since_tags(field) ?>
138      <?cs call:federated_refs(field) ?>
139    </div>
140<pre class="api-signature no-pretty-print">
141<?cs if:subcount(field.scope) ?><?cs var:field.scope
142?> <?cs /if ?><?cs if:subcount(field.static) ?><?cs var:field.static
143?> <?cs /if ?><?cs if:subcount(field.final) ?><?cs var:field.final
144?> <?cs /if ?><?cs if:subcount(field.type) ?><?cs call:type_link(field.type)
145?> <?cs /if ?><?cs var:field.name ?></pre>
146    <?cs call:show_annotations_list(field) ?>
147    <?cs call:description(field) ?>
148    <?cs if:subcount(field.constantValue) ?>
149      <p>Constant Value:
150      <?cs if:field.constantValue.isString ?>
151          <?cs var:field.constantValue.str ?>
152      <?cs else ?>
153          <?cs var:field.constantValue.dec ?>
154          (<?cs var:field.constantValue.hex ?>)
155      <?cs /if ?>
156    <?cs /if ?>
157</div>
158<?cs /each ?>
159<?cs /def ?>
160
161<?cs def:write_method_details(methods) ?>
162<?cs each:method=methods ?>
163<?cs # the A tag in the next line must remain where it is, so that Eclipse can parse the docs ?>
164<A NAME="<?cs var:method.anchor ?>"></A>
165<?cs # The apilevel-N class MUST BE LAST in the sequence of class names ?>
166<div class="api apilevel-<?cs var:method.since ?>">
167    <h3 class="api-name"><?cs var:method.name ?></h3>
168    <div class="api-level">
169      <div><?cs call:since_tags(method) ?></div>
170      <?cs call:federated_refs(method) ?>
171    </div>
172<pre class="api-signature no-pretty-print">
173<?cs if:subcount(method.scope) ?><?cs var:method.scope
174?> <?cs /if ?><?cs if:subcount(method.static) ?><?cs var:method.static
175?> <?cs /if ?><?cs if:subcount(method.final) ?><?cs var:method.final
176?> <?cs /if ?><?cs if:subcount(method.abstract) ?><?cs var:method.abstract
177?> <?cs /if ?><?cs if:subcount(method.returnType) ?><?cs call:type_link(method.returnType)
178?> <?cs /if ?><?cs var:method.name ?> (<?cs call:parameter_list(method.params, 1) ?>)</pre>
179    <?cs call:show_annotations_list(method) ?>
180    <?cs call:description(method) ?>
181</div>
182<?cs /each ?>
183<?cs /def ?>
184
185<?cs def:write_attr_details(attrs) ?>
186<?cs each:attr=attrs ?>
187<?cs # the A tag in the next line must remain where it is, so that Eclipse can parse the docs ?>
188<A NAME="<?cs var:attr.anchor ?>"></A>
189<h3 class="api-name"><?cs var:attr.name ?></h3>
190<?cs call:show_annotations_list(attr) ?>
191<?cs call:description(attr) ?>
192<?cs if:subcount(attr.methods) ?>
193  <p><b>Related methods:</b></p>
194  <ul class="nolist">
195  <?cs each:m=attr.methods ?>
196    <li><a href="<?cs var:toroot ?><?cs var:m.href ?>"><?cs var:m.name ?></a></li>
197  <?cs /each ?>
198  </ul>
199<?cs /if ?>
200<?cs /each ?>
201<?cs /def ?>
202<?cs
203#########################
204# END OF MACROS
205# START OF PAGE PRINTING
206#########################
207?>
208<?cs include:"doctype.cs" ?>
209<html<?cs if:devsite ?> devsite<?cs /if ?>>
210<?cs include:"head_tag.cs" ?>
211<?cs include:"body_tag.cs" ?>
212<?cs include:"header.cs" ?>
213<?cs include:"page_info.cs" ?>
214<?cs # This DIV spans the entire document to provide scope for some scripts ?>
215<div class="api apilevel-<?cs var:class.since ?>" id="jd-content">
216<?cs # this next line must be exactly like this to be parsed by eclipse ?>
217<!-- ======== START OF CLASS DATA ======== -->
218<?cs
219#
220# Page header with class name and signature
221#
222?>
223<h1 class="api-title"><?cs var:class.name ?></h1>
224<p>
225<code class="api-signature">
226  <?cs var:class.scope ?>
227  <?cs var:class.static ?>
228  <?cs var:class.final ?>
229  <?cs var:class.abstract ?>
230  <?cs var:class.kind ?>
231  <?cs var:class.name ?>
232</code>
233<br>
234<?cs set:colspan = subcount(class.inheritance) ?>
235<?cs each:supr = class.inheritance ?>
236<code class="api-signature">
237  <?cs if:colspan == 2 ?>
238    extends <?cs call:type_link(supr.short_class) ?>
239  <?cs /if ?>
240  <?cs if:last(supr) && subcount(supr.interfaces) ?>
241      implements
242      <?cs each:t=supr.interfaces ?>
243        <?cs call:type_link(t) ?><?cs
244          if: name(t)!=subcount(supr.interfaces)-1
245            ?>, <?cs /if ?>
246      <?cs /each ?>
247  <?cs /if ?>
248  <?cs set:colspan = colspan-1 ?>
249</code>
250<?cs /each ?>
251</p><?cs
252#
253# Class inheritance tree
254#
255?><table class="jd-inheritance-table">
256<?cs set:colspan = subcount(class.inheritance) ?>
257<?cs each:supr = class.inheritance ?>
258  <tr>
259    <?cs loop:i = 1, (subcount(class.inheritance)-colspan), 1 ?>
260      <td class="jd-inheritance-space">&nbsp;<?cs
261        if:(subcount(class.inheritance)-colspan) == i
262          ?>&nbsp;&nbsp;&#x21b3;<?cs
263        /if ?></td>
264    <?cs /loop ?>
265    <td colspan="<?cs var:colspan ?>" class="jd-inheritance-class-cell"><?cs
266      if:colspan == 1
267          ?><?cs call:class_name(class.qualifiedType) ?><?cs
268      else
269          ?><?cs call:type_link(supr.class) ?><?cs
270      /if ?>
271    </td>
272  </tr>
273  <?cs set:colspan = colspan-1 ?>
274<?cs /each ?>
275</table><?cs
276#
277# Collapsible list of subclasses
278#
279?><?cs
280if:subcount(class.subclasses.direct) && !class.subclasses.hidden ?>
281  <table class="jd-sumtable jd-sumtable-subclasses">
282  <tr><td style="border:none;margin:0;padding:0;">
283    <?cs call:expando_trigger("subclasses-direct", "closed") ?>Known Direct Subclasses
284    <?cs call:expandable_class_list("subclasses-direct", class.subclasses.direct, "list") ?>
285  </td></tr>
286  </table>
287  <?cs /if ?>
288  <?cs if:subcount(class.subclasses.indirect) && !class.subclasses.hidden ?>
289  <table class="jd-sumtable jd-sumtable-subclasses"><tr><td colspan="2" style="border:none;margin:0;padding:0;">
290  <?cs call:expando_trigger("subclasses-indirect", "closed") ?>Known Indirect Subclasses
291  <?cs call:expandable_class_list("subclasses-indirect", class.subclasses.indirect, "list") ?>
292  </td></tr></table><?cs
293/if ?>
294<?cs call:show_annotations_list(class) ?>
295<br><hr><?cs
296#
297# The long-form class description.
298#
299?><?cs call:deprecated_warning(class) ?>
300
301<?cs if:subcount(class.descr) ?>
302  <p><?cs call:tag_list(class.descr) ?></p>
303<?cs /if ?>
304
305<?cs call:see_also_tags(class.seeAlso) ?>
306<?cs
307#################
308# CLASS SUMMARY
309#################
310?>
311<?cs # make sure there is a summary view to display ?>
312<?cs if:subcount(class.inners)
313     || subcount(class.attrs)
314     || inhattrs
315     || subcount(class.enumConstants)
316     || subcount(class.constants)
317     || inhconstants
318     || subcount(class.fields)
319     || inhfields
320     || subcount(class.ctors.public)
321     || subcount(class.ctors.protected)
322     || subcount(class.methods.public)
323     || subcount(class.methods.protected)
324     || inhmethods ?>
325<h2 class="api-section">Summary</h2>
326
327<?cs if:subcount(class.inners) ?>
328<?cs # this next line must be exactly like this to be parsed by eclipse ?>
329<!-- ======== NESTED CLASS SUMMARY ======== -->
330<table id="nestedclasses" class="responsive">
331<tr><th colspan="2"><h3>Nested classes</h3></th></tr>
332<?cs call:write_inners_summary(class.inners) ?>
333<?cs /if ?>
334
335<?cs # this next line must be exactly like this to be parsed by eclipse ?>
336<?cs if:subcount(class.attrs) ?>
337<!-- =========== FIELD SUMMARY =========== -->
338<table id="lattrs" class="responsive">
339<tr><th colspan="2"><h3>XML attributes</h3></th></tr>
340<?cs call:write_attr_summary(class.attrs, 1) ?>
341<?cs /if ?>
342
343<?cs # if there are inherited attrs, write the table ?>
344<?cs if:inhattrs ?>
345<?cs # this next line must be exactly like this to be parsed by eclipse ?>
346<!-- =========== FIELD SUMMARY =========== -->
347<table id="inhattrs" class="responsive inhtable">
348<tr><th><h3>Inherited XML attributes</h3></th></tr>
349<?cs each:cl=class.inherited ?>
350<?cs if:subcount(cl.attrs) ?>
351<tr class="api apilevel-<?cs var:cl.since ?>" >
352<td colspan="2">
353<?cs call:expando_trigger("inherited-attrs-"+cl.qualified, "closed") ?>From
354<?cs var:cl.kind ?>
355<code>
356  <?cs call:cond_link(cl.qualified, toroot, cl.link, cl.included) ?>
357</code>
358<div id="inherited-attrs-<?cs var:cl.qualified ?>">
359  <div id="inherited-attrs-<?cs var:cl.qualified ?>-list"
360        class="jd-inheritedlinks">
361  </div>
362  <div id="inherited-attrs-<?cs var:cl.qualified ?>-summary" style="display: none;">
363    <table class="jd-sumtable-expando">
364    <?cs call:write_attr_summary(cl.attrs, cl.included) ?></table>
365  </div>
366</div>
367</td></tr>
368<?cs /if ?>
369<?cs /each ?>
370</table>
371<?cs /if ?>
372
373<?cs if:subcount(class.enumConstants) ?>
374<?cs # this next line must be exactly like this to be parsed by eclipse ?>
375<!-- =========== ENUM CONSTANT SUMMARY =========== -->
376<table id="enumconstants" class="responsive constants">
377  <tr><th colspan="2"><h3>Enum values</h3></th></tr>
378<?cs set:count = #1 ?>
379  <?cs each:field=class.enumConstants ?>
380  <tr class="api apilevel-<?cs var:field.since ?>" >
381    <td><code><?cs call:type_link(field.type) ?></code>&nbsp;</td>
382    <td width="100%">
383      <code><?cs call:cond_link(field.name, toroot, field.href, cl.included) ?></code>
384      <p><?cs call:short_descr(field) ?>&nbsp;
385      <?cs call:show_annotations_list(field) ?></p>
386    </td>
387  </tr>
388  <?cs set:count = count + #1 ?>
389  <?cs /each ?>
390<?cs /if ?>
391
392<?cs if:subcount(class.constants) ?>
393<?cs # this next line must be exactly like this to be parsed by eclipse ?>
394<!-- =========== ENUM CONSTANT SUMMARY =========== -->
395<table id="constants" class="responsive constants">
396<tr><th colspan="2"><h3>Constants</h3></th></tr>
397<?cs call:write_constant_summary(class.constants, 1) ?>
398</table>
399<?cs /if ?>
400
401<?cs # if there are inherited constants, write the table ?>
402<?cs if:inhconstants ?>
403<?cs # this next line must be exactly like this to be parsed by eclipse ?>
404<!-- =========== ENUM CONSTANT SUMMARY =========== -->
405<table id="inhconstants" class="responsive constants inhtable">
406<tr><th><h3>Inherited constants</h3></th></tr>
407<?cs each:cl=class.inherited ?>
408<?cs if:subcount(cl.constants) ?>
409  <tr class="api apilevel-<?cs var:cl.since ?>" >
410  <td>
411  <?cs call:expando_trigger("inherited-constants-"+cl.qualified, "closed") ?>From
412  <?cs var:cl.kind ?>
413  <code>
414    <?cs call:cond_link(cl.qualified, toroot, cl.link, cl.included) ?>
415  </code>
416  <div id="inherited-constants-<?cs var:cl.qualified ?>">
417    <div id="inherited-constants-<?cs var:cl.qualified ?>-list"
418          class="jd-inheritedlinks">
419    </div>
420    <div id="inherited-constants-<?cs var:cl.qualified ?>-summary" style="display: none;">
421      <table class="jd-sumtable-expando responsive">
422      <?cs call:write_constant_summary(cl.constants, cl.included) ?></table>
423    </div>
424  </div>
425  </td></tr>
426<?cs /if ?>
427<?cs /each ?>
428</table>
429<?cs /if ?>
430
431<?cs if:subcount(class.fields) ?>
432<?cs # this next line must be exactly like this to be parsed by eclipse ?>
433<!-- =========== FIELD SUMMARY =========== -->
434<table id="lfields" class="responsive properties">
435<tr><th colspan="2"><h3>Fields</h3></th></tr>
436<?cs call:write_field_summary(class.fields, 1) ?>
437</table>
438<?cs /if ?>
439
440<?cs # if there are inherited fields, write the table ?>
441<?cs if:inhfields ?>
442<?cs # this next line must be exactly like this to be parsed by eclipse ?>
443<!-- =========== FIELD SUMMARY =========== -->
444<table id="inhfields" class="properties inhtable">
445<tr><th><h3>Inherited fields</h3></th></tr>
446<?cs each:cl=class.inherited ?>
447<?cs if:subcount(cl.fields) ?>
448  <tr class="api apilevel-<?cs var:cl.since ?>" >
449  <td>
450  <?cs call:expando_trigger("inherited-fields-"+cl.qualified, "closed") ?>From
451  <?cs var:cl.kind ?>
452  <code>
453    <?cs call:cond_link(cl.qualified, toroot, cl.link, cl.included) ?>
454  </code>
455  <div id="inherited-fields-<?cs var:cl.qualified ?>">
456    <div id="inherited-fields-<?cs var:cl.qualified ?>-list"
457          class="jd-inheritedlinks">
458    </div>
459    <div id="inherited-fields-<?cs var:cl.qualified ?>-summary" style="display: none;">
460      <table class="jd-sumtable-expando responsive">
461      <?cs call:write_field_summary(cl.fields, cl.included) ?></table>
462    </div>
463  </div>
464  </td></tr>
465<?cs /if ?>
466<?cs /each ?>
467</table>
468<?cs /if ?>
469
470<?cs if:subcount(class.ctors.public) ?>
471<?cs # this next line must be exactly like this to be parsed by eclipse ?>
472<!-- ======== CONSTRUCTOR SUMMARY ======== -->
473<table id="pubctors" class="responsive constructors">
474<tr><th colspan="2"><h3>Public constructors</h3></th></tr>
475<?cs call:write_method_summary(class.ctors.public, 1) ?>
476</table>
477<?cs /if ?>
478
479<?cs if:subcount(class.ctors.protected) ?>
480<?cs # this next line must be exactly like this to be parsed by eclipse ?>
481<!-- ======== CONSTRUCTOR SUMMARY ======== -->
482<table id="proctors" class="responsive constructors">
483<tr><th colspan="2"><h3>Protected constructors</h3></th></tr>
484<?cs call:write_method_summary(class.ctors.protected, 1) ?>
485</table>
486<?cs /if ?>
487
488<?cs if:subcount(class.methods.public) ?>
489<?cs # this next line must be exactly like this to be parsed by eclipse ?>
490<!-- ========== METHOD SUMMARY =========== -->
491<table id="pubmethods" class="responsive methods">
492<tr><th colspan="2"><h3>Public methods</h3></th></tr>
493<?cs call:write_method_summary(class.methods.public, 1) ?>
494</table>
495<?cs /if ?>
496
497<?cs if:subcount(class.methods.protected) ?>
498<?cs # this next line must be exactly like this to be parsed by eclipse ?>
499<!-- ========== METHOD SUMMARY =========== -->
500<table id="promethods" class="reponsive methods">
501<tr><th colspan="2"><h3>Protected methods</h3></th></tr>
502<?cs call:write_method_summary(class.methods.protected, 1) ?>
503</table>
504<?cs /if ?>
505
506<?cs # if there are inherited methods, write the table ?>
507<?cs if:inhmethods ?>
508<?cs # this next line must be exactly like this to be parsed by eclipse ?>
509<!-- ========== METHOD SUMMARY =========== -->
510<table id="inhmethods" class="methods inhtable">
511<tr><th><h3>Inherited methods</h3></th></tr>
512<?cs each:cl=class.inherited ?>
513<?cs if:subcount(cl.methods) ?>
514<tr class="api apilevel-<?cs var:cl.since ?>" >
515<td colspan="2">
516<?cs call:expando_trigger("inherited-methods-"+cl.qualified, "closed") ?>From
517<?cs var:cl.kind ?>
518<code>
519  <?cs if:cl.included ?>
520    <a href="<?cs var:toroot ?><?cs var:cl.link ?>"><?cs var:cl.qualified ?></a>
521  <?cs elif:cl.federated ?>
522    <a href="<?cs var:cl.link ?>"><?cs var:cl.qualified ?></a>
523  <?cs else ?>
524    <?cs var:cl.qualified ?>
525  <?cs /if ?>
526</code>
527<div id="inherited-methods-<?cs var:cl.qualified ?>">
528  <div id="inherited-methods-<?cs var:cl.qualified ?>-list"
529        class="jd-inheritedlinks">
530  </div>
531  <div id="inherited-methods-<?cs var:cl.qualified ?>-summary" style="display: none;">
532    <table class="jd-sumtable-expando responsive">
533      <?cs call:write_method_summary(cl.methods, cl.included) ?>
534    </table>
535  </div>
536</div>
537</td></tr>
538<?cs /if ?>
539<?cs /each ?>
540</table>
541<?cs /if ?>
542<?cs /if ?>
543<?cs
544################
545# CLASS DETAILS
546################
547?>
548<!-- XML Attributes -->
549<?cs if:subcount(class.attrs) ?>
550<?cs # this next line must be exactly like this to be parsed by eclipse ?>
551<!-- ========= FIELD DETAIL ======== -->
552<h2 class="api-section">XML attributes</h2>
553<?cs call:write_attr_details(class.attrs) ?>
554<?cs /if ?>
555
556<!-- Enum Values -->
557<?cs if:subcount(class.enumConstants) ?>
558<?cs # this next line must be exactly like this to be parsed by eclipse ?>
559<!-- ========= ENUM CONSTANTS DETAIL ======== -->
560<h2 class="api-section">Enum values</h2>
561<?cs call:write_field_details(class.enumConstants) ?>
562<?cs /if ?>
563
564<!-- Constants -->
565<?cs if:subcount(class.constants) ?>
566<?cs # this next line must be exactly like this to be parsed by eclipse ?>
567<!-- ========= ENUM CONSTANTS DETAIL ======== -->
568<h2 class="api-section">Constants</h2>
569<?cs call:write_field_details(class.constants) ?>
570<?cs /if ?>
571
572<!-- Fields -->
573<?cs if:subcount(class.fields) ?>
574<?cs # this next line must be exactly like this to be parsed by eclipse ?>
575<!-- ========= FIELD DETAIL ======== -->
576<h2 class="api-section">Fields</h2>
577<?cs call:write_field_details(class.fields) ?>
578<?cs /if ?>
579
580<!-- Public ctors -->
581<?cs if:subcount(class.ctors.public) ?>
582<?cs # this next line must be exactly like this to be parsed by eclipse ?>
583<!-- ========= CONSTRUCTOR DETAIL ======== -->
584<h2 class="api-section">Public constructors</h2>
585<?cs call:write_method_details(class.ctors.public) ?>
586<?cs /if ?>
587
588<?cs # this next line must be exactly like this to be parsed by eclipse ?>
589<!-- ========= CONSTRUCTOR DETAIL ======== -->
590<!-- Protected ctors -->
591<?cs if:subcount(class.ctors.protected) ?>
592<h2 class="api-section">Protected constructors</h2>
593<?cs call:write_method_details(class.ctors.protected) ?>
594<?cs /if ?>
595
596<?cs # this next line must be exactly like this to be parsed by eclipse ?>
597<!-- ========= METHOD DETAIL ======== -->
598<!-- Public methdos -->
599<?cs if:subcount(class.methods.public) ?>
600<h2 class="api-section">Public methods</h2>
601<?cs call:write_method_details(class.methods.public) ?>
602<?cs /if ?>
603
604<?cs # this next line must be exactly like this to be parsed by eclipse ?>
605<!-- ========= METHOD DETAIL ======== -->
606<?cs if:subcount(class.methods.protected) ?>
607<h2 class="api-section">Protected methods</h2>
608<?cs call:write_method_details(class.methods.protected) ?>
609<?cs /if ?>
610
611<?cs # the next two lines must be exactly like this to be parsed by eclipse ?>
612<!-- ========= END OF CLASS DATA ========= -->
613
614</div><!-- end jd-content -->
615<?cs if:!devsite ?>
616<?cs include:"footer.cs" ?>
617<?cs include:"trailer.cs" ?>
618<?cs /if ?>
619</body>
620</html>
621