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) ?> extends <?cs else ?> & <?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) ?> super <?cs else ?> & <?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 ?><<?cs each:t=type.typeArguments ?><?cs call:type_link_impl(t, "true") ?><?cs 42 if:!last(t) ?>, <?cs /if ?><?cs 43 /each ?>><?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)?><<?cs 56 each:t=type.typeArguments?><?cs 57 call:type_link_impl(t, "true")?><?cs 58 if:!last(t) ?>, <?cs 59 /if ?><?cs 60 /each ?>><?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 ?><<?cs /if ?><?cs var:tag.name 213 ?><?cs if:tag.isTypeParameter ?>><?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) ?> </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