macros.cs revision 92393f10b7c1922425d8c4c77df5dd35a6d145ed
19ec60dfe771ff28a84889dced6f8fd3748d3d55eSebastian Pop<?cs # A link to a package ?><?cs
292d6d404833468120f9a86fb360691ac60585551Daniel Dunbardef:package_link(pkg) ?>
392d6d404833468120f9a86fb360691ac60585551Daniel Dunbar  <a href="<?cs var:toroot ?><?cs var:pkg.link ?>"><?cs var:pkg.name ?></a><?cs
492d6d404833468120f9a86fb360691ac60585551Daniel Dunbar/def ?>
592d6d404833468120f9a86fb360691ac60585551Daniel Dunbar
692d6d404833468120f9a86fb360691ac60585551Daniel Dunbar<?cs # A link to a type, or not if it's a primitive type
792d6d404833468120f9a86fb360691ac60585551Daniel Dunbar        link: whether to create a link at the top level, always creates links in
892d6d404833468120f9a86fb360691ac60585551Daniel Dunbar              recursive invocations.
992d6d404833468120f9a86fb360691ac60585551Daniel Dunbar              Overloaded version to support use of 'nav' parameter, which when true,
1092d6d404833468120f9a86fb360691ac60585551Daniel Dunbar              will not include the generics in the class name (good for sidenav lists)
11        Expects the following fields:
12            .name
13            .link
14            .isPrimitive
15            .superBounds.N.(more links)   (... super ... & ...)
16            .extendsBounds.N.(more links) (... extends ... & ...)
17            .typeArguments.N.(more links) (< ... >)
18?><?cs
19def:type_link_impl(type, link) ?><?cs call:type_link_impl2(type, link, "false") ?><?cs /def ?><?cs
20def:type_link_impl2(type, link, nav) ?><?cs
21  if:type.link && link=="true" ?><?cs
22    if:type.federated ?><a href="<?cs var:type.link ?>"><?cs
23      var:type.label ?></a><?cs
24    else ?><a href="<?cs var:toroot ?><?cs var:type.link ?>"><?cs var:type.label ?></a><?cs
25    /if ?><?cs
26  else ?><?cs var:type.label ?><?cs
27  /if ?><?cs
28  if:subcount(type.extendsBounds) ?><?cs
29      each:t=type.extendsBounds ?><?cs
30          if:first(t) ?>&nbsp;extends&nbsp;<?cs else ?>&nbsp;&amp;&nbsp;<?cs /if ?><?cs
31          call:type_link_impl(t, "true") ?><?cs
32      /each ?><?cs
33  /if ?><?cs
34  if:subcount(type.superBounds) ?><?cs
35      each:t=type.superBounds ?><?cs
36          if:first(t) ?>&nbsp;super&nbsp;<?cs else ?>&nbsp;&amp;&nbsp;<?cs /if ?><?cs
37          call:type_link_impl(t, "true") ?><?cs
38      /each ?><?cs
39  /if ?><?cs
40  if:subcount(type.typeArguments) && nav=="false"
41      ?>&lt;<?cs each:t=type.typeArguments ?><?cs call:type_link_impl(t, "true") ?><?cs
42          if:!last(t) ?>,&nbsp;<?cs /if ?><?cs
43      /each ?>&gt;<?cs
44  /if ?><?cs
45/def ?>
46
47<?cs
48def:simple_type_link(type)?><?cs
49  if:type.link?><?cs
50    if:type.federated ?><a href="<?cs var:type.link ?>"><?csvar:type.label ?></a><?cs
51    else ?><a href="<?cs var:toroot ?><?cs var:type.link ?>"><?cs var:type.label ?></a><?cs
52    /if?><?cs
53  else ?><?cs var:type.label ?><?cs
54  /if?><?cs
55  if:subcount(type.typeArguments)?>&lt;<?cs
56    each:t=type.typeArguments?><?cs
57      call:type_link_impl(t, "true")?><?cs
58      if:!last(t) ?>,&nbsp;<?cs
59      /if ?><?cs
60    /each ?>&gt;<?cs
61  /if ?><?cs
62/def ?>
63
64<?cs def:class_name(type) ?><?cs call:type_link_impl(type, "false") ?><?cs /def ?>
65<?cs def:type_link2(type,nav) ?><?cs call:type_link_impl2(type, "true", nav) ?><?cs /def ?>
66<?cs def:type_link(type) ?><?cs call:type_link2(type, "false") ?><?cs /def ?>
67
68<?cs # a conditional link.
69      if the "condition" parameter evals to true then the link is displayed
70      otherwise only the text is displayed
71?><?cs
72def:cond_link(text, root, path, condition) ?><?cs
73  if:condition ?><a href="<?cs var:root ?><?cs var:path ?>"><?cs /if ?><?cs var:text ?><?cs if:condition ?></a><?cs /if ?><?cs
74/def ?>
75
76<?cs # A comma separated parameter list ?><?cs
77def:parameter_list(params) ?><?cs
78  each:param = params ?><?cs
79      call:simple_type_link(param.type)?> <?cs
80      var:param.name ?><?cs
81      if: name(param)!=subcount(params)-1?>, <?cs /if ?><?cs
82  /each ?><?cs
83/def ?>
84
85<?cs # Print a list of tags (e.g. description text ?><?cs
86def:tag_list(tags) ?><?cs
87  each:tag = tags ?><?cs
88      if:tag.name == "Text" ?><?cs var:tag.text?><?cs
89      elif:tag.kind == "@more" ?><p><?cs
90      elif:tag.kind == "@see" ?><code><a href="<?cs
91        if:!tag.federatedSite ?><?cs
92          var:toroot ?><?cs
93        /if ?><?cs var:tag.href ?>"><?cs var:tag.label ?></a></code><?cs
94      elif:tag.kind == "@linkplain" ?><a href="<?cs var:tag.href ?>"><?cs var:tag.label ?></a><?cs
95      elif:tag.kind == "@seeHref" ?><a href="<?cs var:tag.href ?>"><?cs var:tag.label ?></a><?cs
96      elif:tag.kind == "@seeJustLabel" ?><?cs var:tag.label ?><?cs
97      elif:tag.kind == "@value" ?><code><a href="<?cs
98        if:!tag.federatedSite ?><?cs
99          var:toroot ?><?cs
100        /if ?><?cs var:tag.href ?>"><?cs var:tag.text ?></a></code><?cs
101      elif:tag.kind == "@code" ?><code><?cs var:tag.text ?></code><?cs
102      elif:tag.kind == "@samplecode" ?><pre><?cs var:tag.text ?></pre><?cs
103      elif:tag.name == "@sample" ?><pre><?cs var:tag.text ?></pre><?cs
104      elif:tag.name == "@include" ?><?cs var:tag.text ?><?cs
105      elif:tag.kind == "@docRoot" ?><?cs var:toroot ?><?cs
106      elif:tag.kind == "@sdkCurrent" ?><?cs var:sdk.current ?><?cs
107      elif:tag.kind == "@sdkCurrentVersion" ?><?cs var:sdk.version ?><?cs
108      elif:tag.kind == "@sdkCurrentRelId" ?><?cs var:sdk.rel.id ?><?cs
109      elif:tag.kind == "@sdkPlatformVersion" ?><?cs var:sdk.platform.version ?><?cs
110      elif:tag.kind == "@sdkPlatformApiLevel" ?><?cs var:sdk.platform.apiLevel ?><?cs
111      elif:tag.kind == "@sdkPlatformMajorMinor" ?><?cs var:sdk.platform.majorMinor ?><?cs
112      elif:tag.kind == "@sdkPlatformReleaseDate" ?><?cs var:sdk.platform.releaseDate ?><?cs
113      elif:tag.kind == "@sdkPlatformDeployableDate" ?><?cs var:sdk.platform.deployableDate ?><?cs
114      elif:tag.kind == "@adtZipVersion" ?><?cs var:adt.zip.version ?><?cs
115      elif:tag.kind == "@adtZipDownload" ?><?cs var:adt.zip.download ?><?cs
116      elif:tag.kind == "@adtZipBytes" ?><?cs var:adt.zip.bytes ?><?cs
117      elif:tag.kind == "@adtZipChecksum" ?><?cs var:adt.zip.checksum ?><?cs
118      elif:tag.kind == "@inheritDoc" ?><?cs # This is the case when @inheritDoc is in something
119                                              that doesn't inherit from anything?><?cs
120      elif:tag.kind == "@attr" ?><?cs
121      else ?>{<?cs var:tag.name?> <?cs var:tag.text ?>}<?cs
122      /if ?><?cs
123  /each ?><?cs
124/def ?>
125
126<?cs # Show the short-form description of something.  These come from shortDescr and deprecated ?><?cs
127def:short_descr(obj) ?><?cs
128  if:subcount(obj.deprecated) ?><em><?cs
129    if:obj.deprecatedsince ?>
130      This <?cs var:obj.kind ?> was deprecated
131      in API level <?cs var:obj.deprecatedsince ?>.<?cs
132    else ?>
133      This <?cs var:obj.kind ?> is deprecated.<?cs
134    /if ?>
135    <?cs call:tag_list(obj.deprecated) ?></em><?cs
136  else ?><?cs call:tag_list(obj.shortDescr) ?><?cs
137  /if ?><?cs
138/def ?>
139
140<?cs # Show the red box with the deprecated warning ?><?cs
141def:deprecated_warning(obj) ?><?cs
142  if:subcount(obj.deprecated) ?><p>
143  <p class="caution"><strong><?cs
144    if:obj.deprecatedsince ?>
145      This <?cs var:obj.kind ?> was deprecated
146      in API level <?cs var:obj.deprecatedsince ?>.<?cs
147    else ?>
148      This <?cs var:obj.kind ?> is deprecated.<?cs
149    /if ?></strong><br/>
150    <?cs call:tag_list(obj.deprecated) ?>
151  </p><?cs
152  /if ?><?cs
153/def ?>
154
155<?cs # print the See Also: section ?><?cs
156def:see_also_tags(also) ?><?cs
157  if:subcount(also) ?>
158  <div class="jd-tagdata">
159      <h5 class="jd-tagtitle">See Also</h5>
160      <ul class="nolist"><?cs
161        each:tag=also ?><li><?cs
162            if:tag.kind == "@see" ?><code><a href="<?cs var:toroot ?><?cs var:tag.href ?>"><?cs
163                    var:tag.label ?></a></code><?cs
164            elif:tag.kind == "@seeHref" ?><a href="<?cs var:tag.href ?>"><?cs var:tag.label ?></a><?cs
165            elif:tag.kind == "@seeJustLabel" ?><?cs var:tag.label ?><?cs
166            else ?>[ERROR: Unknown @see kind]<?cs
167            /if ?></li><?cs
168        /each ?>
169      </ul>
170  </div><?cs
171  /if ?>
172<?cs /def ?>
173
174<?cs # print the API Level ?><?cs
175def:since_tags(obj) ?><?cs
176if:reference.apilevels && obj.since ?>
177  Added in <a href="<?cs var:toroot ?>guide/topics/manifest/uses-sdk-element.html#ApiLevels">API level <?cs var:obj.since ?></a><?cs
178/if ?><?cs
179/def ?>
180<?cs def:federated_refs(obj) ?>
181  <?cs if:subcount(obj.federated) ?>
182    <div>
183    Also:
184    <?cs each:federated=obj.federated ?>
185      <a href="<?cs var:federated.url ?>"><?cs var:federated.name ?></a><?cs
186      if:!last(federated) ?>,<?cs /if ?>
187    <?cs /each ?>
188    </div>
189  <?cs /if ?>
190<?cs /def ?>
191<?cs # Print the long-form description for something.
192       Uses the following fields: deprecated descr seeAlso since ?><?cs
193def:description(obj) ?><?cs
194  call:deprecated_warning(obj) ?>
195  <div class="jd-tagdata jd-tagdescr"><p><?cs call:tag_list(obj.descr) ?></p></div><?cs
196  if:subcount(obj.attrRefs) ?>
197  <div class="jd-tagdata">
198      <h5 class="jd-tagtitle">Related XML Attributes</h5>
199      <ul class="nolist"><?cs
200        each:attr=obj.attrRefs ?>
201            <li><a href="<?cs var:toroot ?><?cs var:attr.href ?>"><?cs var:attr.name ?></a></li><?cs
202        /each ?>
203      </ul>
204  </div><?cs
205  /if ?><?cs
206  if:subcount(obj.paramTags) ?>
207  <div class="jd-tagdata">
208      <h5 class="jd-tagtitle">Parameters</h5>
209      <table class="jd-tagtable"><?cs
210      each:tag=obj.paramTags ?>
211        <tr>
212          <th><?cs if:tag.isTypeParameter ?>&lt;<?cs /if ?><?cs var:tag.name
213                  ?><?cs if:tag.isTypeParameter ?>&gt;<?cs /if ?></td>
214          <td><?cs call:tag_list(tag.comment) ?></td>
215        </tr><?cs
216      /each ?>
217      </table>
218  </div><?cs
219  /if ?><?cs
220  if:subcount(obj.returns) ?>
221  <div class="jd-tagdata">
222      <h5 class="jd-tagtitle">Returns</h5>
223      <ul class="nolist"><li><?cs call:tag_list(obj.returns) ?></li></ul>
224  </div><?cs
225  /if ?><?cs
226  if:subcount(obj.throws) ?>
227  <div class="jd-tagdata">
228      <h5 class="jd-tagtitle">Throws</h5>
229      <table class="jd-tagtable"><?cs
230      each:tag=obj.throws ?>
231        <tr>
232            <th><?cs call:type_link(tag.type) ?></td>
233            <td><?cs call:tag_list(tag.comment) ?></td>
234        </tr><?cs
235      /each ?>
236      </table>
237  </div><?cs
238  /if ?><?cs
239  call:see_also_tags(obj.seeAlso) ?><?cs
240/def ?>
241
242<?cs # A table of links to classes with descriptions, as in a package file or the nested classes ?><?cs
243def:class_link_table(classes) ?><?cs
244  set:count = #1 ?>
245  <table class="jd-sumtable-expando"><?cs
246      each:cl=classes ?>
247        <tr class="<?cs if:count % #2 ?>alt-color<?cs /if ?> api apilevel-<?cs var:cl.type.since ?>" >
248              <td class="jd-linkcol"><?cs call:type_link(cl.type) ?></td>
249              <td class="jd-descrcol" width="100%"><?cs call:short_descr(cl) ?>&nbsp;</td>
250          </tr><?cs set:count = count + #1 ?><?cs
251      /each ?>
252  </table><?cs
253/def ?>
254
255<?cs # A list of links to classes, for use in the side navigation of classes when viewing a package (panel nav) ?><?cs
256def:class_link_list(label, classes) ?><?cs
257  if:subcount(classes) ?>
258    <li><h2><?cs var:label ?></h2>
259      <ul><?cs
260      each:cl=classes ?>
261        <li class="api apilevel-<?cs var:cl.type.since ?>"><?cs call:type_link2(cl.type,"true") ?></li><?cs
262      /each ?>
263      </ul>
264    </li><?cs
265  /if ?><?cs
266/def ?>
267
268<?cs # A list of links to classes, for use in the side navigation of classes when viewing a class (panel nav) ?><?cs
269def:list(label, classes) ?><?cs
270  if:subcount(classes) ?>
271    <li><h2><?cs var:label ?></h2>
272      <ul><?cs
273      each:cl=classes ?>
274          <li class="<?cs if:class.name == cl.label?>selected <?cs /if ?>api apilevel-<?cs var:cl.since ?>"><?cs call:type_link2(cl,"true") ?></li><?cs
275      /each ?>
276      </ul>
277    </li><?cs
278  /if ?><?cs
279/def ?>
280
281<?cs # A list of links to packages, for use in the side navigation of packages (panel nav) ?><?cs
282def:package_link_list(packages) ?><?cs
283  each:pkg=packages ?>
284    <li class="<?cs if:(class.package.name == pkg.name) || (package.name == pkg.name)?>selected <?cs /if ?>api apilevel-<?cs var:pkg.since ?>"><?cs call:package_link(pkg) ?></li><?cs
285  /each ?><?cs
286/def ?>
287
288<?cs # An expando trigger ?><?cs
289def:expando_trigger(id, default) ?>
290  <a href="#" onclick="return toggleInherited(this, null)" id="<?cs var:id ?>" class="jd-expando-trigger closed"
291          ><img id="<?cs var:id ?>-trigger"
292          src="<?cs var:toroot ?>assets/images/triangle-<?cs var:default ?>.png"
293          class="jd-expando-trigger-img" /></a><?cs
294/def ?>
295
296<?cs # An expandable list of classes ?><?cs
297def:expandable_class_list(id, classes, default) ?>
298  <div id="<?cs var:id ?>">
299      <div id="<?cs var:id ?>-list"
300              class="jd-inheritedlinks"
301              <?cs if:default != "list" ?>style="display: none;"<?cs /if ?>
302              >
303          <?cs if:subcount(classes) <= #20 ?>
304            <?cs each:cl=classes ?>
305              <?cs call:type_link(cl.type) ?><?cs if:!last(cl) ?>,<?cs /if ?>
306            <?cs /each ?>
307          <?cs else ?>
308            <?cs set:leftovers = subcount(classes) - #15 ?>
309            <?cs loop:i = #0, #14, #1 ?>
310              <?cs with:cl=classes[i] ?>
311                <?cs call:type_link(cl.type) ?>,
312              <?cs /with ?>
313              <?cs  if:(#i == #14) ?>and
314                <a href="#" onclick="return toggleInherited(document.getElementById('<?cs
315                   var:id ?>', null))"><?cs var:leftovers ?> others.</a>
316              <?cs /if ?>
317            <?cs /loop ?>
318          <?cs /if ?>
319      </div>
320      <div id="<?cs var:id ?>-summary"
321              <?cs if:default != "summary" ?>style="display: none;"<?cs /if ?>
322              ><?cs
323          call:class_link_table(classes) ?>
324      </div>
325  </div><?cs
326/def ?>
327
328<?cs include:"components.cs" ?>
329
330