comparison src/main/resources/org/ssdt_ohio/gradle/userdoc/templates/classDocName.html @ 16:8400a7db1330

USASR-1307: update templates to groovydoc 2.3.6
author smith@nwoca.org
date Wed, 31 Dec 2014 22:35:45 +0000
parents e3c55e83c9a4
children 3741247de37a
comparison
equal deleted inserted replaced
15:e3c55e83c9a4 16:8400a7db1330
1 <!--
2 ~ Copyright (c) 2014. Ohio Department of Education. - All Rights Reserved.
3 ~ Unauthorized copying of this file, in any medium, is strictly prohibited.
4 ~ Written by State Software Development Team (http://ssdt.oecn.k12.oh.us/)
5 -->
1 6
2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
3 <!-- **************************************************************** --> 8 <!-- **************************************************************** -->
4 <!-- * PLEASE KEEP COMPLICATED EXPRESSIONS OUT OF THESE TEMPLATES, * --> 9 <!-- * PLEASE KEEP COMPLICATED EXPRESSIONS OUT OF THESE TEMPLATES, * -->
5 <!-- * i.e. only iterate & print data where possible. Thanks, Jez. * --> 10 <!-- * i.e. only iterate & print data where possible. Thanks, Jez. * -->
6 <!-- **************************************************************** --> 11 <!-- **************************************************************** -->
7 <% 12 <%
8 13
9 14 println "Generating for $classDoc (${classDoc.class})"
10 classDoc = new org.ssdt_ohio.gradle.doc.tools.UserClassDocProxy().wrap(classDoc) 15 classDoc = new org.ssdt_ohio.gradle.doc.tools.UserClassDocProxy().wrap(classDoc)
11 16
12 def title = classDoc.name() + (props.docTitle ? " (${props.docTitle})" : "") 17 def title = classDoc.name() + (props.docTitle ? " (${props.docTitle})" : "")
13 def isVisible = { it.isPublic() || (it.isProtected() && props.protectedScope == 'true') || (!it.isProtected() && !it.isPrivate() && props.packageScope == 'true') || props.privateScope == 'true' } 18 def isVisible = { it.isPublic() || (it.isProtected() && props.protectedScope == 'true') || (!it.isProtected() && !it.isPrivate() && props.packageScope == 'true') || props.privateScope == 'true' }
14 def isVisibleExt = { t -> java.lang.reflect.Modifier.isPublic(t.modifiers) || java.lang.reflect.Modifier.isProtected(t.modifiers) } 19 def isVisibleExt = { t -> java.lang.reflect.Modifier.isPublic(t.modifiers) || java.lang.reflect.Modifier.isProtected(t.modifiers) }
72 def nameFromParams = { n -> n.name() + '(' + n.parameters().collect{ param -> param.isTypeAvailable()?param.type().qualifiedTypeName():param.typeName() }.join(', ') + ')' } 77 def nameFromParams = { n -> n.name() + '(' + n.parameters().collect{ param -> param.isTypeAvailable()?param.type().qualifiedTypeName():param.typeName() }.join(', ') + ')' }
73 def nameFromJavaParams = { n -> n.name + '(' + n.parameterTypes.collect{ param -> param.name }.join(', ') + ')' } 78 def nameFromJavaParams = { n -> n.name + '(' + n.parameterTypes.collect{ param -> param.name }.join(', ') + ')' }
74 %> 79 %>
75 <html> 80 <html>
76 <head> 81 <head>
77 <!-- Generated by groovydoc (${GroovySystem.version}) on ${new Date()} --> 82 <!-- Generated by groovydoc (${GroovySystem.version}) on ${new Date()} -->
78 <title>${title}</title> 83 <title>${title}</title>
79 <meta name="date" content="${new Date().format('yyyy-MM-dd')}"> 84 <meta name="date" content="${new Date().format('yyyy-MM-dd')}">
80 <meta http-equiv="Content-Type" content="text/html; charset=${props.charset}"> 85 <meta http-equiv="Content-Type" content="text/html; charset=${props.charset}">
81 <link href="${classDoc.relativeRootPath}groovy.ico" type="image/x-icon" rel="shortcut icon"> 86 <link href="${classDoc.relativeRootPath}groovy.ico" type="image/x-icon" rel="shortcut icon">
82 <link href="${classDoc.relativeRootPath}groovy.ico" type="image/x-icon" rel="icon"> 87 <link href="${classDoc.relativeRootPath}groovy.ico" type="image/x-icon" rel="icon">
83 <link rel="stylesheet" type="text/css" href="${classDoc.relativeRootPath}stylesheet.css" title="Style"> 88 <link rel="stylesheet" type="text/css" href="${classDoc.relativeRootPath}stylesheet.css" title="Style">
84 <script type="text/javascript"> 89
85 function windowTitle() 90 <body class="center">
86 { 91 <script type="text/javascript"><!--
87 if (location.href.indexOf('is-external=true') == -1) { 92 if (location.href.indexOf('is-external=true') == -1) {
88 parent.document.title="${title}"; 93 parent.document.title="${title}";
89 }
90 } 94 }
95 //-->
91 </script> 96 </script>
92 <noscript> 97 <noscript>
98 <div>JavaScript is disabled on your browser.</div>
93 </noscript> 99 </noscript>
94
95 </head><body onload="windowTitle();" bgcolor="white">
96 <hr>
97
98 <!-- ========= START OF TOP NAVBAR ======= --> 100 <!-- ========= START OF TOP NAVBAR ======= -->
99 <A NAME="navbar_top"><!-- --></A> 101 <div class="topNav"><a name="navbar_top">
100 <TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""> 102 <!-- -->
101 <TR> 103 </a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
102 <TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> 104 <!-- -->
103 <A NAME="navbar_top_firstrow"><!-- --></A> 105 </a>
104 <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> 106 <ul class="navList" title="Navigation">
105 <TR ALIGN="center" VALIGN="top"> 107 <li><a href="${classDoc.relativeRootPath}overview-summary.html">Overview</a></li>
106 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="${classDoc.relativeRootPath}overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD> 108 <li><a href="package-summary.html">Package</a></li>
107 109 <li class="navBarCell1Rev">Class</li>
108 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD> 110 <li><a href="${classDoc.relativeRootPath}deprecated-list.html">Deprecated</a></li>
109 <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD> 111 <li><a href="${classDoc.relativeRootPath}index-all.html">Index</a></li>
110 <!--<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD> 112 <li><a href="${classDoc.relativeRootPath}help-doc.html">Help</a></li>
111 --> 113 </ul>
112 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="${classDoc.relativeRootPath}deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD> 114 </div>
113 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="${classDoc.relativeRootPath}index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD> 115
114 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="${classDoc.relativeRootPath}help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD> 116 <div class="subNav">
115 </TR> 117 <div>
116 </TABLE> 118 <ul class="navList">
117 </TD> 119 <li><a href="${classDoc.relativeRootPath}index.html?${classDoc.fullPathName}" target="_top">Frames</a></li>
118 <TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM> 120 <li><a href="${classDoc.name()}.html" target="_top">No Frames</a></li>
119 <% if (props.header) { %><b>${props.header}</b><% } %> 121 </ul>
120 </EM></TD> 122 </div>
121 </TR> 123 <div>
122 124 <ul class="subNavList">
123 <TR> 125 <li>Summary:&nbsp;</li>
124 <TD BGCOLOR="white" CLASS="NavBarCell2"><!--<FONT SIZE="-2"> 126 <%
125 &nbsp;<A HREF="${classDoc.relativeRootPath}groovy/lang/ExpandoMetaClass.ExpandoMetaProperty.html" title="class in groovy.lang"><B>PREV CLASS</B></A>&nbsp;
126
127 &nbsp;<A HREF="${classDoc.relativeRootPath}groovy/lang/GroovyClassLoader.html" title="class in groovy.lang"><B>NEXT CLASS</B></A></FONT>--></TD>
128 <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
129 <A HREF="${classDoc.relativeRootPath}index.html?${classDoc.fullPathName}.html" target="_top"><B>FRAMES</B></A> &nbsp;
130 &nbsp;<A HREF="${classDoc.name()}.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
131 &nbsp;<script type="text/javascript">
132 <!--
133 if(window==top) {
134 document.writeln('<A HREF="${classDoc.relativeRootPath}allclasses-frame.html"><B>All Classes</B></A>');
135 }
136 //-->
137 </script>
138 <noscript>
139 <A HREF="${classDoc.relativeRootPath}allclasses-frame.html"><B>All Classes</B></A>
140 </noscript>
141
142 </FONT></TD>
143
144 </TR>
145 <TR>
146 <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
147 SUMMARY:&nbsp;<%
148 if (classDoc.isAnnotationType()) { 127 if (classDoc.isAnnotationType()) {
149 def hasReq = classDoc.fields().any{ isRequired(it, "true") } 128 def hasReq = classDoc.fields().any{ isRequired(it, "true") }
150 def hasOpt = classDoc.fields().any{ isRequired(it, "false") } 129 def hasOpt = classDoc.fields().any{ isRequired(it, "false") }
151 %><% if (hasReq) { %><A HREF="#required_element_summary"><% } %>REQUIRED<% if (hasReq) { %></A><% } 130 if (hasReq) { %><li><a href="#required_element_summary"><% } %>Required<% if (hasReq) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
152 %> | <% if (hasOpt) { %><A HREF="#optional_element_summary"><% } %>OPTIONAL<% if (hasOpt) { %></A><% } %><% 131 if (hasOpt) { %><li><a href="#optional_element_summary"><% } %>Optional<% if (hasOpt) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
153 } else { 132 } else {
154 if (visibleNested) { %><A HREF="#nested_summary"><% } %>NESTED<% if (visibleNested) { %></A><% } 133 if (visibleNested) { %><li><a href="#nested_summary"><% } %>Nested<% if (visibleNested) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
155 if (classDoc.isEnum()) { 134 if (classDoc.isEnum()) {
156 %>&nbsp;|&nbsp;<% if (hasEnumConstants) { %><A HREF="#enum_constant_summary"><% } %>ENUM CONSTANTS<% if (hasEnumConstants) { %></A><% } 135 if (hasEnumConstants) { %><li><a href="#enum_constant_summary"><% } %>Enum constants<% if (hasEnumConstants) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
157 } 136 }
158 %>&nbsp;|&nbsp;<% if (hasFields) { %><A HREF="#field_summary"><% } %>FIELD<% if (hasFields) { %></A><% } 137 if (hasFields) { %><li><a href="#field_summary"><% } %>Field<% if (hasFields) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
159 if (hasProperties) { %>&nbsp;|&nbsp;<A HREF="#property_summary">PROPERTY</A><% } 138 if (hasProperties) { %><li><a href="#property_summary">Property</a></li><% } %>&nbsp;&nbsp;&nbsp;<%
160 if (classDoc.isClass()) { 139 if (classDoc.isClass()) {
161 %>&nbsp;|&nbsp;<% if (visibleConstructors) { %><A HREF="#constructor_summary"><% } %>CONSTR<% if (visibleConstructors) { %></A><% } 140 if (visibleConstructors) { %><li><a href="#constructor_summary"><% } %>Constructor<% if (visibleConstructors) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
162 } 141 }
163 %>&nbsp;|&nbsp;<% if (visibleMethods) { %><A HREF="#method_summary"><% } %>METHOD<% if (visibleMethods) { %></A><% } 142 if (visibleMethods) { %><li><a href="#method_summary"><% } %>Method<% if (visibleMethods) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
164 } 143 }
165 %></FONT></TD> 144 %>
166 <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> 145 </ul>
167 DETAIL:&nbsp;<% 146 <ul class="subNavList">
168 if (classDoc.isAnnotationType()) { 147 <li>&nbsp;|&nbsp;Detail:&nbsp;</li>
169 if (hasElements) { %><A HREF="#element_detail"><% } %>ELEMENT<% if (hasElements) { %></A><% } 148 <%
170 } else { 149 if (classDoc.isAnnotationType()) {
171 if (classDoc.isEnum()) { 150 if (hasElements) { %><li><a href="#element_detail"><% } %>Element<% if (hasElements) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
172 if (hasEnumConstants) { %><A HREF="#enum_constant_detail"><% } %>ENUM CONSTANTS<% if (hasEnumConstants) { %></A>&nbsp;|&nbsp;<% } 151 } else {
173 } 152 if (classDoc.isEnum()) {
174 if (hasFields) { %><A HREF="#field_detail"><% } %>FIELD<% if (hasFields) { %></A><% } 153 if (hasEnumConstants) { %><li><a href="#enum_constant_detail"><% } %>Enum constants<% if (hasEnumConstants) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
175 if (hasProperties) { %>&nbsp;|&nbsp;<A HREF="#prop_detail">PROPERTY</A><% } 154 }
176 if (classDoc.isClass()) { 155 if (hasFields) { %><li><a href="#field_detail"><% } %>Field<% if (hasFields) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
177 %>&nbsp;|&nbsp;<% if (visibleConstructors) { %><A HREF="#constructor_detail"><% } %>CONSTR<% if (visibleConstructors) { %></A><% } 156 if (hasProperties) { %><li><a href="#prop_detail">Property</a></li><% } %>&nbsp;&nbsp;&nbsp;<%
178 } 157 if (classDoc.isClass()) {
179 %>&nbsp;|&nbsp;<% if (visibleMethods) { %><A HREF="#method_detail"><% } %>METHOD<% if (visibleMethods) { %></A><% } 158 if (visibleConstructors) { %><li><a href="#constructor_detail"><% } %>Constructor<% if (visibleConstructors) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
180 } 159 }
181 %></FONT></TD> 160 if (visibleMethods) { %><li><a href="#method_detail"><% } %>Method<% if (visibleMethods) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
182 </TR> 161 }
183 </TABLE> 162 %>
163 </ul>
164 </div>
165 <a name="skip-navbar_top">
166 <!-- -->
167 </a></div>
184 <!-- ========= END OF TOP NAVBAR ========= --> 168 <!-- ========= END OF TOP NAVBAR ========= -->
185 169
186
187 <HR>
188 <!-- ======== START OF CLASS DATA ======== --> 170 <!-- ======== START OF CLASS DATA ======== -->
189 <H2> 171 <div class="header">
190 <% 172 <%
191 def pkg = classDoc.containingPackage().nameWithDots() 173 def pkg = classDoc.containingPackage().nameWithDots()
174 String classDesc = "${classDoc.isGroovy() ? "[Groovy]" : "[Java]"} ${classDoc.typeDescription} ${org.codehaus.groovy.tools.groovydoc.SimpleGroovyClassDoc.encodeAngleBrackets(classDoc.getNameWithTypeArgs())}"
192 if (pkg != "DefaultPackage") { 175 if (pkg != "DefaultPackage") {
193 %> 176 %>
194 <FONT SIZE="-1"> 177 <div class="subTitle">Package: <strong>${pkg}</strong></div>
195 ${pkg}</FONT> 178 <%}%>
196 <BR> 179 <h2 title="${classDesc}" class="title">${classDesc}</h2>
197 <% } %> 180 </div>
198 <span CLASS="ClassTitleFont"> ${classDoc.typeDescription} ${classDoc.name()}</span></H2> 181 <div class="contentContainer">
182 <ul class="inheritance">
199 <% 183 <%
200 def parents = classDoc.isInterface() ? classDoc.parentInterfaces : classDoc.parentClasses 184 def parents = classDoc.isInterface() ? classDoc.parentInterfaces : classDoc.parentClasses
201 if (parents.size() >= 2) { 185 if (parents.size() >= 2) {
202 %><pre><%
203 parents.eachWithIndex { p, i -> 186 parents.eachWithIndex { p, i ->
204 %>${(i > 0 ? " " * i + " " * (i - 1) + "<img src='" + classDoc.relativeRootPath + "inherit.gif'>" : "") + ( i == parents.size() - 1 ? p.qualifiedTypeName() : linkfull(p))}\n<% 187 %><li><%
205 } 188 if ( i == parents.size() - 1) {
206 %></pre><% 189 out << p.qualifiedTypeName()
190 } else {
191 %><ul class="inheritance"><% linkfull(p) %></ul></li><%
192 }
193 }
207 } 194 }
195 %>
196 </ul>
197 <div class="description">
198 <ul class="blockList">
199 <li class="blockList">
200 <%
208 if (classDoc.isInterface()) { 201 if (classDoc.isInterface()) {
209 Set interfaces = classDoc.parentInterfaces 202 Set interfaces = classDoc.parentInterfaces
210 interfaces -= classDoc 203 interfaces -= classDoc
211 if (interfaces) { 204 if (interfaces) {
212 %><dl><dt><b>All Superinterfaces:</b> </dt><dd>${interfaces.collect{ linkable(it) }.join(', ')}</dd></dl><% 205 %>
206 <dl>
207 <dt>All Superinterfaces:</dt>
208 <dd>${interfaces.collect{ linkable(it) }.join(', ')}</dd>
209 </dl><%
213 } 210 }
214 } else { 211 } else {
215 // TODO follow up the tree collecting interfaces seen? 212 // TODO follow up the tree collecting interfaces seen?
216 def interfaces = classDoc.interfaces() 213 def interfaces = classDoc.interfaces()
217 if (interfaces) { 214 if (interfaces) {
218 %><dl><dt><b>All Implemented Interfaces:</b> </dt><dd>${interfaces.collect{ linkable(it) }.join(', ')}</dd></dl><% 215 %>
219 } 216 <dl>
220 } 217 <dt>All Implemented Interfaces and Traits:</dt>
221 %><hr> 218 <dd>${interfaces.collect{ linkable(it) }.join(', ')}</dd>
222 <PRE>${annotations(classDoc, '\n') + modifiers(classDoc) + classDoc.typeSourceDescription + ' ' + classDoc.name()} 219 </dl>
220 <!-- todo: direct known subclasses -->
221 <hr>
222 <br>
223 <pre>${annotations(classDoc, '\n') + modifiers(classDoc) + classDoc.typeSourceDescription + ' ' + classDoc.name()}
223 <% if (classDoc.isInterface() && classDoc.interfaces()) { 224 <% if (classDoc.isInterface() && classDoc.interfaces()) {
224 %>extends ${classDoc.interfaces().collect{ linkable(it) }.join(', ')} 225 %>extends ${classDoc.interfaces().collect{ linkable(it) }.join(', ')}
225 <% } else if (classDoc.superclass()) { 226 <% } else if (classDoc.superclass()) {
226 %>extends ${linkable(classDoc.superclass())} 227 %>extends ${linkable(classDoc.superclass())}
227 <% } %> 228 <% } %>
228 </PRE> 229 </pre>
230 <% } %>
231 <% } %>
229 <% if (classDoc.commentText()) { %> 232 <% if (classDoc.commentText()) { %>
230 <P> 233 <p>${classDoc.commentText()}</p>
231 ${classDoc.commentText()}
232 </P>
233 <hr>
234 <% } %> 234 <% } %>
235 235 </li>
236 <!-- =========== NESTED CLASS SUMMARY =========== --> 236 </ul>
237 237 </div>
238 <A NAME="nested_summary"><!-- --></A> 238
239 <% if (visibleNested) { %> 239 <div class="summary">
240 <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> 240 <ul class="blockList">
241 <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> 241 <li class="blockList">
242 <TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2"> 242 <!-- =========== NESTED CLASS SUMMARY =========== -->
243 <B>Nested Class Summary</B></FONT></TH> 243 <% if (visibleNested) { %>
244 </TR> 244 <ul class="blockList">
245 <% for (c in visibleNested) { %> 245 <li class="blockList"><a name="nested_summary"><!-- --></a>
246 <TR BGCOLOR="white" CLASS="TableRowColor"> 246 <h3>Nested Class Summary</h3>
247 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 247 <ul class="blockList">
248 <CODE>${modifiersBrief(c) + c.typeSourceDescription}</CODE></FONT></TD> 248 <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
249 <TD> 249 <caption><span>Nested classes</span><span class="tabEnd">&nbsp;</span></caption>
250 <CODE>${linkable(c)}</CODE> 250 <tr>
251 <BR> 251 <th class="colFirst" scope="col">Modifiers</th>
252 <P>${c.firstSentenceCommentText()}</P> 252 <th class="colLast" scope="col">Name</th>
253 </TD> 253 <th class="colLast" scope="col">Description</th>
254 </TR> 254 </tr>
255 <% } %> 255 <% visibleNested.eachWithIndex { c, i -> %>
256 </TABLE> 256 <tr class="${i%2==0?'altColor':'rowColor'}">
257 &nbsp; 257 <td class="colFirst"><code><strong>${modifiersBrief(c) + c.typeSourceDescription}</strong></code>&nbsp;</td>
258 <% } %> 258 <td class="colLast"><code>${linkable(c)}</code></td>
259 259 <td class="colLast">${c.firstSentenceCommentText()}</code></td>
260 <!-- =========== ENUM CONSTANT SUMMARY =========== --> 260 </tr>
261 261 <% } %>
262 <A NAME="enum_constant_summary"><!-- --></A> 262 </table>
263 <% if (hasEnumConstants) { %> 263 </ul>
264 <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> 264 </li>
265 <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> 265 </ul>
266 <TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2"> 266 <% } %>
267 <B>Enum Constant Summary</B></FONT></TH> 267
268 </TR> 268 <!-- =========== ENUM CONSTANT SUMMARY =========== -->
269 <% for (ec in classDoc.enumConstants()) { %> 269 <% if (hasEnumConstants) { %>
270 <TR BGCOLOR="white" CLASS="TableRowColor"> 270 <ul class="blockList">
271 <TD> 271 <li class="blockList"><a name="enum_constant_summary"><!-- --></a>
272 <CODE><B><A HREF="#${ec.name()}">${ec.name()}</A></B></CODE> 272 <h3>Enum Constants Summary</h3>
273 <BR> 273 <ul class="blockList">
274 <P>${ec.firstSentenceCommentText()}</P> 274 <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Enum constants summary table">
275 </TD> 275 <caption><span>Enum constants classes</span><span class="tabEnd">&nbsp;</span></caption>
276 </TR> 276 <tr>
277 <% } %> 277 <th class="colFirst" scope="col">Enum constant</th>
278 </TABLE> 278 <th class="colLast" scope="col">Description</th>
279 &nbsp; 279 </tr>
280 <% } %> 280 <% classDoc.enumConstants().eachWithIndex { ec, i -> %>
281 281 <tr class="${i%2==0?'altColor':'rowColor'}">
282 <!-- =========== FIELD SUMMARY =========== --> 282 <td class="colFirst"><code><strong><a href="#${ec.name()}">${ec.name()}</a></strong></code></td>
283 283 <td class="colLast">${ec.firstSentenceCommentText()}</td>
284 <A NAME="field_summary"><!-- --></A> 284 </tr>
285 <% if (hasFields) { %> 285 <% } %>
286 <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> 286 </table>
287 <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> 287 </ul>
288 <TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2"> 288 </li>
289 <B>Field Summary</B></FONT></TH> 289 </ul>
290 </TR> 290 <% } %>
291 <% for (field in visibleFields) { %> 291 <!-- =========== FIELD SUMMARY =========== -->
292 <TR BGCOLOR="white" CLASS="TableRowColor"> 292 <%
293 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 293 def buffer = new StringBuilder()
294 <CODE>${modifiersBrief(field) + linkable(field.type())}</CODE></FONT></TD> 294 classes = []
295 <TD> 295 if (classDoc.isInterface()) {
296 <CODE><B><A HREF="#${field.name()}">${field.name()}</A></B></CODE> 296 classes.addAll(classDoc.interfaces().toList())
297 <BR> 297 } else {
298 <P>${field.firstSentenceCommentText()}</P> 298 if (classDoc.superclass()) classes += classDoc.superclass()
299 </TD> 299 else classes += new org.codehaus.groovy.tools.groovydoc.ExternalGroovyClassDoc(Object.class)
300 </TR> 300 }
301 <% } %> 301 visited = [classDoc] as Set
302 </TABLE> 302 while (classes) {
303 &nbsp; 303 Set nextLevel = []
304 <% } 304 classes.eachWithIndex { c,i ->
305 classes = [] 305 if (c.isInterface()) nextLevel.addAll(c.interfaces().toList())
306 if (classDoc.isInterface()) { 306 else if (c.superclass() && c.qualifiedTypeName() != 'java.lang.Object') nextLevel += c.superclass()
307 classes.addAll(classDoc.interfaces().toList()) 307 nextLevel -= visited
308 } else { 308 visited += nextLevel
309 if (classDoc.superclass()) classes += classDoc.superclass() 309 def list = []
310 else classes += new org.codehaus.groovy.tools.groovydoc.ExternalGroovyClassDoc(Object.class) 310 if (c instanceof org.codehaus.groovy.tools.groovydoc.SimpleGroovyClassDoc) {
311 } 311 list = c.fields().findAll(isVisible).collect { field ->
312 visited = [classDoc] as Set 312 "<a href='${classDoc.relativeRootPath}${c.fullPathName}.html#${field.name()}'>${field.name()}</a>"
313 while (classes) { 313 }
314 Set nextLevel = [] 314 } else {
315 classes.each { c -> 315 list = c.externalClass().fields.findAll{ isVisibleExt(it) }.collect { field ->
316 if (c.isInterface()) nextLevel.addAll(c.interfaces().toList()) 316 // "<a href='${classDoc.relativeRootPath}${c.fullPathName}.html#${field.name()}'>${field.name()}</a>"
317 else if (c.superclass() && c.qualifiedTypeName() != 'java.lang.Object') nextLevel += c.superclass() 317 field.name
318 nextLevel -= visited 318 }
319 visited += nextLevel
320 def list = []
321 if (c instanceof org.codehaus.groovy.tools.groovydoc.SimpleGroovyClassDoc) {
322 list = c.fields().findAll(isVisible).collect { field ->
323 "<a href='${classDoc.relativeRootPath}${c.fullPathName}.html#${field.name()}'>${field.name()}</a>"
324 } 319 }
325 } else { 320 if (list) {
326 list = c.externalClass().fields.findAll{ isVisibleExt(it) }.collect { field -> 321 buffer << """ <tr class="${i%2==0?'altColor':'rowColor'}">
327 // "<a href='${classDoc.relativeRootPath}${c.fullPathName}.html#${field.name()}'>${field.name()}</a>" 322 <td class="colFirst"><strong><code>${c.typeSourceDescription} ${linkable(c)}</code></strong></td>
328 field.name 323 <td class="colLast"><code>${list.join(', ')}</code></td>
324 </tr>
325 """
329 } 326 }
330 } 327 }
331 if (list) { 328 classes = nextLevel
332 if (!fieldSummaryShown) { 329 }
333 fieldSummaryShown = true 330
334 %><table BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> 331
335 <TR CLASS="TableHeadingColor"> 332 if (hasFields || buffer.length()>0) { %>
336 <TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2" CLASS="ClassHeadingFont"> 333 <ul class="blockList"><%
337 <B>Field Summary</B></FONT></TH> 334 if (hasFields) { %>
338 </TR> 335 <li class="blockList"><a name="field_summary"><!-- --></a>
339 </table> 336 <h3>Field Summary</h3>
340 &nbsp;<% 337 <ul class="blockList">
338 <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Enum constants summary table">
339 <caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
340 <tr>
341 <th class="colFirst" scope="col">Modifiers</th>
342 <th class="colLast" scope="col">Name</th>
343 <th class="colLast" scope="col">Description</th>
344 </tr>
345 <% visibleFields.eachWithIndex { field, i -> %>
346 <tr class="${i%2==0?'altColor':'rowColor'}">
347 <td class="colFirst"><code><strong>${modifiersBrief(field) + linkable(field.type())}</strong></code>&nbsp;</td>
348 <td class="colLast"><code><a href="#${field.name()}">${field.name()}</a></code></td>
349 <td class="colLast">${field.firstSentenceCommentText()}</code></td>
350 </tr>
351 <% } %>
352 </table>
353 </ul>
354 </li>
355 <% } // if (hasFields)
356 if ((buffer.length())>0) { %>
357 <li class="blockList"><a name="field_summary"><!-- --></a>
358 <ul class="blockList">
359 <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Inherited fields summary table">
360 <caption><span>Inherited fields</span><span class="tabEnd">&nbsp;</span></caption>
361 <tr>
362 <th class="colFirst" scope="col">Fields inherited from class</th>
363 <th class="colLast" scope="col">Fields</th>
364 </tr>
365 ${buffer}
366 </table>
367 </ul>
368 </li>
369 <% } // if buffer %>
370 </ul>
371 <% } // if hasFields or buffer %>
372
373 <!-- =========== PROPERTY SUMMARY =========== -->
374 <% if (hasProperties) { %>
375 <ul class="blockList">
376 <li class="blockList"><a name="property_summary"><!-- --></a>
377 <h3>Properties Summary</h3>
378 <ul class="blockList">
379 <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Properties Summary table, listing nested classes, and an explanation">
380 <caption><span>Properties</span><span class="tabEnd">&nbsp;</span></caption>
381 <tr>
382 <th class="colFirst" scope="col">Type</th>
383 <th class="colLast" scope="col">Name and description</th>
384 </tr>
385 <% visibleProperties.eachWithIndex { prop, i -> %>
386 <tr class="${i%2==0?'altColor':'rowColor'}">
387 <td class="colFirst"><code><strong>${modifiersBrief(prop) + linkable(prop.type())}</strong></code>&nbsp;</td>
388 <td class="colLast"><code><a href="#${prop.name()}"></a>${prop.name()}</code><br>${prop.firstSentenceCommentText()}</td>
389 </tr>
390 <% } %>
391 </table>
392 </ul>
393 </li>
394 </ul>
395 <% } %>
396
397 <!-- =========== ELEMENT SUMMARY =========== -->
398 <% if (hasElements) { %>
399 <ul class="blockList"><a name="element_summary"><!-- --></a>
400 <li class="blockList">
401 <h3>Element Summary</h3>
402 <% elementTypes.each { k, v ->
403 %><a name="${k}_element_summary"><!-- --></a><%
404 if (visibleFields.any{ isRequired(it, v) }) { %>
405 <ul class="blockList">
406 <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="${upcase(k)} Element Summary table">
407 <caption><span>${upcase(k)} Element Summary</span><span class="tabEnd">&nbsp;</span></caption>
408 <tr>
409 <th class="colFirst" scope="col">Type</th>
410 <th class="colLast" scope="col">Name and Description</th>
411 </tr>
412 <% visibleFields.findAll {isRequired(it, v)}.eachWithIndex { element, i -> %>
413 <tr class="${i%2==0?'altColor':'rowColor'}">
414 <td class="colFirst"><code><strong>${modifiersBrief(element) + linkable(element.type())}</strong></code>&nbsp;</td>
415 <td class="colLast"><code><a href="#${element.name()}">${element.name()}</a></code><br>${element.firstSentenceCommentText()}</td>
416 </tr>
417 <% } %>
418 </table>
419 </ul>
420 <% }
421 } //elementTypes.each %>
422 </li>
423 </ul>
424 <% } %>
425
426 <% if (visibleConstructors) { %>
427 <!-- ======== CONSTRUCTOR SUMMARY ======== -->
428 <ul class="blockList">
429 <li class="blockList"><a name="constructor_summary"><!-- --></a>
430 <h3>Constructor Summary</h3>
431 <ul class="blockList">
432 <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructors Summary table">
433 <caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
434 <tr>
435 <th class="colFirst" scope="col">Constructor and description</th>
436 </tr>
437 <% visibleConstructors.eachWithIndex { constructor, i -> %>
438 <tr class="${i%2==0?'altColor':'rowColor'}">
439 <td class="colFirst">
440 <code>${modifiersBrief(constructor)}<a href="#${nameFromParams(constructor)}">${constructor.name()}</a></strong>
441 (${paramsOf(constructor, true)})</code><br>${constructor.firstSentenceCommentText()}</td>
442 </tr>
443 <% } %>
444 </table>
445 </ul>
446 </li>
447 </ul>
448 <% } %>
449
450 <%
451 buffer = new StringBuilder()
452 Set classes = []
453 if (classDoc.isInterface()) {
454 classes.addAll(classDoc.interfaces().toList())
455 } else {
456 if (classDoc.superclass()) classes += classDoc.superclass()
457 else if (!classDoc.isTrait()) classes += new org.codehaus.groovy.tools.groovydoc.ExternalGroovyClassDoc(Object.class)
458 }
459 Set visited = [classDoc] as Set
460 while (classes) {
461 Set nextLevel = []
462 classes.eachWithIndex { c,i ->
463 if (c.isInterface()) nextLevel.addAll(c.interfaces().toList())
464 else if (c.superclass() && c.qualifiedTypeName() != 'java.lang.Object') nextLevel += c.superclass()
465 nextLevel -= visited
466 visited += nextLevel
467 def list = []
468 if (c instanceof org.codehaus.groovy.tools.groovydoc.SimpleGroovyClassDoc) {
469 list = c.methods().findAll(isVisible).collect { method ->
470 "<a href='${classDoc.relativeRootPath}${c.fullPathName}.html#${nameFromParams(method)}'>${method.name()}</a>"
471 }
472 } else {
473 list = c.externalClass().methods.findAll{ isVisibleExt(it) }.collect { method ->
474 linkable(c.externalClass().name + "#" + nameFromJavaParams(method) + " " + method.name)
475 }
341 } 476 }
342 %><table BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> 477 if (list) {
343 <tr CLASS="TableSubHeadingColor"><th ALIGN="left" COLSPAN="2"> 478 buffer << """
344 <b>Fields inherited from ${c.typeSourceDescription} ${linkable(c)}</b> 479 <tr class="${i%2==0?'altColor':'rowColor'}">
345 </th></tr> 480 <td class="colFirst"><code>${c.typeSourceDescription} ${linkable(c)}</strong></code></td>
346 <tr class="TableRowColor"><td colspan='2'>${list.join(', ')}</td></tr> 481 <td class="colLast"><code>${list.join(', ')}</code></td>
347 </table> 482 </tr>"""
348 &nbsp;<%
349 }
350 }
351 classes = nextLevel
352 }
353 %>
354
355 <!-- =========== PROPERTY SUMMARY =========== -->
356
357 <A NAME="property_summary"><!-- --></A>
358 <% if (hasProperties) { %>
359 <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
360 <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
361 <TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
362 <B>Property Summary</B></FONT></TH>
363 </TR>
364 <% for (prop in visibleProperties) { %>
365 <TR BGCOLOR="white" CLASS="TableRowColor">
366 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
367 <CODE>${modifiersBrief(prop) + linkable(prop.type())}</CODE></FONT></TD>
368 <TD>
369 <CODE><B><A HREF="#${prop.name()}">${prop.name()}</A></B></CODE>
370 <BR>
371 <P>${prop.firstSentenceCommentText()}</P>
372 </TD>
373 </TR>
374 <% } %>
375 </TABLE>
376 &nbsp;
377 <% } %>
378
379 <!-- =========== ELEMENT SUMMARY =========== -->
380
381 <% if (hasElements) { %>
382 <% elementTypes.each { k, v -> %>
383 <A NAME="${k}_element_summary"><!-- --></A>
384 <% if (visibleFields.any{ isRequired(it, v) }) { %>
385 <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
386 <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
387 <TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
388 <B>${upcase(k)} Element Summary</B></FONT></TH>
389 </TR>
390 <% for (element in visibleFields) { %>
391 <% if (isRequired(element, v)) { %>
392 <TR BGCOLOR="white" CLASS="TableRowColor">
393 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
394 <CODE>${modifiersBrief(element) + element.type().typeName()}</CODE></FONT></TD>
395 <TD>
396 <CODE><B><A HREF="#${element.name()}">${element.name()}</A></B></CODE>
397 <BR>
398 <P>${element.firstSentenceCommentText()}</P>
399 </TD>
400 </TR>
401 <% } %>
402 <% } %>
403 </TABLE>
404 <% } %>
405 &nbsp;
406 <% } %>
407 <% } %>
408
409 <!-- ======== CONSTRUCTOR SUMMARY ======== -->
410
411 <A NAME="constructor_summary"><!-- --></A>
412 <% if (visibleConstructors) { %>
413 <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
414 <TR BGCOLOR="#D5D5FF" CLASS="TableHeadingColor">
415 <TD COLSPAN=2><FONT SIZE="+2">
416 <B>Constructor Summary</B></FONT></TD>
417 </TR>
418 <% for (constructor in visibleConstructors) { %>
419 <TR BGCOLOR="white" CLASS="TableRowColor">
420 <TD>
421 <CODE>${modifiersBrief(constructor)}<B><a href="#${nameFromParams(constructor)}">${constructor.name()}</a></B>(${paramsOf(constructor, true)})</CODE>
422 <BR>
423 <P>${constructor.firstSentenceCommentText()}</P>
424 </TD>
425 </TR>
426 <% } %>
427 </TABLE>
428 &nbsp;
429 <% } %>
430
431 <!-- ========== METHOD SUMMARY =========== -->
432
433 <A NAME="method_summary"><!-- --></A>
434 <% if (visibleMethods) { %>
435 <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
436 <TR CLASS="TableHeadingColor">
437 <TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2" CLASS="ClassHeadingFont">
438 <B>Method Summary</B></FONT></TH>
439 </TR>
440 <% for (method in visibleMethods) { %>
441 <TR BGCOLOR="white" CLASS="TableRowColor">
442 <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1" CLASS="ClassItemFont">
443 <CODE>${modifiersBrief(method)}${linkable(method.returnType())}</CODE></FONT>
444 </TD>
445 <TD>
446 <CODE><b><a href="#${nameFromParams(method)}">${method.name()}</a></b>(${paramsOf(method, true)})</CODE>
447 <BR>
448 <P>${method.firstSentenceCommentText()}</P>
449 </TD>
450 </TR>
451 <% } %>
452 </TABLE>
453 &nbsp;
454 <% }
455 Set classes = []
456 if (classDoc.isInterface()) {
457 classes.addAll(classDoc.interfaces().toList())
458 } else {
459 if (classDoc.superclass()) classes += classDoc.superclass()
460 else classes += new org.codehaus.groovy.tools.groovydoc.ExternalGroovyClassDoc(Object.class)
461 }
462 Set visited = [classDoc] as Set
463 while (classes) {
464 Set nextLevel = []
465 classes.each { c ->
466 if (c.isInterface()) nextLevel.addAll(c.interfaces().toList())
467 else if (c.superclass() && c.qualifiedTypeName() != 'java.lang.Object') nextLevel += c.superclass()
468 nextLevel -= visited
469 visited += nextLevel
470 def list = []
471 if (c instanceof org.codehaus.groovy.tools.groovydoc.SimpleGroovyClassDoc) {
472 list = c.methods().findAll(isVisible).collect { method ->
473 "<a href='${classDoc.relativeRootPath}${c.fullPathName}.html#${nameFromParams(method)}'>${method.name()}</a>"
474 }
475 } else {
476 list = c.externalClass().methods.findAll{ isVisibleExt(it) }.collect { method ->
477 linkable(c.externalClass().name + "#" + nameFromJavaParams(method) + " " + method.name)
478 } 483 }
479 } 484 }
480 if (list) { 485 classes = nextLevel
481 if (!methodSummaryShown) { 486 }
482 methodSummaryShown = true 487
483 %><table BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> 488 if (visibleMethods || buffer.length()>0) { %>
484 <TR CLASS="TableHeadingColor"> 489 <!-- ========== METHOD SUMMARY =========== -->
485 <TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2" CLASS="ClassHeadingFont"> 490 <ul class="blockList">
486 <B>Method Summary</B></FONT></TH> 491 <% if (visibleMethods) { %>
487 </TR> 492 <li class="blockList"><a name="method_summary"><!-- --></a>
488 </table> 493 <h3>Methods Summary</h3>
489 &nbsp;<% 494 <ul class="blockList">
495 <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Methods Summary table">
496 <caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
497 <tr>
498 <th class="colFirst" scope="col">Type</th>
499 <th class="colLast" scope="col">Name and description</th>
500 </tr>
501 <% visibleMethods.eachWithIndex { method, i -> %>
502 <tr class="${i%2==0?'altColor':'rowColor'}">
503 <td class="colFirst"><code>${modifiersBrief(method)}${linkable(method.returnType())}</strong></code></td>
504 <td class="colLast"><code><strong><a href="#${nameFromParams(method)}">${method.name()}</a></strong>(${paramsOf(method, true)})</code><br>${method.firstSentenceCommentText()}</td>
505 </tr>
506 <% } %>
507 </table>
508 </ul>
509 </li>
510 <% } // if (visibleMethods)
511 if (buffer.length()>0) {
512 %>
513 <li class="blockList"><a name="method_summary"><!-- --></a>
514 <h3>Inherited Methods Summary</h3>
515 <ul class="blockList">
516 <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Inherited Methods Summary table">
517 <caption><span>Inherited Methods</span><span class="tabEnd">&nbsp;</span></caption>
518 <tr>
519 <th class="colFirst" scope="col">Methods inherited from class</th>
520 <th class="colLast" scope="col">Name</th>
521 </tr>
522 ${buffer}
523 </table>
524 </ul>
525 </li>
526 <%
527 } // if buffer.length%>
528 </ul>
529 <% } %>
530 </li>
531 </ul>
532 </div>
533
534 <div class="details">
535 <ul class="blockList">
536 <li class="blockList">
537 <% if (hasEnumConstants) { %>
538 <!-- ============ ENUM CONSTANT DETAIL ========== -->
539 <ul class="blockList">
540 <li class="blockList"><a name="enum_constant_detail">
541 <!-- -->
542 </a>
543 <h3>Enum Constant Detail</h3>
544 <% for (ec in classDoc.enumConstants()) { %>
545 <a name="${ec.name()}"><!-- --></a>
546 <ul class="blockListLast">
547 <li class="blockList">
548 <h4>${modifiers(ec) + '<a href="' + classDoc.relativeRootPath + classDoc.fullPathName + '.html">' + classDoc.name() + '</a>'} <strong>${ec.name()}</strong></h4>
549 <p>${ec.commentText()}</p>
550 </li>
551 </ul>
552 <% } %>
553 </li>
554 </ul>
555 <% } %>
556
557 <% if (hasFields) { %>
558 <!-- =========== FIELD DETAIL =========== -->
559 <ul class="blockList">
560 <li class="blockList"><a name="field_detail">
561 <!-- -->
562 </a>
563 <h3>Field Detail</h3>
564 <% visibleFields.each { field -> %>
565 <a name="${field.name()}"><!-- --></a>
566 <ul class="blockListLast">
567 <li class="blockList">
568 <h4>${annotations(field, '\n') + modifiersWithIgnore(field, false) + linkable(field.type())} <strong>${field.name()}</strong></h4>
569 <p>${field.commentText()}</p>
570 </li>
571 </ul>
572 <% } %>
573 </li>
574 </ul>
575 <% } %>
576
577 <% if (hasProperties) { %>
578 <!-- =========== PROPERTY DETAIL =========== -->
579 <ul class="blockList">
580 <li class="blockList"><a name="prop_detail">
581 <!-- -->
582 </a>
583 <h3>Property Detail</h3>
584 <% visibleProperties.each { prop -> %>
585 <a name="${prop.name()}"><!-- --></a>
586 <ul class="blockListLast">
587 <li class="blockList">
588 <h4>${annotations(prop, '\n') + modifiers(prop) + linkable(prop.type())} <strong>${prop.name()}</strong></h4>
589 <p>${prop.commentText()}</p>
590 </li>
591 </ul>
592 <% } %>
593 </li>
594 </ul>
595 <% } %>
596
597 <% if (hasElements) { %>
598 <!-- =========== ELEMENT DETAIL =========== -->
599 <ul class="blockList">
600 <li class="blockList"><a name="element_detail">
601 <!-- -->
602 </a>
603 <h3>Element Detail</h3>
604 <% visibleFields.each { element -> %>
605 <a name="${element.name()}"><!-- --></a>
606 <ul class="blockListLast">
607 <li class="blockList">
608 <h4>${modifiers(element) + linkable(element.type())} <strong>${element.name()}</strong></h4>
609 <p>${element.commentText()}</p>
610 </li>
611 </ul>
612 <% } %>
613 </li>
614 </ul>
615 <% } %>
616
617 <% if (visibleConstructors) { %>
618 <!-- =========== CONSTRUCTOR DETAIL =========== -->
619 <ul class="blockList">
620 <li class="blockList"><a name="constructor_detail">
621 <!-- -->
622 </a>
623 <h3>Constructor Detail</h3>
624 <% visibleConstructors.each { constructor -> %>
625 <a name="${nameFromParams(constructor)}"><!-- --></a>
626 <ul class="blockListLast">
627 <li class="blockList">
628 <h4>${annotations(constructor, '\n') + modifiers(constructor)}<strong>${constructor.name()}</strong>(${paramsOf(constructor, false)})</h4>
629 <p>${constructor.commentText()}</p>
630 </li>
631 </ul>
632 <% } %>
633 </li>
634 </ul>
635 <% } %>
636
637
638 <% if (visibleMethods) { %>
639 <!-- =========== METHOD DETAIL =========== -->
640 <ul class="blockList">
641 <li class="blockList"><a name="method_detail">
642 <!-- -->
643 </a>
644 <h3>Method Detail</h3>
645 <% visibleMethods.each { method -> %>
646 <a name="${nameFromParams(method)}"><!-- --></a>
647 <ul class="blockListLast">
648 <li class="blockList">
649 <h4>${annotations(method, '\n') + modifiers(method)}${linkable(method.returnType())} <strong>${method.name()}</strong>(${paramsOf(method, false)})</h4>
650 <p>${method.commentText()}</p>
651 </li>
652 </ul>
653 <% } %>
654 </li>
655 </ul>
656 <% } %>
657 </li>
658 </ul>
659 </div>
660
661 <!-- ========= END OF CLASS DATA ========= -->
662 <!-- ======= START OF BOTTOM NAVBAR ====== -->
663 <div class="bottomNav"><a name="navbar_bottom">
664 <!-- -->
665 </a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
666 <!-- -->
667 </a>
668 <ul class="navList" title="Navigation">
669 <li><a href="${classDoc.relativeRootPath}overview-summary.html">Overview</a></li>
670 <li><a href="package-summary.html">Package</a></li>
671 <li class="navBarCell1Rev">Class</li>
672 <li><a href="${classDoc.relativeRootPath}deprecated-list.html">Deprecated</a></li>
673 <li><a href="${classDoc.relativeRootPath}index-all.html">Index</a></li>
674 <li><a href="${classDoc.relativeRootPath}help-doc.html">Help</a></li>
675 </ul>
676 </div>
677
678 <div class="subNav">
679 <div>
680 <ul class="navList">
681 <li><a href="${classDoc.relativeRootPath}index.html?${classDoc.fullPathName}" target="_top">Frames</a></li>
682 <li><a href="${classDoc.name()}.html" target="_top">No Frames</a></li>
683 </ul>
684 </div>
685 <div>
686 <ul class="subNavList">
687 <li>Summary:&nbsp;</li>
688 <%
689 if (classDoc.isAnnotationType()) {
690 def hasReq = classDoc.fields().any{ isRequired(it, "true") }
691 def hasOpt = classDoc.fields().any{ isRequired(it, "false") }
692 if (hasReq) { %><li><a href="#required_element_summary"><% } %>Required<% if (hasReq) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
693 if (hasOpt) { %><li><a href="#optional_element_summary"><% } %>Optional<% if (hasOpt) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
694 } else {
695 if (visibleNested) { %><li><a href="#nested_summary"><% } %>Nested<% if (visibleNested) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
696 if (classDoc.isEnum()) {
697 if (hasEnumConstants) { %><li><a href="#enum_constant_summary"><% } %>Enum constants<% if (hasEnumConstants) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
698 }
699 if (hasFields) { %><li><a href="#field_summary"><% } %>Field<% if (hasFields) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
700 if (hasProperties) { %><li><a href="#property_summary">Property</a></li><% } %>&nbsp;&nbsp;&nbsp;<%
701 if (classDoc.isClass()) {
702 if (visibleConstructors) { %><li><a href="#constructor_summary"><% } %>Constructor<% if (visibleConstructors) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
703 }
704 if (visibleMethods) { %><li><a href="#method_summary"><% } %>Method<% if (visibleMethods) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
705 }
706 %>
707 </ul>
708 <ul class="subNavList">
709 <li>&nbsp;|&nbsp;Detail:&nbsp;</li>
710 <%
711 if (classDoc.isAnnotationType()) {
712 if (hasElements) { %><li><a href="#element_detail"><% } %>Element<% if (hasElements) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
713 } else {
714 if (classDoc.isEnum()) {
715 if (hasEnumConstants) { %><li><a href="#enum_constant_detail"><% } %>Enum constants<% if (hasEnumConstants) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
490 } 716 }
491 %><table BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> 717 if (hasFields) { %><li><a href="#field_detail"><% } %>Field<% if (hasFields) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
492 <tr CLASS="TableSubHeadingColor"><th ALIGN="left" COLSPAN="2"> 718 if (hasProperties) { %><li><a href="#prop_detail">Property</a></li><% } %>&nbsp;&nbsp;&nbsp;<%
493 <b>Methods inherited from ${c.typeSourceDescription} ${linkable(c)}</b> 719 if (classDoc.isClass()) {
494 </th></tr> 720 if (visibleConstructors) { %><li><a href="#constructor_detail"><% } %>Constructor<% if (visibleConstructors) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
495 <tr class="TableRowColor"><td colspan='2'>${list.join(', ')}</td></tr> 721 }
496 </table> 722 if (visibleMethods) { %><li><a href="#method_detail"><% } %>Method<% if (visibleMethods) { %></a></li><% } %>&nbsp;&nbsp;&nbsp;<%
497 &nbsp;<%
498 } 723 }
499 } 724 %>
500 classes = nextLevel 725 </ul>
501 } 726 </div>
502 %> 727 <% if (props.footer) { %><p>${props.footer}</p><% } %>
503 728 <a name="skip-navbar_bottom">
504 <P> 729 <!-- -->
505 730 </a>
506 <!-- ============ ENUM CONSTANT DETAIL ========== --> 731 </div>
507 732 </div>
508 <A NAME="enum_constant_detail"><!-- --></A> 733 <!-- ======== END OF BOTTOM NAVBAR ======= -->
509 <% if (hasEnumConstants) { %>
510 <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
511 <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
512 <TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
513 <B>Enum Constant Detail</B></FONT></TH>
514 </TR>
515 </TABLE>
516 <% for (ec in classDoc.enumConstants()) { %>
517 <A NAME="${ec.name()}"><!-- --></A><H3>${ec.name()}</H3>
518 <PRE>${modifiers(ec) + '<a href="' + classDoc.relativeRootPath + classDoc.fullPathName + '.html">' + classDoc.name() + '</a>'} <B>${ec.name()}</B></PRE>
519 <DL>
520 <DD>${ec.commentText()}
521 </DD>
522 <P>
523 </DL>
524 <HR>
525 <% } %>
526 &nbsp;
527 <% } %>
528
529 <!-- =========== FIELD DETAIL =========== -->
530
531 <A NAME="field_detail"><!-- --></A>
532 <% if (hasFields) { %>
533 <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
534 <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
535 <TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
536 <B>Field Detail</B></FONT></TH>
537 </TR>
538 </TABLE>
539 <% for (field in visibleFields) { %>
540 <A NAME="${field.name()}"><!-- --></A><H3>${field.name()}</H3>
541 <PRE>${annotations(field, '\n') + modifiersWithIgnore(field, false) + linkable(field.type())} <B>${field.name()}</B></PRE>
542 <DL>
543 <DD>${field.commentText()}
544 </DD>
545 <P>
546 </DL>
547 <HR>
548 <% } %>
549 &nbsp;
550 <% } %>
551
552 <!-- =========== PROPERTY DETAIL =========== -->
553
554 <A NAME="prop_detail"><!-- --></A>
555 <% if (hasProperties) { %>
556 <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
557 <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
558 <TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
559 <B>Property Detail</B></FONT></TH>
560 </TR>
561 </TABLE>
562 <% for (prop in visibleProperties) { %>
563 <A NAME="${prop.name()}"><!-- --></A><H3>${prop.name()}</H3>
564 <PRE>${annotations(prop, '\n') + modifiers(prop) + linkable(prop.type())} <B>${prop.name()}</B></PRE>
565 <DL>
566 <DD>${prop.commentText()}
567 </DD>
568 <P>
569 </DL>
570 <HR>
571 <% } %>
572 &nbsp;
573 <% } %>
574
575 <!-- =========== ELEMENT DETAIL =========== -->
576
577 <A NAME="element_detail"><!-- --></A>
578 <% if (hasElements) { %>
579 <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
580 <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
581 <TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
582 <B>Element Detail</B></FONT></TH>
583 </TR>
584 </TABLE>
585 <% for (element in visibleFields) { %>
586 <A NAME="${element.name()}"><!-- --></A><H3>${element.name()}</H3>
587 <PRE>${modifiers(element) + linkable(element.type())} <B>${element.name()}</B></PRE>
588 <DL>
589 <DD>${element.commentText()}
590 </DD>
591 <P>
592 </DL>
593 <HR>
594 <% } %>
595 &nbsp;
596 <% } %>
597
598 <!-- ========= CONSTRUCTOR DETAIL ======== -->
599
600 <A NAME="constructor_detail"><!-- --></A>
601 <% if (visibleConstructors) { %>
602 <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
603 <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
604 <TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
605 <B>Constructor Detail</B></FONT></TH>
606 </TR>
607 </TABLE>
608 <% for (constructor in visibleConstructors) { %>
609 <A NAME="${nameFromParams(constructor)}"><!-- --></A><H3>
610 ${constructor.name()}</H3>
611 <PRE>${annotations(constructor, '\n') + modifiers(constructor)}<B>${constructor.name()}</B>(${paramsOf(constructor, false)})</PRE>
612 <DL>
613 <DD>${constructor.commentText()}
614 </DD>
615 <P>
616 </DL>
617 <HR>
618 <% } %>
619 &nbsp;
620 <% } %>
621
622 <!-- ============ METHOD DETAIL ========== -->
623
624 <A NAME="method_detail"><!-- --></A>
625 <% if (visibleMethods) { %>
626 <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
627 <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
628 <TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
629 <B>Method Detail</B></FONT></TH>
630 </TR>
631 </TABLE>
632 <% for (method in visibleMethods) { %>
633 <A NAME="${nameFromParams(method)}"><!-- --></A><H3>
634 ${method.name()}</H3>
635 <PRE>${annotations(method, '\n') + modifiers(method)}${linkable(method.returnType())} <B>${method.name()}</B>(${paramsOf(method, false)})</PRE>
636 <DL>
637 <DD>${method.commentText()}
638 </DD>
639 <P>
640 </DL>
641 <HR>
642 <% } %>
643 &nbsp;
644 <% } %>
645
646 <!-- ========= END OF CLASS DATA ========= -->
647 <p>${props['footer']?:""}</p>
648 <hr>
649
650 </body> 734 </body>
651 </html> 735 </html>