ReportMill 7.0 API

com.reportmill.foundation
Class RMTableOfContents

java.lang.Object
  extended byjava.util.Dictionary
      extended byjava.util.Hashtable
          extended bycom.reportmill.foundation.RMTableOfContents
All Implemented Interfaces:
java.lang.Cloneable, java.util.Map, java.io.Serializable

public class RMTableOfContents
extends java.util.Hashtable

This Hashtable subclass provides page number information for table rows in a generated report for the purpose of generating a table of contents. It is initialized from a previously generated report and provides Lists of table row data for keys of the form "ListKey.Grouping" from the original report. Tables based on these ListKeys can then reference any key from the original set of objects (and any key available to the Details table row for that grouping) and also the keys "page" and "row".

Here's an example of using RMTableOfContents:

    // Generate report normally
    RMDocument template = RMDocument.getDoc("MyTemplate.rpt");
    RMDocument report = template.generateReport(myObjects);

    // Get table of contents and generate that report
    RMTableOfContents toc = new RMTableOfContents(report);
    RMDocument tocTemplate = RMDocument.getDoc("MyTemplateTOC.rpt");
    RMDocument report2 = tocTemplate.generateReport(toc);

    // Append original report to table of contents and get PDF
    report2.addPages(report);
    report2.writePDF("MyReport.pdf");

In this example, the tocTemplate would be a simple template with a Table, who's ListKey is equal to some ListKey.Grouping from the original report (eg., "Movies.studio", for our typical Hollywood example, where the original template has a "Movies" table, with a grouping on the key "studio"). In addition to a large header row (that maybe says, "Hollywood Report - - Table of Contents"), this table would have a details row configured with a column of the form "@row@. @studio.name@ ........ @page@". Additionally, the template might want to set the URL for the Details table row to "Page:@page@" so that the table of contents entries are actually hyperlinks to the appropriate page.

It may be interesting to note (as an implementation detail only) that the "page" key in an RMTableOfContents entry actually returns the page number relative to the end of the document, in the form of a key itself, for example: "@PageMax-N@" (which gets re-evaluated before PDF generation), so that it can compensate for the length of the Table of Contents table itself.

See Also:
Serialized Form

Constructor Summary
RMTableOfContents(RMDocument aDoc)
           
 
Methods inherited from class java.util.Hashtable
clear, clone, contains, containsKey, containsValue, elements, entrySet, equals, get, hashCode, isEmpty, keys, keySet, put, putAll, remove, size, toString, values
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

RMTableOfContents

public RMTableOfContents(RMDocument aDoc)

ReportMill 7.0 API