| |
| <style> |
| |
| .package-label { |
| |
| } |
| |
| .class-label { |
| padding-left: 40px; |
| } |
| |
| .method-label { |
| padding-left: 80px; |
| } |
| |
| .package-entry { |
| background-color: #778899; |
| } |
| |
| .class-entry { |
| background-color: #a9a9a9; |
| } |
| |
| .method-entry { |
| background-color: #dcdcdc; |
| } |
| |
| .collapsed { |
| |
| } |
| |
| .handle { |
| width: 25px; |
| background-repeat: no-repeat; |
| } |
| |
| .handle-opened { |
| background-image: url("<?cs var:triangle.opened ?>"); |
| } |
| |
| .handle-closed { |
| background-image: url("<?cs var:triangle.closed?>"); |
| } |
| |
| .tbody { |
| padding: 0; |
| margin: 0; |
| } |
| |
| #hierarchy { |
| border-collapse:collapse; |
| } |
| |
| </style> |
| |
| <script type="text/javascript" |
| src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> |
| |
| <script type="text/javascript"> |
| function collapsePackage(tr) { |
| var table = $("#hierarchy")[0]; |
| |
| if (!$(tr).hasClass("collapsable")) { |
| return; |
| } |
| |
| if ($(tr).hasClass("collapsed")) { |
| $(tr).removeClass("collapsed"); |
| $(tr).children(".handle").addClass("handle-opened"); |
| $(tr).children(".handle").removeClass("handle-closed"); |
| if (tr.rowIndex + 1 < table.rows.length) { |
| var tbody = table.rows[tr.rowIndex + 1].parentNode; |
| $(tbody).show(); |
| } |
| } else { |
| $(tr).addClass("collapsed"); |
| $(tr).children(".handle").removeClass("handle-opened"); |
| $(tr).children(".handle").addClass("handle-closed"); |
| if (tr.rowIndex + 1 < table.rows.length |
| && $(table.rows[tr.rowIndex + 1]).hasClass("class-entry")) { |
| var tbody = table.rows[tr.rowIndex + 1].parentNode; |
| $(tbody).hide(); |
| } |
| } |
| } |
| |
| function collapseClass(tr) { |
| var table = $("#hierarchy")[0]; |
| |
| if (!$(tr).hasClass("collapsable")) { |
| return; |
| } |
| |
| if ($(tr).hasClass("collapsed")) { |
| $(tr).removeClass("collapsed"); |
| $(tr).children(".handle").addClass("handle-opened"); |
| $(tr).children(".handle").removeClass("handle-closed"); |
| var i = tr.rowIndex + 1; |
| while (i < table.rows.length && $(table.rows[i]).hasClass("method-entry")) { |
| $(table.rows[i++]).show(); |
| } |
| } else { |
| $(tr).addClass("collapsed"); |
| $(tr).children(".handle").removeClass("handle-opened"); |
| $(tr).children(".handle").addClass("handle-closed"); |
| var i = tr.rowIndex + 1; |
| while (i < table.rows.length && $(table.rows[i]).hasClass("method-entry")) { |
| $(table.rows[i++]).hide(); |
| } |
| } |
| } |
| |
| $(function() { |
| $(".package-entry").click(function() { |
| collapsePackage(this); |
| }); |
| |
| $(".class-entry").click(function() { |
| collapseClass(this); |
| }); |
| }); |
| </script> |
| |
| <table border="0" id="hierarchy"> |
| <tr> |
| <th> </th> |
| <?cs each:site = sites ?> |
| <th><?cs var:site.name ?></th> |
| <?cs /each ?> |
| </tr> |
| <?cs each:package = packages ?> |
| <?cs if:subcount(package.classes) ?> |
| <tr class="package-entry collapsable"> |
| <td class="handle handle-opened"> </td> |
| <?cs else ?> |
| <tr class="package-entry"> |
| <td class="handle"> </td> |
| <?cs /if ?> |
| <td class="package-label"><?cs var:package.name ?></td> |
| <?cs each:site = package.sites ?> |
| <td> |
| <?cs if:site.hasPackage ?> |
| <a href="<?cs var:site.link ?>">Link</a> |
| <?cs else ?> |
| N/A |
| <?cs /if ?> |
| </td> |
| <?cs /each ?> |
| </tr> |
| <tbody class="package-contents"> |
| <?cs each:class = package.classes ?> |
| <?cs if:subcount(class.methods) ?> |
| <tr class="class-entry collapsable"> |
| <td class="handle handle-opened"> </td> |
| <?cs else ?> |
| <tr class="class-entry"> |
| <td class="handle"> </td> |
| <?cs /if ?> |
| <td class="class-label"><?cs var:class.qualifiedName ?></td> |
| <?cs each:site = class.sites ?> |
| <td> |
| <?cs if:site.hasClass ?> |
| <a href="<?cs var:site.link ?>">Link</a> |
| <?cs else ?> |
| N/A |
| <?cs /if ?> |
| </td> |
| <?cs /each ?> |
| </tr> |
| <?cs each:method = class.methods ?> |
| <tr class="method-entry"> |
| <td class="handle"> </td> |
| <td class="method-label"><?cs var:method.signature ?></td> |
| <?cs each:site = method.sites ?> |
| <td> |
| <?cs if:site.hasMethod ?> |
| <a href="<?cs var:site.link ?>">Link</a> |
| <?cs else ?> |
| N/A |
| <?cs /if ?> |
| </td> |
| <?cs /each ?> |
| </tr> |
| <?cs /each ?><?cs # methods ?> |
| <?cs /each ?><?cs # classes ?> |
| </tbody> |
| <?cs /each ?><?cs # packages ?> |
| </table> |