Dokumentebenen (DocumentLayers)
Die Aufgabe von DocumentLayers ist es, Ebenen eines Dokuments zu
definieren, auf denen Seiten mit PageSegments 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 DocumentLayers 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 DocumentLayers 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 DocumentLayers, deren Bestand strikt überwacht wird.
Vielleicht ist Ihnen beim Document schon aufgefallen, dass dies nichts mehr mit
DocumentLayers 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.


