blob: 5cce9c76b35c55854085f2f7d49d3c819f0400fb [file] [log] [blame]
<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">&nbsp;</td>
<?cs else ?>
<tr class="package-entry">
<td class="handle">&nbsp;</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">&nbsp;</td>
<?cs else ?>
<tr class="class-entry">
<td class="handle">&nbsp;</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">&nbsp;</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>