OSDN Git Service

libjava/ChangeLog:
[pf3gnuchains/gcc-fork.git] / libjava / classpath / tools / resource / gnu / classpath / tools / gjdoc / doctranslets / html / classdoc.xsl
1 <?xml version="1.0" encoding="utf-8"?>\r
2 \r
3 <!-- classdoc.xsl\r
4      Copyright (C) 2003 Free Software Foundation, Inc.\r
5      \r
6      This file is part of GNU Classpath.\r
7      \r
8      GNU Classpath is free software; you can redistribute it and/or modify\r
9      it under the terms of the GNU General Public License as published by\r
10      the Free Software Foundation; either version 2, or (at your option)\r
11      any later version.\r
12       \r
13      GNU Classpath is distributed in the hope that it will be useful, but\r
14      WITHOUT ANY WARRANTY; without even the implied warranty of\r
15      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
16      General Public License for more details.\r
17      \r
18      You should have received a copy of the GNU General Public License\r
19      along with GNU Classpath; see the file COPYING.  If not, write to the\r
20      Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA\r
21      02111-1307 USA.\r
22      -->\r
23 \r
24 <!-- Creates the class descriptor files for HTML documentation. \r
25      -->\r
26 \r
27 <xsl:stylesheet version="1.0"\r
28   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"\r
29   xmlns:gjdoc="http://www.gnu.org/software/cp-tools/gjdocxml"\r
30   xmlns:html="http://www.w3.org/TR/REC-html40"\r
31   xmlns="http://www.w3.org/TR/REC-html40">\r
32 \r
33   <xsl:include href="html_common.xsl"/>\r
34 \r
35   <xsl:output method="html"\r
36     encoding="utf-8"\r
37     doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"\r
38     doctype-system="http://www.w3.org/TR/html4/loose.dtd"\r
39     indent="no"/>\r
40 \r
41   <xsl:strip-space elements="*"/>\r
42 \r
43   <xsl:template match="gjdoc:tag[attribute::kind='@see'][attribute::name='@link']">\r
44     <xsl:call-template name="output_link_tag"/>\r
45   </xsl:template>\r
46 \r
47   <xsl:template mode="pre" match="*">\r
48     <xsl:choose>\r
49       <xsl:when test="'pre'=local-name(.)">\r
50         <xsl:apply-templates mode="pre"/>\r
51       </xsl:when>\r
52       <xsl:otherwise>\r
53         <xsl:copy-of select="."/>\r
54       </xsl:otherwise>\r
55     </xsl:choose>\r
56   </xsl:template>\r
57 \r
58   <xsl:template mode="pre" match="text()[position()=last()]">\r
59     <xsl:call-template name="strip_trailing_ws">\r
60       <xsl:with-param name="p_content" select="."/>\r
61     </xsl:call-template>\r
62   </xsl:template>\r
63 \r
64   <xsl:template name="strip_trailing_ws">\r
65     <xsl:param name="p_content"/>\r
66 \r
67     <xsl:if test="normalize-space($p_content)!=''">\r
68       <xsl:choose>\r
69         <xsl:when test="normalize-space(substring($p_content, string-length($p_content), 1))=''">\r
70           <xsl:call-template name="strip_trailing_ws">\r
71             <xsl:with-param name="p_content">\r
72               <xsl:value-of select="substring($p_content, 1, string-length($p_content)-1)"/>\r
73             </xsl:with-param>\r
74           </xsl:call-template>\r
75         </xsl:when>\r
76         <xsl:otherwise>\r
77           <xsl:copy-of select="$p_content"/>\r
78         </xsl:otherwise>\r
79       </xsl:choose>\r
80     </xsl:if>\r
81   </xsl:template>\r
82 \r
83   <xsl:template match="*">\r
84     <xsl:element name="{name()}">\r
85       <xsl:for-each select="attribute::*">\r
86         <xsl:attribute name="{name()}">\r
87           <xsl:value-of select="."/>              \r
88         </xsl:attribute>\r
89       </xsl:for-each>\r
90       <xsl:choose>\r
91         <xsl:when test="name()='pre'">\r
92           <xsl:apply-templates select="." mode="pre"/>\r
93         </xsl:when>\r
94         <xsl:otherwise>\r
95           <xsl:apply-templates/>\r
96         </xsl:otherwise>\r
97       </xsl:choose>        \r
98     </xsl:element>\r
99   </xsl:template>\r
100 \r
101   <xsl:template match="/">\r
102 \r
103     <xsl:for-each select="document(concat($gjdoc.outputfile.info, '.xml'),/gjdoc:rootdoc)/gjdoc:classdoc">\r
104       <xsl:call-template name="create_classdoc"/>\r
105     </xsl:for-each>\r
106 \r
107   </xsl:template>\r
108 \r
109   <!-- For every classdoc node found in the source XML, create a corresponding -->\r
110   <!-- class rootdoc HTML file. -->\r
111   \r
112   <xsl:template name="create_classdoc">\r
113 \r
114     <xsl:variable name="v_sub_xml_filename">\r
115       <xsl:value-of select="concat(@qualifiedtypename,'.xml')"/>\r
116     </xsl:variable>  \r
117     \r
118     <html>\r
119       <head>\r
120         <xsl:call-template name="output_title">\r
121           <xsl:with-param name="p_pagetitle" select="@name"/>\r
122         </xsl:call-template>\r
123         <xsl:call-template name="include_common"/>\r
124       </head>\r
125       <body class="classdoc" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)">\r
126 \r
127         <div class="pagebody">\r
128 \r
129         <xsl:call-template name="classdoc_header"/>\r
130         <xsl:call-template name="classdoc_all_field_summary">\r
131           <xsl:with-param name="v_sub_xml_filename">\r
132             <xsl:value-of select="$v_sub_xml_filename"/>\r
133           </xsl:with-param>\r
134         </xsl:call-template>\r
135         <xsl:call-template name="classdoc_all_constructor_summary">\r
136           <xsl:with-param name="v_sub_xml_filename">\r
137             <xsl:value-of select="$v_sub_xml_filename"/>\r
138           </xsl:with-param>\r
139         </xsl:call-template>\r
140         <xsl:call-template name="classdoc_all_method_summary">\r
141           <xsl:with-param name="v_sub_xml_filename">\r
142             <xsl:value-of select="$v_sub_xml_filename"/>\r
143           </xsl:with-param>\r
144         </xsl:call-template>\r
145         \r
146         <xsl:if test="gjdoc:fielddoc">\r
147           <h1 class="classdoc-header">Field Details</h1>\r
148           \r
149           <xsl:for-each select="gjdoc:fielddoc">\r
150             <xsl:sort select="@name" order="ascending"/>\r
151             <xsl:call-template name="classdoc_field_details"/>\r
152           </xsl:for-each>\r
153         </xsl:if>\r
154         \r
155         <xsl:if test="gjdoc:constructordoc">\r
156           <h1 class="classdoc-header">Constructor Details</h1>\r
157           \r
158           <xsl:for-each select="gjdoc:constructordoc">\r
159             <xsl:sort select="gjdoc:signature/@full" order="ascending"/>\r
160             <xsl:call-template name="classdoc_method_details"/>\r
161           </xsl:for-each>\r
162         </xsl:if>\r
163         \r
164         <xsl:if test="gjdoc:methoddoc">\r
165           <h1 class="classdoc-header">Method Details</h1>\r
166           \r
167           <xsl:for-each select="gjdoc:methoddoc">\r
168             <xsl:sort select="@name" order="ascending"/>\r
169             <xsl:sort select="gjdoc:signature/@full" order="ascending"/>\r
170             <xsl:call-template name="classdoc_method_details"/>\r
171           </xsl:for-each>\r
172         </xsl:if>\r
173 \r
174         <!-- Bottom Navigation Bar -->\r
175         <xsl:call-template name="output_navbar">\r
176           <xsl:with-param name="p_show_frames" select="1"/>\r
177           <xsl:with-param name="p_show_noframes" select="1"/>\r
178           <xsl:with-param name="p_show_package" select="1"/>\r
179           <xsl:with-param name="p_show_package_tree" select="1"/>\r
180           <xsl:with-param name="p_show_full_tree" select="1"/>\r
181           <xsl:with-param name="p_show_index" select="1"/>\r
182           <xsl:with-param name="p_show_help" select="1"/> \r
183           <xsl:with-param name="p_top" select="0"/> \r
184           <xsl:with-param name="p_show_source" select="concat($gjdoc.pathtoroot, 'src-html/', translate(gjdoc:containingPackage/@name, '.', '/'), '/', @name, '.html')"/>\r
185           <xsl:with-param name="p_show_use" select="concat($gjdoc.pathtoroot, 'class-use/', translate(gjdoc:containingPackage/@name, '.', '/'), '/', @name, '.html')"/>\r
186           <xsl:with-param name="p_curr_class" select="1"/>\r
187         </xsl:call-template>\r
188         \r
189         </div>\r
190       </body>\r
191     </html>\r
192   </xsl:template>\r
193 \r
194   <!-- Output header for Class documentation  -->\r
195   \r
196   <xsl:template name="classdoc_header">\r
197     \r
198     <!-- Top Navigation Bar -->\r
199     <xsl:call-template name="output_navbar">\r
200       <xsl:with-param name="p_show_frames" select="1"/>\r
201       <xsl:with-param name="p_show_noframes" select="1"/>\r
202       <xsl:with-param name="p_show_package" select="1"/>\r
203       <xsl:with-param name="p_show_package_tree" select="1"/>\r
204       <xsl:with-param name="p_show_full_tree" select="1"/>\r
205       <xsl:with-param name="p_show_index" select="1"/>\r
206       <xsl:with-param name="p_show_help" select="1"/> \r
207       <xsl:with-param name="p_top" select="1"/> \r
208       <xsl:with-param name="p_show_source" select="concat($gjdoc.pathtoroot, 'src-html/', translate(gjdoc:containingPackage/@name, '.', '/'), '/', @name, '.html')"/>\r
209       <xsl:with-param name="p_show_use" select="concat($gjdoc.pathtoroot, 'class-use/', translate(gjdoc:containingPackage/@name, '.', '/'), '/', @name, '.html')"/>\r
210       <xsl:with-param name="p_curr_class" select="1"/>\r
211     </xsl:call-template>\r
212 \r
213     <div class="classdoc-head">\r
214 \r
215         <div class="classdoc-head-packagename classdoc-subtitle">\r
216           <xsl:value-of select="gjdoc:containingPackage/@name"/>\r
217         </div>\r
218     \r
219         <h1 class="classdoc-head-classname classdoc-title">\r
220           <xsl:choose>\r
221             <xsl:when test="gjdoc:isInterface">\r
222               <xsl:text>Interface </xsl:text>\r
223             </xsl:when>\r
224             <xsl:otherwise>\r
225               <xsl:text>Class </xsl:text>\r
226             </xsl:otherwise>\r
227           </xsl:choose>\r
228           <xsl:value-of select="@name"/>\r
229         </h1>\r
230 \r
231     </div>\r
232 \r
233     <xsl:if test="gjdoc:isClass">\r
234       <xsl:call-template name="classdoc_heritage_tree"/>\r
235     </xsl:if>\r
236 \r
237     <xsl:if test="gjdoc:containingClass">\r
238       <xsl:variable name="v_qualifiedtypename" select="attribute::qualifiedtypename"/>\r
239       <b>Enclosing Class:</b><br/>\r
240       <xsl:call-template name="link_to_class">\r
241         <xsl:with-param name="p_name" select="gjdoc:containingClass/@typename"/>\r
242         <xsl:with-param name="p_qualifiedname" select="gjdoc:containingClass/@qualifiedtypename"/>\r
243       </xsl:call-template>\r
244     </xsl:if>\r
245     \r
246     <xsl:if test="gjdoc:implements">\r
247       <p/>\r
248       <b>\r
249         <xsl:choose>\r
250           <xsl:when test="gjdoc:isInterface">\r
251             <xsl:text>All Superinterfaces:</xsl:text>\r
252           </xsl:when>\r
253           <xsl:otherwise>\r
254             <xsl:text>All Implemented Interfaces:</xsl:text>\r
255           </xsl:otherwise>\r
256         </xsl:choose>\r
257       </b>\r
258       <br/>\r
259       <xsl:for-each select="gjdoc:implements|gjdoc:superimplements">\r
260         <xsl:sort select="@qualifiedtypename" order="ascending"/>\r
261         <xsl:call-template name="link_to_class">\r
262           <xsl:with-param name="p_name" select="@typename"/>\r
263           <xsl:with-param name="p_qualifiedname" select="@qualifiedtypename"/>\r
264         </xsl:call-template>\r
265         <xsl:if test="position() != last()">\r
266           <xsl:text>, </xsl:text>\r
267         </xsl:if>\r
268       </xsl:for-each>\r
269     </xsl:if>\r
270     <p/>\r
271 \r
272     <xsl:if test="gjdoc:isInterface">\r
273       <xsl:variable name="v_qualifiedtypename" select="attribute::qualifiedtypename"/>\r
274       <xsl:variable name="v_implementors" select="document('index.xml', /)/gjdoc:rootdoc/gjdoc:classdoc[child::gjdoc:isInterface]/gjdoc:implements[attribute::qualifiedtypename=$v_qualifiedtypename]"/>\r
275       <xsl:if test="$v_implementors">\r
276         <b>All Known Direct Subinterfaces:</b><br/>\r
277         <xsl:for-each select="$v_implementors">\r
278           <xsl:sort select="../@qualifiedtypename" order="ascending"/>\r
279           <xsl:call-template name="link_to_class">\r
280             <xsl:with-param name="p_name" select="../@name"/>\r
281             <xsl:with-param name="p_qualifiedname" select="../@qualifiedtypename"/>\r
282           </xsl:call-template>\r
283           <xsl:if test="position() != last()">\r
284             <xsl:text>, </xsl:text>\r
285           </xsl:if>\r
286         </xsl:for-each>\r
287       </xsl:if>\r
288     </xsl:if>\r
289 \r
290     <xsl:if test="gjdoc:isInterface">\r
291       <xsl:variable name="v_qualifiedtypename" select="attribute::qualifiedtypename"/>\r
292       <xsl:variable name="v_implementors" select="document('index.xml', /)/gjdoc:rootdoc/gjdoc:classdoc[child::gjdoc:isClass]/gjdoc:implements[attribute::qualifiedtypename=$v_qualifiedtypename]"/>\r
293       <xsl:if test="$v_implementors">\r
294         <b>Known Implementing Classes:</b><br/>\r
295         <xsl:for-each select="$v_implementors">\r
296           <xsl:sort select="../@qualifiedtypename" order="ascending"/>\r
297           <xsl:call-template name="link_to_class">\r
298             <xsl:with-param name="p_name" select="../@name"/>\r
299             <xsl:with-param name="p_qualifiedname" select="../@qualifiedtypename"/>\r
300           </xsl:call-template>\r
301           <xsl:if test="position() != last()">\r
302             <xsl:text>, </xsl:text>\r
303           </xsl:if>\r
304         </xsl:for-each>\r
305       </xsl:if>\r
306     </xsl:if>\r
307 \r
308     <xsl:if test="gjdoc:isClass">\r
309       <xsl:variable name="v_qualifiedtypename" select="attribute::qualifiedtypename"/>\r
310       <xsl:variable name="v_implementors" select="document('index.xml', /)/gjdoc:rootdoc/gjdoc:classdoc[not(child::gjdoc:isInterface)]/gjdoc:superclass[attribute::qualifiedtypename=$v_qualifiedtypename]"/>\r
311       <xsl:if test="$v_implementors">\r
312         <b>Known Direct Subclasses:</b><br/>\r
313         <xsl:for-each select="$v_implementors">\r
314           <xsl:sort select="../@qualifiedtypename" order="ascending"/>\r
315           <xsl:call-template name="link_to_class">\r
316             <xsl:with-param name="p_name" select="../@name"/>\r
317             <xsl:with-param name="p_qualifiedname" select="../@qualifiedtypename"/>\r
318           </xsl:call-template>\r
319           <xsl:if test="position() != last()">\r
320             <xsl:text>, </xsl:text>\r
321           </xsl:if>\r
322         </xsl:for-each>\r
323       </xsl:if>\r
324     </xsl:if>\r
325 \r
326     <hr/>\r
327     \r
328     <div class="classdoc-prototype">\r
329 \r
330       <!-- 'public final class Byte' -->\r
331       \r
332       <xsl:value-of select="gjdoc:access/@scope"/><xsl:text> </xsl:text>\r
333       <xsl:if test="gjdoc:isStatic"><xsl:text>static </xsl:text></xsl:if>\r
334       <xsl:if test="gjdoc:isFinal"><xsl:text>final </xsl:text></xsl:if>\r
335       <xsl:choose>\r
336         <xsl:when test="gjdoc:isInterface">\r
337           <xsl:text>interface </xsl:text>\r
338         </xsl:when>\r
339         <xsl:otherwise>\r
340           <xsl:if test="gjdoc:isAbstract"><xsl:text>abstract </xsl:text></xsl:if>\r
341           <xsl:text>class </xsl:text>\r
342         </xsl:otherwise>\r
343       </xsl:choose>\r
344 \r
345       <xsl:call-template name="link_to_class_source"/><br/>\r
346     \r
347       <!-- 'extends Number' -->\r
348       \r
349       <xsl:if test="gjdoc:isClass and @qualifiedtypename!='java.lang.Object'">\r
350         <xsl:text>extends </xsl:text>\r
351         <xsl:call-template name="link_to_class">\r
352           <xsl:with-param name="p_qualifiedname">\r
353             <xsl:value-of select="gjdoc:superclass/@qualifiedtypename"/>\r
354           </xsl:with-param>\r
355           <xsl:with-param name="p_name">\r
356             <xsl:value-of select="gjdoc:superclass/@typename"/>\r
357           </xsl:with-param>\r
358         </xsl:call-template>\r
359         <br/>\r
360       </xsl:if>\r
361       \r
362       <!-- 'implements Comparable' -->\r
363       \r
364       <xsl:if test="gjdoc:implements">\r
365         <xsl:text>implements </xsl:text>\r
366       </xsl:if>\r
367       <xsl:for-each select="gjdoc:implements">\r
368         <xsl:call-template name="link_to_class">\r
369           <xsl:with-param name="p_qualifiedname">\r
370             <xsl:value-of select="@qualifiedtypename"/>\r
371           </xsl:with-param>\r
372           <xsl:with-param name="p_name">\r
373             <xsl:value-of select="@typename"/>\r
374           </xsl:with-param>\r
375         </xsl:call-template>\r
376         <xsl:if test="position() != last()">\r
377           <xsl:text>, </xsl:text>\r
378         </xsl:if>\r
379       </xsl:for-each>\r
380       \r
381     </div>\r
382     \r
383     <!-- Documentation -->\r
384     \r
385     <p/>\r
386     \r
387     <xsl:if test="gjdoc:inlineTags">\r
388       <div class="classdoc-class-comment-body">\r
389         <xsl:for-each select="gjdoc:inlineTags/node()">\r
390           <xsl:apply-templates select="."/>\r
391         </xsl:for-each>\r
392       </div>\r
393     </xsl:if>\r
394 \r
395     <xsl:call-template name="output_see_tags"/>\r
396     <xsl:call-template name="output_taglet_tags"/>\r
397 \r
398   </xsl:template>\r
399 \r
400   <xsl:template name="output_taglet_tags">\r
401 \r
402     <xsl:for-each select="gjdoc:tags/gjdoc:tag">\r
403       <xsl:choose>\r
404         <xsl:when test="@name='@deprecated'">\r
405           <div class="classdoc-tag-section-header">\r
406             <xsl:value-of select="'Deprecated:'"/>\r
407           </div>\r
408           <dl class="classdoc-list">\r
409             <xsl:for-each select="gjdoc:inlineTags">\r
410               <xsl:apply-templates/>\r
411             </xsl:for-each>\r
412           </dl>\r
413         </xsl:when>\r
414         <xsl:when test="@taglet-generated">\r
415           <xsl:copy-of select="./*"/>\r
416         </xsl:when>\r
417       </xsl:choose>\r
418     </xsl:for-each>\r
419     \r
420   </xsl:template>\r
421 \r
422   <!-- Output summary of all fields in this class -->\r
423 \r
424   <xsl:template name="classdoc_all_field_summary">\r
425 \r
426     <xsl:if test=".//gjdoc:fielddoc">    \r
427     \r
428       <table border="1" cellspacing="0" class="classdoc-table">\r
429         <tr><td class="section-header" colspan="2"><div class="section-header">Field Summary</div></td></tr>\r
430         <xsl:for-each select="gjdoc:fielddoc">\r
431           <xsl:sort select="@name" order="ascending"/>\r
432           <xsl:call-template name="classdoc_field_summary_tr"/>  \r
433         </xsl:for-each>\r
434       </table>\r
435 \r
436       <xsl:for-each select="gjdoc:superclass">\r
437         <xsl:call-template name="output_superclass_fields"/>\r
438       </xsl:for-each>\r
439     </xsl:if>\r
440 \r
441   </xsl:template>\r
442  \r
443   <!-- Output summary of all methods in this class -->\r
444   \r
445   <xsl:template name="classdoc_all_method_summary">\r
446     \r
447     <xsl:if test=".//gjdoc:methoddoc">\r
448       <table border="1" cellspacing="0" class="classdoc-table">\r
449         <tr><td class="section-header" colspan="2"><div class="section-header">Method Summary</div></td></tr>\r
450         <xsl:for-each select="gjdoc:methoddoc">\r
451           <xsl:sort select="@name" order="ascending"/>\r
452           <xsl:call-template name="classdoc_method_summary_tr"/>  \r
453         </xsl:for-each>\r
454       </table>\r
455 \r
456       <xsl:for-each select="gjdoc:superclass">\r
457         <xsl:call-template name="output_superclass_methods"/>\r
458       </xsl:for-each>\r
459     </xsl:if>\r
460     \r
461   </xsl:template>\r
462   \r
463   <!-- Output summary of all constructors in this class -->\r
464   \r
465   <xsl:template name="classdoc_all_constructor_summary">\r
466     \r
467     <xsl:if test=".//gjdoc:constructordoc">\r
468       <!--\r
469       <h1 class="classdoc-header">Constructor Summary</h1>\r
470 -->\r
471     \r
472       <table class="classdoc-table">\r
473         <tr><td class="section-header" colspan="2"><div class="section-header">Constructor Summary</div></td></tr>\r
474         <xsl:for-each select="gjdoc:constructordoc">\r
475           <xsl:sort select="@name" order="ascending"/>\r
476           <xsl:call-template name="classdoc_method_summary_tr"/>  \r
477         </xsl:for-each>\r
478       </table>\r
479     </xsl:if>\r
480 \r
481   </xsl:template>\r
482   \r
483   <!-- Output summary of a single field -->\r
484   \r
485   <xsl:template name="classdoc_field_summary_tr">\r
486     \r
487     <tr valign="top">\r
488 \r
489       <!-- Left table cell: Modifiers and Return Type  -->\r
490       \r
491       <td valign="top" class="member-summary field modifiers">\r
492         <code class="member-summary field modifiers">\r
493           <xsl:call-template name="output_modifiers_summary"/>\r
494           <xsl:call-template name="link_to_class">\r
495             <xsl:with-param name="p_name">\r
496               <xsl:value-of select="gjdoc:type/@typename"/>\r
497             </xsl:with-param>\r
498             <xsl:with-param name="p_qualifiedname">\r
499               <xsl:value-of select="gjdoc:type/@qualifiedtypename"/>\r
500             </xsl:with-param>\r
501           </xsl:call-template>\r
502           <xsl:value-of select="gjdoc:type/@dimension"/>\r
503         </code>\r
504       </td>\r
505 \r
506       <!-- Right table cell: name and short description  -->\r
507       \r
508       <td class="member-summary field name">\r
509         <!-- Method signature -->\r
510         \r
511         <!-- Link to field definition -->\r
512           \r
513         <code class="member-summary field name">\r
514           <a href="{concat('#',@name)}" class="field name"><xsl:value-of select="@name"/></a>\r
515         </code>\r
516 \r
517         <!-- Brief description of field -->\r
518         \r
519         <blockquote class="member-summary field comment">\r
520           <xsl:for-each select="gjdoc:firstSentenceTags/node()">\r
521             <xsl:value-of select="." disable-output-escaping="yes"/>\r
522           </xsl:for-each>\r
523         </blockquote>\r
524       </td>\r
525 \r
526     </tr>\r
527 \r
528   </xsl:template>\r
529   \r
530   <xsl:template name="output_modifiers">\r
531     <xsl:if test="gjdoc:isNative">\r
532       <xsl:text>native </xsl:text>\r
533     </xsl:if>\r
534     <xsl:if test="gjdoc:isStatic">\r
535       <xsl:text>static </xsl:text>\r
536     </xsl:if>\r
537     <xsl:if test="gjdoc:isFinal">\r
538       <xsl:text>final </xsl:text>\r
539     </xsl:if>\r
540     <xsl:if test="gjdoc:isAbstract">\r
541       <xsl:text>abstract </xsl:text>\r
542     </xsl:if>\r
543     <xsl:if test="gjdoc:isTransient">\r
544       <xsl:text>transient </xsl:text>\r
545     </xsl:if>\r
546     <xsl:if test="gjdoc:isVolatile">\r
547       <xsl:text>volatile </xsl:text>\r
548     </xsl:if>\r
549     <xsl:if test="gjdoc:isSynchronized">\r
550       <xsl:text>synchronized </xsl:text>\r
551     </xsl:if>\r
552   </xsl:template>\r
553   \r
554   <xsl:template name="output_modifiers_summary">\r
555     <xsl:if test="gjdoc:isStatic">\r
556       <xsl:text>static </xsl:text>\r
557     </xsl:if>\r
558     <xsl:if test="gjdoc:isAbstract">\r
559       <xsl:text>abstract </xsl:text>\r
560     </xsl:if>\r
561     <xsl:if test="gjdoc:isTransient">\r
562       <xsl:text>transient </xsl:text>\r
563     </xsl:if>\r
564     <xsl:if test="gjdoc:isVolatile">\r
565       <xsl:text>volatile </xsl:text>\r
566     </xsl:if>\r
567     <xsl:if test="gjdoc:isSynchronized">\r
568       <xsl:text>synchronized </xsl:text>\r
569     </xsl:if>\r
570   </xsl:template>\r
571   \r
572   <!-- Output summary of a single method or constructor -->\r
573   \r
574   <xsl:template name="classdoc_method_summary_tr">\r
575     \r
576     <tr valign="top">\r
577       \r
578       <!-- Left table cell: Modifiers and Return Type  -->\r
579       \r
580       <xsl:if test="gjdoc:isMethod">\r
581         <td valign="top" class="member-summary method modifiers">\r
582           <code class="member-summary method modifiers">\r
583             <xsl:call-template name="output_modifiers_summary"/>\r
584             <xsl:text> </xsl:text>\r
585             <xsl:call-template name="link_to_class">\r
586               <xsl:with-param name="p_qualifiedname" select="gjdoc:returns/@qualifiedtypename"/>\r
587               <xsl:with-param name="p_name" select="gjdoc:returns/@typename"/>\r
588             </xsl:call-template>\r
589             <xsl:value-of select="gjdoc:returns/@dimension"/>\r
590           </code>\r
591         </td>\r
592       </xsl:if>\r
593       \r
594       <!-- Right table cell: signature and short description  -->\r
595       \r
596       <td align="left" valign="top" class="member-summary method name">\r
597         \r
598         <!-- Method signature -->\r
599         \r
600         <code class="member-summary method signature">\r
601           \r
602           <!-- Link to method definition -->\r
603           \r
604           <a href="{concat('#',@name,gjdoc:signature/@full)}" class="member-summary method name"><xsl:value-of select="@name"/></a>\r
605           \r
606           <!-- Parameter List -->\r
607           \r
608           <xsl:text>(</xsl:text>\r
609           <xsl:call-template name="list_parameters"/>\r
610           <xsl:text>)</xsl:text>\r
611         </code>\r
612         \r
613         <!-- Brief description of Method -->\r
614         \r
615         <blockquote class="member-summary method comment">\r
616           <xsl:choose>\r
617             <xsl:when test="gjdoc:tags/gjdoc:tag[@kind='@deprecated']">\r
618               <i>\r
619                 <b>Deprecated. </b>\r
620                 <xsl:for-each select="gjdoc:tags/gjdoc:tag[@kind='@deprecated']/gjdoc:firstSentenceTags">\r
621                   <xsl:apply-templates/>\r
622                 </xsl:for-each>\r
623               </i>\r
624             </xsl:when>\r
625             <xsl:otherwise>\r
626               <xsl:for-each select="gjdoc:firstSentenceTags/node()">\r
627                 <xsl:value-of disable-output-escaping="yes" select="."/>\r
628               </xsl:for-each>\r
629             </xsl:otherwise>\r
630           </xsl:choose>\r
631         </blockquote>\r
632       </td>\r
633     </tr>\r
634     \r
635   </xsl:template>\r
636   \r
637   <!-- Output a list of all parameters of the current methoddoc  -->\r
638   <xsl:template name="list_parameters">\r
639     <xsl:for-each select="gjdoc:parameter">\r
640       <span class="parameter">\r
641         <xsl:call-template name="link_to_class">\r
642           <xsl:with-param name="p_qualifiedname">\r
643             <xsl:value-of select="@qualifiedtypename"/>\r
644           </xsl:with-param>\r
645           <xsl:with-param name="p_name">\r
646             <xsl:value-of select="@typename"/>\r
647           </xsl:with-param>\r
648         </xsl:call-template>\r
649         <xsl:value-of select="@dimension"/>\r
650         <xsl:text disable-output-escaping="no">&#160;</xsl:text>\r
651         <xsl:value-of select="@name"/>\r
652         <xsl:if test="position() != last()">\r
653           <xsl:text>,</xsl:text>\r
654         </xsl:if>\r
655       </span>\r
656       <xsl:if test="position() != last()">\r
657         <xsl:text> </xsl:text>\r
658       </xsl:if>\r
659     </xsl:for-each>\r
660   </xsl:template>\r
661   \r
662   <xsl:template name="list_parameter_details">\r
663     <dl class="classdoc-list">\r
664       <xsl:for-each select="gjdoc:parameter">\r
665         <dt>\r
666           <span class="prototype-name">\r
667             <xsl:value-of select="@name"/>\r
668           </span>\r
669           <xsl:variable name="param_position" select="position()"/>\r
670 \r
671           <xsl:if test="../gjdoc:tags/gjdoc:tag[attribute::kind='@param' and position()=$param_position]">\r
672             <xsl:text> - </xsl:text>\r
673             <xsl:for-each select="../gjdoc:tags/gjdoc:tag[attribute::kind='@param' and position()=$param_position]/gjdoc:inlineTags/node()">\r
674               <xsl:copy-of select="."/>\r
675             </xsl:for-each>\r
676           </xsl:if>\r
677         </dt>\r
678       </xsl:for-each>\r
679     </dl>\r
680   </xsl:template>\r
681 \r
682   <xsl:template name="output_see_tags">\r
683     <xsl:if test="gjdoc:tags/gjdoc:tag[attribute::kind='@see']">\r
684       <div class="classdoc-tag-section-header"><b>See Also:</b></div>\r
685 \r
686       <dl class="classdoc-list">\r
687         <xsl:for-each select="gjdoc:tags/gjdoc:tag[attribute::kind='@see']">\r
688           <!--\r
689           <xsl:variable name="v_see" select="normalize-space(.)"/>\r
690           -->\r
691           <dt>\r
692             <code>\r
693               <xsl:call-template name="output_link_tag"/>\r
694             </code>\r
695           </dt>\r
696         </xsl:for-each>\r
697       </dl>\r
698     </xsl:if>\r
699   </xsl:template>\r
700 \r
701   <!-- Output details of all fields in this class -->\r
702   \r
703   <xsl:template name="classdoc_field_details">\r
704 \r
705     <a name="{@name}" class="classdoc"> </a>\r
706     <div class="before-details"> </div>\r
707 \r
708     <h3><xsl:value-of select="@name"/></h3>\r
709     \r
710     <p class="prototype"><code>\r
711       <xsl:value-of select="gjdoc:access/@scope"/>\r
712       <xsl:text> </xsl:text>\r
713       <xsl:call-template name="output_modifiers"/>\r
714       <xsl:value-of select="gjdoc:type/@typename"/>\r
715       <xsl:value-of select="gjdoc:type/@dimension"/>\r
716       <xsl:text> </xsl:text>\r
717       <xsl:call-template name="link_to_member_source"/>\r
718     </code></p>\r
719 \r
720     <p/>\r
721     \r
722     <!-- Full comment text -->\r
723     \r
724     <xsl:if test="gjdoc:inlineTags">\r
725       <div class="classdoc-comment-body">\r
726         <xsl:for-each select="gjdoc:inlineTags/node()">\r
727           <xsl:apply-templates select="."/>\r
728         </xsl:for-each>\r
729       </div>\r
730     </xsl:if>\r
731       \r
732     <p/>\r
733 \r
734     <xsl:call-template name="output_taglet_tags"/>\r
735 \r
736     <!-- See Also -->\r
737 \r
738     <xsl:call-template name="output_see_tags"/>\r
739 \r
740     <xsl:if test="position()!=last()">\r
741       <hr/>\r
742     </xsl:if>\r
743 \r
744   </xsl:template>\r
745 \r
746   \r
747   <!-- Output details of all methods in this class -->\r
748   \r
749   <xsl:template name="classdoc_method_details">\r
750 \r
751     <a name="{concat(@name,gjdoc:signature/@full)}" class="classdoc"> </a>\r
752     <div class="before-details"> </div>\r
753     \r
754     <h3><xsl:value-of select="@name"/></h3>\r
755     \r
756     <p class="prototype"><code>\r
757       <xsl:value-of select="gjdoc:access/@scope"/>\r
758       <xsl:text> </xsl:text>\r
759       <xsl:call-template name="output_modifiers"/>\r
760       <xsl:value-of select="gjdoc:returns/@typename"/><xsl:value-of select="gjdoc:returns/@dimension"/>\r
761       <xsl:text> </xsl:text>\r
762       <xsl:call-template name="link_to_member_source"/>\r
763       <xsl:text>(</xsl:text>\r
764       <xsl:call-template name="list_parameters"/>\r
765       <xsl:text>)</xsl:text>\r
766     </code></p>    \r
767     \r
768     <!-- Full comment text -->\r
769     \r
770     <xsl:if test="gjdoc:inlineTags">\r
771       <div class="classdoc-comment-body">\r
772         <xsl:for-each select="gjdoc:inlineTags/node()">\r
773           <xsl:apply-templates select="."/>\r
774         </xsl:for-each>\r
775       </div>\r
776     </xsl:if>\r
777 \r
778     <p/>\r
779 \r
780     <xsl:call-template name="output_taglet_tags"/>\r
781     \r
782     <xsl:if test="gjdoc:parameter">\r
783       <div class="classdoc-tag-section-header"><b>Parameters:</b></div>\r
784       <xsl:call-template name="list_parameter_details"/>\r
785     </xsl:if>\r
786     \r
787     <xsl:if test="gjdoc:tags/gjdoc:tag[attribute::kind='@return']">\r
788       <div class="classdoc-tag-section-header"><b>Returns:</b></div>\r
789       <dl class="classdoc-list">\r
790         <dt>\r
791           <xsl:for-each select="gjdoc:tags/gjdoc:tag[attribute::kind='@return']">\r
792             <xsl:value-of select="." disable-output-escaping="yes"/>\r
793           </xsl:for-each>\r
794         </dt>\r
795       </dl>\r
796     </xsl:if>\r
797     \r
798     <xsl:if test="gjdoc:tags/gjdoc:tag[attribute::kind='@throws']">\r
799       <div class="classdoc-tag-section-header"><b>Throws:</b></div>\r
800       <dl class="classdoc-list">\r
801         <xsl:for-each select="gjdoc:tags/gjdoc:tag[attribute::kind='@throws']">\r
802           <dt>\r
803             <code>\r
804               <xsl:call-template name="link_to_class">\r
805                 <xsl:with-param name="p_qualifiedname">\r
806                   <xsl:value-of select="gjdoc:exception/@qualifiedtypename"/>\r
807                 </xsl:with-param>\r
808                 <xsl:with-param name="p_name">\r
809                   <xsl:value-of select="gjdoc:exception/@typename"/>\r
810                 </xsl:with-param>\r
811               </xsl:call-template>\r
812             </code>\r
813             <xsl:text> - </xsl:text>\r
814             <xsl:for-each select="gjdoc:inlineTags/node()">\r
815               <xsl:copy-of select="."/>\r
816             </xsl:for-each>\r
817           </dt>\r
818         </xsl:for-each>\r
819       </dl>\r
820     </xsl:if>\r
821     \r
822     <xsl:call-template name="output_see_tags"/>\r
823 \r
824     <xsl:if test="position()!=last()">\r
825       <hr/>\r
826     </xsl:if>\r
827     \r
828   </xsl:template>\r
829 \r
830   <!-- Recursively create the tree showing the heritage of the -->\r
831   <!-- given class -->\r
832   \r
833   <xsl:template name="create_tree">\r
834     <xsl:param name="p_superclass"/>\r
835     <xsl:param name="p_indent"/>        \r
836     <xsl:param name="p_final" select="0"/>\r
837 \r
838     <xsl:for-each select="/gjdoc:rootdoc/gjdoc:classdoc[attribute::qualifiedtypename=$p_superclass]">\r
839       \r
840       <xsl:if test="gjdoc:superclass">\r
841         <xsl:call-template name="create_tree">\r
842           <xsl:with-param name="p_indent" select="$p_indent+-1"/>\r
843           <xsl:with-param name="p_superclass" select="gjdoc:superclass/@qualifiedtypename"/>\r
844         </xsl:call-template>\r
845 \r
846         <xsl:call-template name="tree_indentation_text_empty">\r
847           <xsl:with-param name="p_indent" select="$p_indent"/>\r
848         </xsl:call-template>\r
849         <xsl:text>|\r
850 </xsl:text>\r
851       </xsl:if>\r
852     </xsl:for-each>     \r
853     \r
854     <xsl:if test="$p_indent>0"> \r
855       <xsl:call-template name="tree_indentation">\r
856         <xsl:with-param name="p_indent" select="$p_indent"/>\r
857       </xsl:call-template>\r
858     </xsl:if>   \r
859         \r
860     <xsl:choose>\r
861       <xsl:when test="$p_final=1">\r
862         <xsl:value-of select="$p_superclass"/>\r
863       </xsl:when>\r
864       <xsl:otherwise>\r
865         <xsl:call-template name="link_to_class_full">\r
866           <xsl:with-param name="p_qualifiedname">\r
867             <xsl:value-of select="$p_superclass"/>\r
868           </xsl:with-param>\r
869         </xsl:call-template>\r
870       </xsl:otherwise>\r
871     </xsl:choose>\r
872     <xsl:text>\r
873 </xsl:text>\r
874   </xsl:template>\r
875 \r
876   <!-- Recursively create the tree showing the heritage of the -->\r
877   <!-- given class, use bitmaps -->\r
878   \r
879   <xsl:template name="create_tree_gfx">\r
880     <xsl:param name="p_superclass"/>\r
881     <xsl:param name="p_indent"/>        \r
882     <xsl:param name="p_final" select="0"/>\r
883     <xsl:if test="/gjdoc:rootdoc/gjdoc:classdoc[attribute::qualifiedtypename=$p_superclass]/gjdoc:superclass">\r
884       <xsl:call-template name="create_tree">\r
885         <xsl:with-param name="p_indent" select="$p_indent+-1"/>\r
886         <xsl:with-param name="p_superclass" select="/gjdoc:rootdoc/gjdoc:classdoc[attribute::qualifiedtypename=$p_superclass]/gjdoc:superclass/@qualifiedtypename"/>\r
887       </xsl:call-template>\r
888     </xsl:if>\r
889     <tr><td>\r
890     <table cellspacing="0" cellpadding="0" border="0">\r
891       <tr>\r
892         <xsl:variable name="imagename">\r
893           <xsl:choose>\r
894             <xsl:when test="$p_final=1">\r
895               <xsl:text>images/tree-final-node.png</xsl:text>\r
896             </xsl:when>\r
897             <xsl:otherwise>\r
898               <xsl:text>images/tree-node.png</xsl:text>\r
899             </xsl:otherwise>\r
900           </xsl:choose>\r
901         </xsl:variable>\r
902 \r
903         <td>\r
904           <xsl:if test="$p_indent>0">   \r
905             <xsl:call-template name="tree_indentation">\r
906               <xsl:with-param name="p_indent"><xsl:value-of select="$p_indent"/></xsl:with-param>\r
907             </xsl:call-template>\r
908           </xsl:if>     \r
909           <img width="10" height="21" class="classdoc-tree-image" src="{$imagename}"/>\r
910         </td>\r
911 \r
912         <xsl:choose>\r
913           <xsl:when test="$p_final=1">\r
914             <td class="classdoc-tree-label"><xsl:value-of select="$p_superclass"/></td>\r
915           </xsl:when>\r
916           <xsl:otherwise>\r
917             <td class="classdoc-tree-label">\r
918               <xsl:call-template name="link_to_class_full">\r
919                 <xsl:with-param name="p_qualifiedname">\r
920                   <xsl:value-of select="$p_superclass"/>\r
921                 </xsl:with-param>\r
922               </xsl:call-template>\r
923             </td>\r
924           </xsl:otherwise>\r
925         </xsl:choose>\r
926       </tr></table>\r
927     </td></tr>\r
928   </xsl:template>\r
929 \r
930   <!-- Recursively output one character for each superclass found for the given -->\r
931   <!-- class. The length of the resulting string tells how many levels of -->\r
932   <!-- indentation are required for creating the heritage tree.  -->\r
933   \r
934   <xsl:template name="output_base_markers">\r
935     <xsl:param name="p_superclass"/>\r
936 \r
937     <xsl:for-each select="/gjdoc:rootdoc/gjdoc:classdoc[attribute::qualifiedtypename=$p_superclass]">      \r
938       <xsl:if test="gjdoc:superclass">\r
939         <xsl:call-template name="output_base_markers">\r
940           <xsl:with-param name="p_superclass" select="gjdoc:superclass/@qualifiedtypename"/>\r
941         </xsl:call-template>\r
942       </xsl:if>\r
943     </xsl:for-each>\r
944 \r
945     <xsl:text>*</xsl:text>\r
946   </xsl:template>\r
947 \r
948   <!-- Heritage Tree -->\r
949   \r
950   <xsl:template name="classdoc_heritage_tree">\r
951     \r
952     <xsl:variable name="p_qualifiedtypename" select="@qualifiedtypename"/>\r
953 \r
954     <xsl:for-each select="document('index.xml', /)/gjdoc:rootdoc/gjdoc:classdoc[@qualifiedtypename=$p_qualifiedtypename]">\r
955 \r
956       <xsl:variable name="superclass_markers">\r
957         <xsl:call-template name="output_base_markers">\r
958           <xsl:with-param name="p_superclass" select="gjdoc:superclass/@qualifiedtypename"/>\r
959         </xsl:call-template>\r
960       </xsl:variable>\r
961 \r
962       <xsl:choose>\r
963         <xsl:when test="$gjdoc.allowimages=1">\r
964           <table border="0" cellpadding="0" cellspacing="0" style="margin:0px; padding:0px; line-height:1px">\r
965             <xsl:call-template name="create_tree_gfx">\r
966               <xsl:with-param name="p_indent" select="string-length($superclass_markers)"/>\r
967               <xsl:with-param name="p_superclass" select="$p_qualifiedtypename"/>\r
968               <xsl:with-param name="p_final" select="1"/>\r
969             </xsl:call-template>\r
970           </table>\r
971         </xsl:when>\r
972         <xsl:otherwise>\r
973           <pre class="inheritance-tree">\r
974             <xsl:call-template name="create_tree">\r
975               <xsl:with-param name="p_indent" select="string-length($superclass_markers)"/>\r
976               <xsl:with-param name="p_superclass" select="$p_qualifiedtypename"/>\r
977               <xsl:with-param name="p_final" select="1"/>\r
978             </xsl:call-template>\r
979           </pre>\r
980         </xsl:otherwise>\r
981       </xsl:choose>      \r
982     </xsl:for-each>\r
983   </xsl:template>\r
984 \r
985   <xsl:template name="tree_indentation_text_empty">\r
986     <xsl:param name="p_indent"/>\r
987     <xsl:choose>\r
988       <xsl:when test="$p_indent&gt;1">\r
989         <xsl:text>   </xsl:text>\r
990         <xsl:call-template name="tree_indentation_text_empty">\r
991           <xsl:with-param name="p_indent"><xsl:value-of select="$p_indent+-1"/></xsl:with-param>\r
992         </xsl:call-template>\r
993       </xsl:when>\r
994     </xsl:choose>\r
995   </xsl:template>\r
996 \r
997   <!-- Recursively insert indentation for heritage tree. -->\r
998   <!-- This one uses images for nice, visual indentation. -->\r
999   <!-- p_indent selects level of indentation. -->\r
1000   \r
1001   <xsl:template name="tree_indentation">\r
1002     <xsl:param name="p_indent"/>\r
1003     <xsl:choose>\r
1004       <xsl:when test="$p_indent&gt;1">\r
1005         <xsl:choose>\r
1006           <xsl:when test="$gjdoc.allowimages=1">\r
1007             <img width="26" height="21" border="0" src="images/tree-empty.png" class="classdoc-tree-image"/>\r
1008           </xsl:when>\r
1009           <xsl:otherwise>\r
1010             <xsl:text>   </xsl:text>\r
1011           </xsl:otherwise>\r
1012         </xsl:choose>\r
1013 \r
1014         <xsl:call-template name="tree_indentation">\r
1015           <xsl:with-param name="p_indent"><xsl:value-of select="$p_indent+-1"/></xsl:with-param>\r
1016         </xsl:call-template>\r
1017       </xsl:when>\r
1018       <xsl:otherwise>\r
1019         <xsl:choose>\r
1020           <xsl:when test="$gjdoc.allowimages=1">\r
1021             <img width="26" height="21" border="0" src="images/tree-branch.png" class="classdoc-tree-image"/>\r
1022           </xsl:when>\r
1023           <xsl:otherwise>\r
1024             <xsl:text>+--</xsl:text>\r
1025           </xsl:otherwise>\r
1026         </xsl:choose>\r
1027       </xsl:otherwise>\r
1028     </xsl:choose>\r
1029   </xsl:template>\r
1030 \r
1031   <xsl:template name="output_superclass_methods">\r
1032     <xsl:if test="gjdoc:methoddoc">\r
1033       <table class="classdoc-table">\r
1034         <tr>\r
1035           <td class="sub-section-header">\r
1036             <div class="sub-section-header">Methods inherited from class <xsl:value-of select="@qualifiedtypename"/></div>\r
1037           </td>\r
1038         </tr>\r
1039         <tr>\r
1040           <td class="member-summary super method">\r
1041             <xsl:for-each select="gjdoc:methoddoc">\r
1042               <code class="member-summary super method"><a href="{concat($gjdoc.pathtoroot, translate(../gjdoc:containingPackage/@name, '.', '/'), '/', ../@typename, '.html#', @name, gjdoc:signature/@full)}" class="member-summary super method"><xsl:value-of select="@name"/></a><xsl:if test="position() != last()">, </xsl:if></code>\r
1043             </xsl:for-each>\r
1044           </td>\r
1045         </tr>\r
1046       </table>\r
1047     </xsl:if>\r
1048   </xsl:template>\r
1049 \r
1050 \r
1051   <xsl:template name="output_superclass_fields">\r
1052     <xsl:if test="gjdoc:fielddoc">\r
1053       <table class="classdoc-table">\r
1054         <tr>\r
1055           <td class="sub-section-header">\r
1056             <div class="sub-section-header">Fields inherited from class <xsl:value-of select="@qualifiedtypename"/></div>\r
1057           </td>\r
1058         </tr>\r
1059         <tr>\r
1060           <td class="member-summary super field">\r
1061             <xsl:for-each select="gjdoc:fielddoc">\r
1062               <code class="member-summary super field"><a href="{concat($gjdoc.pathtoroot, translate(../gjdoc:containingPackage/@name, '.', '/'), '/', ../@typename, '.html#', @name)}" class="member-summary super field"><xsl:value-of select="@name"/></a><xsl:if test="position() != last()">, </xsl:if></code>\r
1063             </xsl:for-each>\r
1064           </td>\r
1065         </tr>\r
1066       </table>\r
1067     </xsl:if>\r
1068   </xsl:template>\r
1069 \r
1070 </xsl:stylesheet>\r