1<?cs # Create a comma separated list of annotations on obj that were in showAnnotations in Doclava ?>
2<?cs # pre is an HTML string to start the list, post is an HTML string to close the list ?>
3<?cs # for example call:show_annotations_list(cl, "<td>Annotations: ", "</td>") ?>
4<?cs # if obj has nothing on obj.showAnnotations, nothing will be output ?>
5<?cs def:show_annotations_list(obj) ?>
6    <?cs each:anno = obj.showAnnotations ?>
7      <?cs if:first(anno) ?>
8        <span class='annotation-message'>
9          Included in documentation by the annotations:
10      <?cs /if ?>
11      @<?cs var:anno.type.label ?>
12      <?cs if:last(anno) == 0 ?>
13        , &nbsp;
14      <?cs /if ?>
15      <?cs if:last(anno)?>
16        </span>
17      <?cs /if ?>
18    <?cs /each ?>
19<?cs /def ?>
20
21<?cs # Override default class_link_table to display annotations ?>
22<?cs def:class_link_table(classes) ?>
23  <?cs set:count = #1 ?>
24  <table class="jd-sumtable-expando">
25    <?cs each:cl=classes ?>
26      <tr class="api apilevel-<?cs var:cl.type.since ?>"<?cs
27          if:cl.type.since ?>
28          data-version-added="<?cs var:cl.type.since ?>"<?cs
29          /if ?><?cs
30          if:cl.type.deprecatedsince
31            ?> data-version-deprecated="<?cs var:cl.type.deprecatedsince ?>"<?cs
32          /if ?> >
33        <td class="jd-linkcol"><?cs call:type_link(cl.type) ?></td>
34        <td class="jd-descrcol" width="100%">
35          <?cs call:short_descr(cl) ?>&nbsp;
36          <?cs call:show_annotations_list(cl) ?>
37        </td>
38      </tr>
39      <?cs set:count = count + #1 ?>
40    <?cs /each ?>
41  </table>
42<?cs /def ?>
43
44<?cs
45# Prints a comma separated list of parameters with optional line breaks
46?><?cs
47def:parameter_list(params, linebreaks) ?><?cs
48  each:param = params ?><?cs
49      call:simple_type_link(param.type)?> <?cs
50      var:param.name ?><?cs
51      if: name(param)!=subcount(params)-1
52        ?>, <?cs if:linebreaks
53?>
54                <?cs /if ?><?cs
55      /if ?><?cs
56  /each ?><?cs
57/def ?><?cs
58
59# Print output for aux tags that are not "standard" javadoc tags ?><?cs
60def:aux_tag_list(tags) ?><?cs
61  each:tag = tags ?><p><?cs
62      if:tag.kind == "@memberDoc" ?><?cs call:tag_list(tag.commentTags) ?><?cs
63      elif:tag.kind == "@paramDoc" ?><?cs call:tag_list(tag.commentTags) ?><?cs
64      elif:tag.kind == "@returnDoc" ?><?cs call:tag_list(tag.commentTags) ?><?cs
65      elif:tag.kind == "@range" ?><?cs call:dump_range(tag) ?><?cs
66      elif:tag.kind == "@intDef" ?><?cs call:dump_int_def(tag) ?><?cs
67      elif:tag.kind == "@stringDef" ?><?cs call:dump_string_def(tag) ?><?cs
68      elif:tag.kind == "@permission" ?><?cs call:dump_permission(tag) ?><?cs
69      elif:tag.kind == "@service" ?><?cs call:dump_service(tag) ?><?cs
70      elif:tag.kind == "@feature" ?><?cs call:dump_feature(tag) ?><?cs
71      /if ?><?cs
72  /each ?></p><?cs
73/def ?><?cs
74
75# Print output for @range tags ?><?cs
76def:dump_range(tag) ?><?cs
77  if:tag.from && tag.to ?>Value is between <?cs var:tag.from ?> and <?cs var:tag.to ?> inclusive.<?cs
78  elif:tag.from ?>Value is <?cs var:tag.from ?> or greater.<?cs
79  elif:tag.to ?>Value is <?cs var:tag.to ?> or less.<?cs
80  /if ?><?cs
81/def ?><?cs
82
83# Print output for @intDef tags ?><?cs
84def:dump_int_def(tag) ?><?cs
85  if:tag.flag ?><?cs
86    if:subcount(tag.values) > 1 ?>Value is either <code>0</code> or combination of <?cs
87    else ?>Value is either <code>0</code> or <?cs
88    /if ?><?cs
89  else ?>Value is <?cs
90  /if ?><?cs
91  loop:i = #0, subcount(tag.values), #1 ?><?cs
92    with:val = tag.values[i] ?><?cs
93      call:tag_list(val.commentTags) ?><?cs
94      if i == subcount(tag.values) - 2 ?> or <?cs
95      elif:i < subcount(tag.values) - 2 ?>, <?cs
96      /if ?><?cs
97    /with ?><?cs
98  /loop ?>.<?cs
99/def ?><?cs
100
101# Print output for @stringDef tags ?><?cs
102def:dump_string_def(tag) ?>Value is <?cs
103  loop:i = #0, subcount(tag.values), #1 ?><?cs
104    with:val = tag.values[i] ?><?cs
105      call:tag_list(val.commentTags) ?><?cs
106      if i == subcount(tag.values) - 2 ?> or <?cs
107      elif:i < subcount(tag.values) - 2 ?>, <?cs
108      /if ?><?cs
109    /with ?><?cs
110  /loop ?>.<?cs
111/def ?><?cs
112
113# Print output for @permission tags ?><?cs
114def:dump_permission(tag) ?>Requires the <?cs
115  loop:i = #0, subcount(tag.values), #1 ?><?cs
116    with:val = tag.values[i] ?><?cs
117      call:tag_list(val.commentTags) ?><?cs
118      if i == subcount(tag.values) - 2 ?><?cs
119        if tag.any ?> or <?cs
120        else ?> and <?cs
121        /if ?><?cs
122      elif:i < subcount(tag.values) - 2 ?>, <?cs
123      /if ?><?cs
124    /with ?><?cs
125  /loop ?><?cs
126  if subcount(tag.values) > 1 ?> permissions.<?cs
127  else ?> permission.<?cs
128  /if ?><?cs
129/def ?><?cs
130
131# Print output for @service tags ?><?cs
132def:dump_service(tag) ?>Instances of this class must be obtained using <?cs
133  loop:i = #0, subcount(tag.values) - 1, #2 ?><?cs
134    call:tag_list(tag.values[i].commentTags) ?> with the argument <?cs
135    call:tag_list(tag.values[i+1].commentTags) ?><?cs
136    if i < subcount(tag.values) - 2 ?> or <?cs
137    /if ?><?cs
138  /loop ?>.<?cs
139/def ?><?cs
140
141# Print output for @feature tags ?><?cs
142def:dump_feature(tag) ?>Requires the <?cs
143  call:tag_list(tag.values[0].commentTags) ?> feature which can be detected using <?cs
144  call:tag_list(tag.values[1].commentTags) ?>.<?cs
145/def ?>
146