Hinweise zur Migration von jadice document platform 5.4 zu 5.5
- 1 Neue Funktionen und Features
- 2 Auftrennung von Komponenten
- 3 Verbesserungen
- 4 Nicht mehr unterstützte und entfernte Elemente
- 4.1 Applets
- 5 Nicht mehr unterstützte und entfernte Methoden
- 6 Nicht mehr unterstützte und entfernte Konstruktoren
- 7 AFP / MODCA Format spezifische Anpassungen / Änderungen
- 7.1 Fontmodus-Definitionen in MODCAReaderSettings-Klasse geändert
- 7.2 'jadice.viewer.afp-size-behaviour-overlay' Parameter in Jadice.properties Datei wird nicht mehr unterstützt
- 7.3 'jadice.viewer.afp-show-inline-annotation' Parameter in Jadice.properties Datei wird nicht mehr unterstützt
- 7.4 Page-Size-Modification Parameter in Jadice.properties Datei wird nicht mehr unterstützt
- 7.5 Konfiguration von Properties-Dateien beim Ladevorgang
- 7.6 'Fonts.properties' Datei wird nicht mehr unterstützt
- 8 AFP / MODCA spezifische FontAttributeSet-Attribute für FontFactory-Abfrage
- 9 Verwendung von jadice Technologien in Applets nicht mehr empfohlen
- 10 Neue Systemvoraussetzungen
Neue Funktionen und Features
Die ComponentAddon Funktionalität wird durch eine neue Klasse com.levigo.jadice.swing.ui.ComponentAddonManagement angeboten.
Die Methoden com.levigo.util.swing.plaf.LookAndFeelAddons.contribute(ComponentAddon) und com.levigo.util.swing.plaf.LookAndFeelAddons.uncontribute(ComponentAddon) wurden ersetzt durch die entsprechenden Methoden der Klasse ComponentAddonManagement.
Die Methoden der Klasse com.levigo.jadice.swing.ui.UIs sind mit Hilfe von CallOnEDT Annotationen mit Bedienungshinweisen bereichert worden.
DOCPV-462: Laufende Lesevorgänge auf einem
Readerkönnen nun abgebrochen werden.Die API ist erweitert worden um eine neue Klasse com.levigo.jadice.annotation.render.AnnotationGraphicsRenderer. Sie bietet die Möglichkeit eine Annotation in ein beliebiges Graphics2D zu rendern.
Text-Format
Text-Format bietet Byte-Order-Mark (BOM) Support an
BOM-Erkennung ist standardmäßig aktiviert, kann über die com.levigo.jadice.format.text.TextReaderSettings Klasse entsprechend konfiguriert werden:Unterstützte Byte-Order-Marks:
UTF-8 8-bit Unicode Transformation Format
UTF-16BE 16-bit Unicode Transformation Format, big-endian byte order
UTF-16LE 16-bit Unicode Transformation Format, little-endian byte order
UTF-32BE 32-bit Unicode Transformation Format, big-endian byte order
UTF-32LE 32-bit Unicode Transformation Format, little-endian byte order
Bei einer BOM-Erkennung wird intern das Encoding entsprechend überschrieben, d.h. das in den com.levigo.jadice.format.text.TextReaderSettings definierte Encoding wird ignoriert.
Textformat erlaubt die zur Anzeige verwendete Auflösung vorzugeben.
Die Auflösung kann nun pro Text Dokument über die com.levigo.jadice.format.text.TextReaderSettings Klasse konfiguriert werden:
Die BookmarkDemoApplication wurde entfernt. Eine beispielhafte Implementierung der Bookmark Funktionalität auf Basis der Outline-API wurde in die BasicDemoApplication aufgenommen.
Neue Klassen in com.levigo.jadice.document.marshalling, um Marshalling zu konfigurieren.
DOCPV-1897: Die FitModeCommands in der BasicDemoApplication wurden durch neue Commands aus der neuen Klasse com.levigo.jadice.appbase.commands.FitCurrentPageCommand ersetzt. Die alten Commands sind aber weiterhin vorhanden. Für Details, siehe
.Fehler beim Rendern des Makros 'jira': Der Jira-Server für dieses Makro konnte nicht gefunden werden. Das könnte an der Konfiguration des Anwendungslinks liegen.Das VisibleBoundsTool ist um einige Konfigurationsmöglichkeiten erweitert worden. Neben der Border um den sichtbaren Bereich kann nun auch eine Border entlang der Seitengrenze gemalt werden.;Der Bereich außerhalb des sichtbaren Bereiches und der sichtbare Bereich selbst können nun eingefärbt werden. Diese Border und Farben können über die folgenden Properties-Strings über den UIManager konfiguriert werden: "ThumbnailView.visibleBoundsPageBorder", "ThumbnailView.visibleBoundsAreaColor", "ThumbnailView.visibleBoundsPageAreaColor". Alternativ können diese Einstellungen dem Tool auch über entsprechende Setter gesetzt werden.
DOCPV-3069: Die Legendenannotation (CalloutAnnotation) besitzt nun einen passenden Wrangler, um die Annotation GUI-seitig anzupassen. Für Details, siehe
Fehler beim Rendern des Makros 'jira': Der Jira-Server für dieses Makro konnte nicht gefunden werden. Das könnte an der Konfiguration des Anwendungslinks liegen.
Auftrennung von Komponenten
Aus der Historie heraus ist die document platform als ein Swing-Viewer entstanden. Im Laufe der Jahre entwickelten sich nach und nach weitere jadice Produkte, wie das jadice webtoolkit oder jadice server, die nur die Kernbestandteile der document platform, wie Document oder spezifische Formate, verwendeten. Parallel dazu häuften sich ebenfalls immer mehr Kunden Szenarios, die keine Swing Komponenten nutzten.
Vor diesem Hintergrund häuften sich die Forderungen nach einer Trennung der monolithischen Struktur der platform in einen Kern- und einen Swing Komponenten Anteil.
Das 5.5 Release setzt diese nachvollziehbare Anforderung um. Die Aufteilung umfasst die Komponenten jadice-core, jadice-swing und dist. jadice-core beinhaltet dabei die Kernbestandteile der document platform, wie Document oder spezifische Formate. jadice-swing beinhaltet Swing relevanten Klassen. Die dist Komponente beinhaltet eine Kombination der beiden oben beschriebenen Komponenten und bindet dabei alle deren Subkomponenten ein. Es kann als ein Nachfolger der ehemals umfassenden Struktur angesehen werden.
Die einzelnen Komponenten werden zukünftig unabhängig voneinander releast. Daher können die Versionsverläufe der Komponenten künftig divergieren.
Zur sauberen Trennung der Komponenten haben die neu entstandenen Komponenten jeweils eine eigene Maven GroupId erhalten.
Komponente | GroupId alt | GroupId neu |
|---|---|---|
jadice-core | com.levigo.jadice.documentplatform | com.levigo.jadice.documentplatform.core |
jadice-swing | com.levigo.jadice.documentplatform | com.levigo.jadice.documentplatform.viewer |
dist | com.levigo.jadice.documentplatform | com.levigo.jadice.documentplatform.dist |
Verbesserungen
Attachments
DOCPV-2048: Attachments geben jetzt beim Aufruf von toString() einen technischen Identifikations-String zurück. Die bisherigen Informationen sind künftig über Properties des Attachments zugänglich.
DOCPV-2041: Attachment Properties: Es ist nun möglich mit PropertyChangeListenern auf Änderungen an den Properties zu hören. Details, siehe
Fehler beim Rendern des Makros 'jira': Der Jira-Server für dieses Makro konnte nicht gefunden werden. Das könnte an der Konfiguration des Anwendungslinks liegen.
DOCPV-1703, DOCPV-1704: I18n Properties: In älteren Versionen wurden Klammern und Weißzeichen über I18n abgelegt. In neueren Versionen wird statt dessen die Verwendung von Interpolation bevorzugt.
DOCPV-2053: Verbesserte Hintergrundgrafik der Gradationskurve
DOCPV-2194: Im Rahmen von Verbesserungen des Caches wurde die Konfigurationseinstellung jadice.viewer.cache.maximumExpiryObjectCountRatio aus den Jadice.properties korrigiert. Die Einstellung sollte eine Ratio sein, war aber in Wirklichkeit ein absoluter Wert. Dies ist nun korrigiert worden. Der Wertebereich dieser Einstellung liegt zwischen 0 < jadice.viewer.cache.maximumExpiryObjectCountRatio <=1.
DOCPV-462: Die Preview-Ansicht im Öffnen Dialog bricht nicht mehr benötigte Lesevorgänge nun schneller ab. Zu diesem Zweck gab es Umstellungen in der Klasse
FileChooser. Das Setzen einer eigenenReadStrategyfällt weg.DOCPV-2099: Vereinheitlichung/Pattern zur Erstellung/Installation des Contextes
Durch ein neues, verbessertes Font Rendering in der Version 5.5...
... hat BaseRenderSettings eine neue Antialiasing Einstellung für Shape und Text Rendering erhalten. Diese Einstellung kann über die Methoden BaseRenderSettings.getAntiAliasingMode() und BaseRenderSettings.setAntiAliasingMode(AntiAliasingMode) genutzt werden.
...ist ein neues Enum com.levigo.jadice.document.render.AntiAliasingMode mit den Einstellungen ON und Off geschaffen wurden.
...TextRenderSettings-Klasse nicht mehr benötigt und daher entfernt wurde.
...werden folgende Einstellungen nicht mehr benötigt:
sind folgende Einstellungen überflüssig geworden:
com.levigo.jadice.format.text.TextReaderSettings#isAntiAliased(),
com.levigo.jadice.format.text.TextReaderSettings#setAntiAliased(..),
com.levigo.jadice.format.text.TextReaderSettings#isUsesFractionalMetrics(),
com.levigo.jadice.format.text.TextReaderSettings#setUsesFractionalMetrics(..)
Vergabe von Swing Namen für GUI Komponenten
An verschiedenen Stellen wurden Namen für Swing GUI Komponenten vergeben. Diese können bei Bedarf in einer Integration geändert werden.
Für
MenuItems, die via Action/Command Framework erstellt werden, leitet sich der Name aus dem Key inactions.propertiesab.
Einheitliche Namensgebung für Qualified Log Messages. Details, siehe
Fehler beim Rendern des Makros 'jira': Der Jira-Server für dieses Makro konnte nicht gefunden werden. Das könnte an der Konfiguration des Anwendungslinks liegen.Ein neuer Cache wird als Standardcache verwendet, der Geschwindigkeitsvorteile und erweiterte Funktionalitäten (Statistiken, Listener, JMX-Beans, dynamische Expiry-Strategien) bietet. Darüber hinaus wird immer noch die Möglichkeit geboten, den bisherigen Cache zu verwenden. Details sind in der Dokumentation ersichtlich.
Das Laden von Fonts wurde für Integratoren konfigurierbarer gestaltet. Die im Demo-Code verfügbaren Klassen:
com.levigo.jadice.demo.font.SwingFontEnvironments
com.levigo.jadice.demo.font.FontEnvironments
bieten eine beispielhafte Implementierung der Konfiguration und können in Integrationen übernommen werden. Über den Aufruf *FontEnvironments#configureFontEnvironment() können die Fonts beim Start der Anwendung konfiguriert und geladen werden.
Die Klasse SwingFontEnvironments schließt die Konfiguration aus FontEnvironments mit ein. Sollte keine GUI-Komponente in der Integration vorhanden sein, genügt die Konfiguration aus der Klasse FontEnvironments.
Verschiebungen/Umbenennungen von Klassen
alt | neu | Anmerkungen |
|---|---|---|
JadiceFilterDemoApplication (default package) com.levigo.jadice.swing.filter. ResampleFilterCommand | com.levigo.jadice.demo.* | ResampleFilterCommandwurde aus einem separaten demo Modul in das allgemeine demo Modul übernommen. |
com.levigo.jadice.swing.JadiceComponentAddon | com.levigo.jadice.swing.ui.JadiceComponentAddon |
|
com.levigo.**.*Reader | com.levigo.**.internal.*Reader | Alle konkreten |
com.levigo.**.*PageSegment | com.levigo.**.internal.*PageSegment | Alle konkreten |
com.levigo.jadice.swing.util.UI | com.levigo.jadice.swing.ui.UIs |
|
com.levigo.jadice.swing.util.DebugActionCreationFailureLogger | com.levigo.jadice.appbase.DebugActionCreationFailureLogger |
|
com.levigo.jadice.swing.infotree | com.levigo.jadice.appbase.flextree |
|
com.levigo.jadice.swing.pagestash | com.levigo.jadice.demo.pagestash |
|
com.levigo.jadice.document.render.BaseRenderSettings.Rotation | org.jadice.util.base.geometry.QuadrantRotation |
|
com.levigo.jadice.document.render.ThumbnailProvider com.levigo.jadice.document.render.DefaultThumbnailProvider | com.levigo.jadice.swing.thumbnailview.* |
|
com.levigo.jadice.document.render.RenderControlInventory | com.levigo.jadice.document.render.RenderControlsInventory | |
com.levigo.jadice.tiffconverter.TiffConvertConfiguration.FontRenderingMode.ANTIALIAS | com.levigo.jadice.document.render.AntiAliasingMode.ON com.levigo.jadice.document.render.AntiAliasingMode.OFF |
|
com.levigo.jadice.document.render.PageRenderer | com.levigo.jadice.document.render.PageGraphicsRenderer |
|
com.levigo.jadice.document.render.PageImageRenderer#getRenderArea() com.levigo.jadice.document.render.PageImageRenderer#setRenderArea(...) | com.levigo.jadice.document.render.PageImageRenderer#getClip com.levigo.jadice.document.render.PageImageRenderer#setClip(...) |
|
com.levigo.jadice.model.swing | com.levigo.jadice.iplus.demo.model | |
|
|
|
com.levigo.util.* | org.jadice.util.* | Alle ehemals Levigo-Utils Packages wurden zu Jadice-Utils Packages gewandelt. Alle Klassen, die vormals eine Package Signatur von com.levigo.util.* hatten, sind nun unter org.jadice.util.* zu finden. |
com.levigo.util.concurrent.tasks.applet | com.levigo.jadice.demo.applet.concurrent | Klassen wurden nach demo-applet verschoben im Zuge der Deprecation von Applets. demo-applet ist nicht mehr Teil der Standardauslieferung (siehe Applets für Details). |
com.levigo.util.swing.TGASwingUtil | org.jadice.util.base.swing.TGASwingUtil |
|
com.levigo.util.swing.edt.CallOnEDT com.levigo.util.swing.edt.CallOffEDT | org.jadice.util.base.swing.edt.* |
|
com.levigo.util.swing.BubbleBorder com.levigo.util.swing.DropShadowBorder com.levigo.util.swing.RolloutBorder com.levigo.util.swing.RoundedBorder com.levigo.util.swing.SlickBevelBorder | org.jadice.util.swing.borders.* |
|
com.levigo.util.swing.Rectangles | org.jadice.util.base.geometry.Rectangles |
|
com.levigo.util.swing.IconManager com.levigo.util.swing.ArrowIcon com.levigo.util.swing.BorderIcon | org.jadice.util.swing.icon.* |
|
com.levigo.util.swing.PopupMenuLauncher | org.jadice.util.swing.menu.PopupMenuLauncher |
|
com.levigo.util.swing.CollapsiblePane com.levigo.util.swing.FlipFlopCollapsiblePanel com.levigo.util.swing.FadeablePane com.levigo.util.swing.ButtonRowLayout | org.jadice.util.swing.layout.* |
|
com.levigo.util.swing.DropDownToggleButton com.levigo.util.swing.NonUglyActionButton com.levigo.util.swing.PopupButton com.levigo.util.swing.JButtonGroup com.levigo.util.swing.Hyperlink | org.jadice.util.swing.button.* |
|
com.levigo.util.swing.action.ActionFactory | org.jadice.util.swing.action.factories.* |
|
com.levigo.util.swing.action.Context | org.jadice.util.swing.action.context.* |
|
com.levigo.util.swing.action.ActionCreationAdapter | org.jadice.util.swing.action.listener.* |
|
com.levigo.util.swing.action.SelfDescribingCommand | org.jadice.util.swing.action.commands.* |
|
com.levigo.util.swing.action.ActionJCheckboxMenuItem com.levigo.util.swing.action.ActionJButton com.levigo.util.swing.action.EllipseJToolbar | org.jadice.util.swing.action.components.* |
|
com.levigo.util.base.glazedlists.* | org.jadice.util.glazedlists.* |
|
com.levigo.jadice.document.creator | com.levigo.jadice.document.composite | AbstractCompositePageSegment, CompositePageSegment und DynamicCompositePageSegment wurden in das neue package verschoben. Die restlichen Klassen und Interfaces des alten creator-packages wurden entfernt. |
Änderungen innerhalb von Klassen
Klasse | Änderung | Anmerkungen |
|---|---|---|
com.levigo.util.base.collections.FrozenList | Factory Methods statt direkter Konstruktion via Konstruktor | Die Factory Methods sind zusätzlich null-safe. Im Fall eines null-Parameters oder eines leeren Parameters (z. B. leeres Array, leere Liste) wird die leere FrozenList zurückgegeben, die auch mittels der Factory Method |
com.levigo.jadice.swing.BasicViewer.getScrollPane() | Rückgabewert JScrollPane | BarSnapInScrollPane wird nicht mehr unterstützt, statt dessen wird JScrollPane verwendet |
com.levigo.jadice.document.read.ReaderListener.ReaderEvent | Korrektur der Vererbungshierarchie: | Instanzen von |
com.levigo.jadice.printer.PrintJobConfiguration#getSourcePages | Umbenannt zu getAvailablePages |
|
com.levigo.jadice.printer.PrintManager.executePrintJob(PrintJobConfiguration, AbstractPrintDialog) | Änderung der Parameter. Kann nun mit AbstractPrinter oder PrintJobConfiguration aufgerufen werden. | Muss der PrintJob mit einem Dialog gestartet werden, kann die Funktion über die Klasse |
Nicht mehr unterstützte und entfernte Elemente
com.levigo.util.base.MimicryThrowable
com.levigo.util.base.collections.EnumerationIterator
com.levigo.util.swing.text.NColumnsDigitDocument
com.levigo.util.swing.text.NColumnsTextDocument
com.levigo.util.swing.text.NColumsRangeSetDocument
com.levigo.util.swing.text.NumericDocument
com.levigo.util.swing.text.UppercaseDocument
com.levigo.util.swing.Painter
com.levigo.util.swing.Paths
com.levigo.util.swing.PendingOperations
com.levigo.util.swing.CollapsibleSection
com.levigo.util.swing.dnd.VisualRepresentationSupportTransferHandler
com.levigo.util.swing.AbstractGeometryFrame
com.levigo.util.swing.AbstractPropertyGeometryFrame
com.levigo.util.swing.SplitButton
com.levigo.util.swing.ActionInterceptor
com.levigo.util.swing.BarSnapInScrollPane
com.levigo.util.swing.LevigoSeparators
com.levigo.util.swing.SwingWorker
com.levigo.jadice.swing.RenderControlAction
com.levigo.util.swing.plaf.LookAndFeelAddons
com.levigo.util.swing.action.Privileges
com.levigo.util.swing.action.TreeSelectionContextUpdater
com.levigo.util.swing.action.PopupMenuButton
com.levigo.jadice.webdemo.*
com.levigo.util.swing.messaging.*
Die Messaging Klassen sind veröffentlicht worden.
Von jadice werden diese Klassen nicht mehr benutzt, es werden ausschließlich JVM Bordmittel zur Anzeige von Dialogen verwendet.
Sollten Integratoren diese Klassen verwenden und weiter nutzen wollen, können sie unter dem genannten Github Projekt bezogen werden.
com.levigo.jadice.document.lazy.AbstractLazyLoadTriggerPageSegment
com.levigo.jadice.search.CopySelectedTextCommand
War bereits deprecated. Ersatz: com.levigo.jadice.appbase.commands.CopySelectedTextCommand
com.levigo.jadice.swing.commands.CopyRasterizedSelectionCommand
War bereits deprecated. Ersatz: com.levigo.jadice.appbase.commands.CopyRasterizedSelectionCommand
com.levigo.jadice.annotation.AnnotationRenderer
War bereits deprecated. Diese Klasse ist Teil des internen Rendering Models und konnte somit nicht direkt durch Integratoren genutzt werden. Diese API Unschönheit ist korrigiert worden indem diese Klasse in das zugehörige interne Rendering Package verschoben wurde.
com.levigo.jadice.document.creator.AbstractContentsPageSegment
Das AbstractContentsPageSegment wurde entfernt. Die Funktionalität kann mit dem neuen com.levigo.jadice.document.contentscreator.ContentsCreatorPageSegment abgedeckt werden.
com.levigo.jadice.printer.DecorationPageSegment
Das DecorationPageSegment entfernt. Die Funktionalität kann ebenfalls dem neuen ContentsCreatorPageSegment abgedeckt werden.
com.levigo.jadice.swing.internal.annotation.wranglers.TextAnnotationWranglerWingDings
Klasse entfernt, kann nicht mehr in Annotationsprofilen definiert werden, com.levigo.jadice.swing.internal.annotation.wranglers.TextAnnotationWrangler verwenden.
Applets
Immer mehr Browser Hersteller verabschieden sich von einer Standard Plug-In Unterstützung. Damit wird die Ausführung von eingebetteten Flash, Silverlight, Java oder anderen Plug-In basierenden Technologien in absehbarer Zeit in Browsern nicht mehr möglich sein.
Auch Oracle bekennt sich zu einem "Plugin-Free Web" und kündigt die Abschaffung von Java Applets an. Das Unternehmen weist Entwickler darauf hin, dass die Nutzung von Applets zwar noch eingeschränkt möglich ist, der produktive Einsatz jedoch nicht mehr empfohlen wird. Oracle empfiehlt Webentwicklern stattdessen auf HTML 5 mit JavaScript oder alternativ auf installierbare Java-Anwendungen zu setzen. jadice folgt dieser Entwicklung. Mit der aktuellen Versionslinie 5.5. wird der produktive Einsatz von jadice Technologie im Applet nicht mehr empfohlen. Die betreffenden jadice Klassen sind als "Deprecated" markiert und sind nicht mehr Teil der Standard Auslieferung. Sie können jedoch auf Wunsch jederzeit angefordert werden. Für Web Lösungen wird als Alternative die Verwendung von jadice web toolkit (https://jadice.com/produkte/web-toolkit/) empfohlen.
Nicht mehr unterstützte und entfernte Methoden
Klassenname.Methodenname | Alternative |
|---|---|
com.levigo.jadice.swing.thumbnailview.LightboxThumbnailTool.isActive() | com.levigo.jadice.swing.thumbnailview.LightboxThumbnailTool.isLightboxVisible() |
com.levigo.util.swing.plaf.LookAndFeelAddons.getUI(JComponent, String) | com.levigo.jadice.swing.ui.UIs.getUI(JComponent, String) |
int com.levigo.jadice.document.render.BaseRenderSettings.getZoomFactor() | int com.levigo.jadice.document.render.BaseRenderSettings.getZoom() |
com.levigo.jadice.document.render.BaseRenderSettings.setZoomFactor(int) | com.levigo.jadice.document.render.BaseRenderSettings.setZoom(float) |
Nicht mehr unterstützte und entfernte Konstruktoren
Klassenname.Konstruktor | Alternative |
|---|---|
com.levigo.jadice.document.creator.CompositePageSegment.CompositePageSegment(Rectangle2D) | com.levigo.jadice.document.creator.CompositePageSegment.CompositePageSegment(Dimension2D) |
AFP / MODCA Format spezifische Anpassungen / Änderungen
Folgende Änderungen sind zu beachten:
Fontmodus-Definitionen in MODCAReaderSettings-Klasse geändert
Die Namen der Fontmodus-Definitionen in der com.levigo.jadice.format.modca.MODCAReaderSettings-Klasse wurden geändert, die Funktionweise ist unverändert.
Alter Name | Neuer Name |
|---|---|