Seiten (Pages)
So wie das Document im Wesentlichen eine Sammlung von Seiten
verkörpert, ist auch die Page zunächst primär ein Behälter: die Seite selbst hat
sehr wenig eigene Eigenschaften. Das Wesentliche, den Seiteninhalt,
tragen die PageSegments bei.
War die
Pagein der Version 4 noch eine Klasse, ist sie nun ein Interface. Die Basisimplementierung heißt, sicher nicht überraschend,BasicPage.Darüber hinaus besitzt sie Methoden, die es erlauben,
PageSegments, nachDocumentLayern indexiert, in derPagezu registrieren.An
Pages könnenPageListenerregistriert werden, die bei Änderungen an der Seite, das heißt ihren Inhalten oder Eigenschaften, benachrichtigt werden.Die
Pageist einPropertiesProvider, stellt es Ihnen also frei, ihr beliebige Eigenschaften anzuheften.
Fast noch auffälliger als das, was die Page ist, ist aber was sie nicht (mehr) ist beziehungsweise
tut:
Die
Pagehat keinen Bezug mehr zumDocument. Dies klingt zunächst vielleicht überraschend, ist aber tatsächlich so: eine Seite ›weiß‹ nicht mehr, zu welchem Dokument sie gehört. Dies sorgt in manchen – zum Glück hinreichend seltenen – Fällen dafür, dass neben einerPage-Referenz auch dasDocument›gemerkt‹ werden muss. Die Vorteile der Auflösung dieser Abhängigkeit überwiegen jedoch bei weitem. So ist beispielsweise die jetzt erlaubte gemeinsame Nutzung einer Seite in mehreren Dokumenten und das nun relativ unproblematisch mögliche ›Herumreichen‹ von Seiten eine direkte Folge davon.Eine ganze Reihe von Methoden, die lediglich zur Informationsbeschaffung dienten, aber nicht originär in das Aufgabenspektrum der
Pagefielen, haben wir, um das API übersichtlicher zu gestalten, in eine Klasse mit statischen Hilfsmethoden verschoben. So liefert beispielsweisePages.getRenderedSize(Page, RenderControls)die Größe des Renderings einerPageund weitere solcher Methoden werden ebenfalls vonPageszur Verfügung gestellt.Die
Pageist auch kein Abkömmling des RenderElement-Trees (der von jadice intern benutzte Szenengraphen für die Darstellung, der derzeit nicht Teil des öffentlichen APIs ist) mehr. Dies hilft, das API zu verschlanken, ohne die Nützlichkeit zu beeinträchtigen.


