Dokumentebenen (DocumentLayer
s)
Die Aufgabe von DocumentLayer
s ist es, Ebenen eines Dokuments zu
definieren, auf denen Seiten mit PageSegment
s besetzt sein können. In jadice 4 waren DocumentLayer
sehr eigenständige, aber auch leider sehr
eigensinnige Objekte. Die Identität eines Layers wurde durch die Identität der DocumentLayer
-Instanz bestimmt. Zwar hatten DocumentLayer
s Namen, doch konnten ohne Weiteres zwei
Layer gleichen Namens existieren, die aber zwei unterschiedliche Positionen im Ebenenstapel
bezeichneten. Jedes Document
hatte in der Regel einen eigenen Satz an DocumentLayer
s und legte darüber hinaus die Reihenfolge
der Ebenen selbst fest. Dieses Verhalten war die zweite große Hürde, die das problemlose
Verschieben von Seiten zwischen Dokumenten erschwerte oder verhinderte.
In jadice 5 gibt es künftig einen sehr begrenzten und globalen ›Zoo‹ von DocumentLayer
s, deren Bestand strikt überwacht wird.
Vielleicht ist Ihnen beim Document
schon aufgefallen, dass dies nichts mehr mit
DocumentLayer
s zu schaffen hat. Dies hat seine
Richtigkeit: die Verwaltung der Ebenen erfolgt nun über zwei statischen Methoden in DocumentLayer
: get(String)
gibt
einen Layer für einen gegebenen Namen zurück. Existiert der Layer noch nicht, wird er
erzeugt. Dadurch ist sichergestellt, dass zu einem Layer-Namen immer nur eine einzige
Instanz von DocumentLayer
existiert. Mit get(String,
int)
kann zusätzlich die standardmäßige Sortierpriorität der einzelnen Ebenen
vorgegeben werden, die allerdings nur dann greift, wenn die Ebene noch nicht existierte. Nur
in Ausnahmefällen ist es jedoch überhaupt notwendig, eigene Ebenen zu deklarieren. Für die
häufigsten Anwendungsfälle existieren in DocumentLayer
entsprechende Konstanten, die bevorzugt
verwendet werden sollten.
À propos Sortierung: War früher das Document
für die Sortierung der Layer zuständig, ist
diese Aufgabe nun vollständig den BaseRenderSettings
übertragen
worden. Dadurch können Seiten zum Beispiel problemlos in zwei Ansichten mit
unterschiedlicher Layer-Reihenfolge gerendert werden.