Anzeige von Dokumenten

Auch wenn die Funktionalitäten der jadice document platform weit über das einfache Anzeigen von Dokumenten hinausgehen, ist die Darstellung am Bildschirm doch einer der häufigsten Einsatzzwecke. Die folgenden Abschnitte gehen auf die zu diesem Zweck existierenden Klassen ein. Der in „Das Dokumentenmodell“ erläuterte Dokumentbegriff wird als bekannt vorausgesetzt. Nähere Details zum Umgang mit Dokumenten und Seiten folgen in „Dokumente in jadice“ und „Seiten in jadice“

Klassenhierarchie

Die folgenden Klassen existieren zur Anzeige von Dokumentinhalten:

ViewComponent

Die ViewComponent stellt als abstrakte Basisklasse die Querschnittsfunktionalität ihrer beiden Realisierungen, PageView und ThumbnailView, zur Verfügung. Hauptaufgabe einer ViewComponent ist die Anzeige von Dokumentinhalten. Zu diesem Zweck hält sie eine Dokumentreferenz vor. Die Inhalte des referenzierten Dokuments werden seitenbasiert angezeigt.

PageView

Die PageView ist die zentrale Anzeigekomponente innerhalb der jadice document platform. Als konkrete Realisierung der ViewComponent übernimmt sie die Verwaltung, Handhabung und Darstellung von Dokumenten und Seiten. Ob eine oder mehrere Seiten gleichzeitig angezeigt werden und wie im letzteren Fall deren Anordnung erfolgt, wird durch das gesetzte Seitenlayout bestimmt (Details unter „Seitenlayouts der PageView).

ThumbnailView

Die ThumbnailView dient dazu, sämtliche Seiten eines Dokuments verkleinert in einer Übersicht darzustellen. Diese kann auch zur Navigation innerhalb des Dokuments genutzt werden. Die im Viewer angezeigte Seite, ebenso wie alle selektierten Miniaturen, sind farblich hevorgehoben. Zusätzlich besteht die Möglichkeit, Seiten des Dokuments mit Hilfe der Maus umzusortieren. Diese Änderung der Reihenfolge wird automatisch in anderen ViewComponents, die dasselbe Dokument anzeigen, widergespiegelt.[11]

Interaktion mit der Seitenanzeige

Die ViewComponent bietet ein Konzept, mit dem – über die reine Anzeige von Dokumenten hinausgehend – dem Nutzer zusätzliche Interaktionsmöglichkeiten gegeben werden können. Um dies zu erreichen können selbst definierte Werkzeuge (Instanzen von Tool) an eine ViewComponent angedockt werden. Diese erhalten Input-Events und können mit der dargestellten Seite interagieren. Zudem können sie Inhalte über dem eigentlichen Dokument rendern und Beiträge für das Kontextmenü leisten.

Weitere Informationen zur Verwendung und den Möglichkeiten der Tool-API finden sich in „Tools“.

Umgang mit Dokumenten

Sowohl PageView als auch ThumbnailView bieten für den Umgang mit Dokumenten folgende Methoden an:

getDocument()

Diese Methode liefert eine Referenz auf das aktuell angezeigte Dokument. Der Aufruf dieser Methode kann jederzeit unabhängig vom Swing Event Dispatch Thread stattfinden.

setDocument(...)

Diese Methode ändert das anzuzeigende Dokument. Der Aufruf dieser Methode muss zwingend auf dem Swing Event Dispatch Thread stattfinden.

cleanup()

Diese Methode entfernt das Dokument. Der Aufruf dieser Methode kann jederzeit unabhängig von Swing Event Dispatch Thread stattfinden.

Instanzen von PageView oder ThumbnailView können immer genau ein Dokument darstellen. Dieses kann ihnen unabhängig von seinem Ladezustand übergeben werden. Änderungen am Dokument erkennen sie selbstständig und führen entsprechende Updates der Anzeige durch.

Registrierte Listener, zum Beispiel die integrierende Anwendung, werden über wichtige Änderungen an den Komponenten beziehungsweise der Darstellung des Dokuments informiert. Dies geschieht unter Verwendung von PropertyChangeEvents beziehungsweise PropertyChangeListeners.[12] Interessenten melden sich als PropertyChangeListener qualifiziert (genau für eine definierte Eigenschaft) oder unqualifiziert (für alle Eigenschaften) bei der jeweiligen Komponente an. Zur konkreten Identifizierung der betreffenden Property sind Eigenschaftsnamen in PageView beziehungsweise in ThumbnailView als öffentliche Konstanten deklariert.

Integration von Anzeigekomponenten

Als JComponent kann die PageView direkt in eine Swing-Komponentenhierarchie eingebettet werden. Im Regelfall empfiehlt es sich jedoch, stattdessen den komfortableren BasicViewer zu verwenden. Dieser bietet das infrastrukturelle Umfeld für eine PageView. Als JComponent beziehungsweise JavaBean ist er einfach in eigene Architekturen und Layouts einbettbar. Er kombiniert die Bildanzeigefläche einer PageView mit zugehörigen Scrollbars. Für Swing-basierte Applikationen ist der BasicViewer im Normalfall einem direkten Einsatz der PageView vorzuziehen.

Ähnliches gilt für den Fall der ThumbnailView. Diese ist ebenfalls eine JComponent und wird selten direkt verwendet. Stattdessen existiert die Klasse PageSorter, die eine ThumbnailView umhüllt und mit Scrollbars versieht. Die Demo-Klasse SorterFrame zeigt die Verwendung des PageSorter in einem separaten JFrame.

Alternativ dazu kann eine ThumbnailView als GUI-Element über einer PageView eingeblendet werden. Diese Funktionalität wird durch das Werkzeug LightboxThumbnailTool angeboten. Es kann über die in „Tools“ beschriebene Vorgehensweise auf einer PageView registriert werden.

Seitenlayouts der PageView

Die Klasse PageView ermöglicht das Darstellen von Dokumentseiten. Bei Dokumenten, die mehr als eine Seite enthalten, bestimmt ein Seitenlayout darüber, wie viele Seiten gleichzeitig sichtbar sind, und wie diese angeordnet werden. Die zur Verfügung stehenden Varianten werden durch die Konstanten in PageView.Layout vorgegeben. Im Einzelnen handelt es sich dabei um die folgenden:

PageView.Layout.PAGE

Darstellung von Einzelseiten.

PageView.Layout.CONTINUOUS_PAGE

Fortlaufende Darstellung einzelner Seiten untereinander.

PageView.Layout.SPREAD

Darstellung von Doppelseiten. Die erste Seite wird als rechte Seite dargestellt.

PageView.Layout.CONTINUOUS_SPREAD

Fortlaufende Darstellung von Doppelseiten untereinander. Die erste Seite wird als rechte Seite dargestellt.

PageView.Layout.GRID

Fortlaufende Darstellung sämtlicher Seiten in einer Gitteransicht. Es werden so viele Seiten nebeneinander platziert, wie es Zoomfaktor und Breite der Darstellungsfläche erlauben.

Die Seitenlayouts lassen sich Kategorisieren nach der Frage, ob eine fortlaufende Darstellung aller Dokumentseiten erfolgt, oder lediglich eine Maximalzahl von Seiten gleichzeitig Dargestellt wird (Einzel-/Doppelseite). Bei fortlaufenden Seitenlayouts können sämtliche Seiten durch Scrollen erreicht werden, während im anderen Fall ein expliziter Seitenwechsel notwendig ist.[13]



[11] Ob die Funktionalität zur Änderung der Reihenfolge von Seiten tatsächlich zur Verfügung steht, hängt davon ab ob die geltenden Berechtigungen dies zulassen und ob die entsprechenden Drag&Drop Handler konfiguriert sind. Weitere Informationen finden sich unter „Berechtigungskonzept“ und „Drag&Drop“.

[12] Siehe dazu auch PropertyChangeEvent und PropertyChangeSupport in der Java 2 Platform API Specification

[13] Falls auch bei nicht fortlaufenden Seitenlayouts ein automatischer Seitenwechsel gewünscht ist, kann zu diesem Zweck das KeyboardNavigationTool eingebunden werden. Details dazu finden sich unter „Navigations-Tools“.

[jadice document platform Version 5.5.12.1: Dokumentation für Entwickler. Veröffentlicht: 2021-08-17]