Seiten (Page
s)
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 PageSegment
s bei.
War die
Page
in 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,
PageSegment
s, nachDocumentLayer
n indexiert, in derPage
zu registrieren.An
Page
s könnenPageListener
registriert werden, die bei Änderungen an der Seite, das heißt ihren Inhalten oder Eigenschaften, benachrichtigt werden.Die
Page
ist 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
Page
hat 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
Page
fielen, 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 einerPage
und weitere solcher Methoden werden ebenfalls vonPages
zur Verfügung gestellt.Die
Page
ist 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.