Hinweise zur Migration von jadice document platform 5.4 zu 5.5

Hinweise zur Migration von jadice document platform 5.4 zu 5.5

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 Reader kö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:

      MethodeFunktion
      public void enableByteOrderMarkDetection(boolean enableByteOrderMarkDetection)Ein-/Ausschalten der BOM-Erkennung
      public boolean isByteOrderMarkDetectionEnabled()Aktuellen BOM-Erkennungsstatus abfragen

      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:

      MethodeFunktion
      public void setResolution(int resolution)Legt die zur Anzeige verwendete Auflösung fest
      public int getResolution()Zur Anzeige verwendete Auflösung abfragen
  • 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  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.

KomponenteGroupId altGroupId neu
jadice-corecom.levigo.jadice.documentplatformcom.levigo.jadice.documentplatform.core
jadice-swingcom.levigo.jadice.documentplatformcom.levigo.jadice.documentplatform.viewer
distcom.levigo.jadice.documentplatformcom.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  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 eigenen ReadStrategy fällt weg.
  • DOCPV-2099: Vereinheitlichung/Pattern zur Erstellung/Installation des Contextes


    • Diese Neuerung betrifft die folgenden Klassen. Die genannten Klassen haben durch die Änderung eine neue Methode protected Context initializeContext() erhalten.
    • Klassevorheriger Methodenname (sofern vorhanden)
      com.levigo.jadice.appbase.preview.NavigablePreviewThumbnailRenderer-
      com.levigo.jadice.appbase.search.advanced.AlternativeSearchPanel-
      com.levigo.jadice.appbase.search.RolloutSearch-
      com.levigo.jadice.appbase.search.SearchFrame-
      com.levigo.jadice.appbase.search.SearchPanel-
      com.levigo.jadice.appbase.status.PageLayoutSnapInprotected Context installContext()
      com.levigo.jadice.appbase.status.PageSnapInprotected Context installContext()
      com.levigo.jadice.appbase.status.ZoomSnapInprotected Context installContext()
      com.levigo.jadice.appbase.PageNavScrollBarSnapIn-
      com.levigo.jadice.demo.applet.DemoAppletPanelprotected Context createContext()
      com.levigo.jadice.iplus.demo.swing.FlexibleTreePanel-
      com.levigo.jadice.iplus.demo.swing.IPlusFrameprotected Context createContext()
      com.levigo.jadice.iplus.demo.swing.ViewerPanelprotected Context createContext()
      com.levigo.jadice.demo.gradation.GradationFrame-
      com.levigo.jadice.demo.infotree.InfoTreeFrame-
      com.levigo.jadice.demo.infotree.InfoTreePanel-
      com.levigo.jadice.demo.BasicJadicePanelprotected Context createContext()
      com.levigo.jadice.demo.jnlp.JNLPDemoFrameprotected void createContext()
      org.jadice.util.swing.flextree.FlexibleTreeprotected Context createContext()
  • 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:


      Klasse
      ToggleFontRenderModeCommand
      TextRenderSettings.FontRenderMode (wird nicht mehr benötigt, da kein Java-AWT Font-Rendering verwendet wird)
      TextRenderSettings.AntiAliasingMode (Funktion ersetzt durch BaseRenderSettings.setAntiAliasingMode(AntiAliasingMode))
      TiffConvertConfiguration.FontRenderingMode#AUTO, TiffConvertConfiguration.FontRenderingMode#SHAPE_RENDERING
    • 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 in actions.properties ab.
  • Einheitliche Namensgebung für Qualified Log Messages. Details, siehe 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

altneuAnmerkungen

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.JadiceComponentAddoncom.levigo.jadice.swing.ui.JadiceComponentAddon
com.levigo.**.*Readercom.levigo.**.internal.*ReaderAlle konkreten FormatReader Implementationen sind nun internal API. Das Interface bleibt unverändert public. Der Jira-Server für dieses Makro konnte nicht gefunden werden. Das könnte an der Konfiguration des Anwendungslinks liegen.
com.levigo.**.*PageSegmentcom.levigo.**.internal.*PageSegmentAlle konkreten PageSegment Implementationen sind nun internal API. Das Interface bleibt unverändert public. Der Jira-Server für dieses Makro konnte nicht gefunden werden. Das könnte an der Konfiguration des Anwendungslinks liegen.
com.levigo.jadice.swing.util.UIcom.levigo.jadice.swing.ui.UIs
com.levigo.jadice.swing.util.DebugActionCreationFailureLoggercom.levigo.jadice.appbase.DebugActionCreationFailureLogger
com.levigo.jadice.swing.infotreecom.levigo.jadice.appbase.flextree Der Jira-Server für dieses Makro konnte nicht gefunden werden. Das könnte an der Konfiguration des Anwendungslinks liegen.
com.levigo.jadice.swing.pagestashcom.levigo.jadice.demo.pagestash Der Jira-Server für dieses Makro konnte nicht gefunden werden. Das könnte an der Konfiguration des Anwendungslinks liegen.
com.levigo.jadice.document.render.BaseRenderSettings.Rotationorg.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.RenderControlInventorycom.levigo.jadice.document.render.RenderControlsInventory Der Jira-Server für dieses Makro konnte nicht gefunden werden. Das könnte an der Konfiguration des Anwendungslinks liegen.

com.levigo.jadice.tiffconverter.TiffConvertConfiguration.FontRenderingMode.ANTIALIAS
com.levigo.jadice.tiffconverter.TiffConvertConfiguration.FontRenderingMode.NO_ANTIALIAS

com.levigo.jadice.document.render.AntiAliasingMode.ON

com.levigo.jadice.document.render.AntiAliasingMode.OFF


com.levigo.jadice.document.render.PageRenderercom.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.swingcom.levigo.jadice.iplus.demo.model Der Jira-Server für dieses Makro konnte nicht gefunden werden. Das könnte an der Konfiguration des Anwendungslinks liegen.



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.appletcom.levigo.jadice.demo.applet.concurrentKlassen 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.Rectanglesorg.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
com.levigo.util.swing.action.BasicActionFactory
com.levigo.util.swing.action.BasicCommandFactory
com.levigo.util.swing.action.BasicMenuComponentFactory
com.levigo.util.swing.action.CommandFactory
com.levigo.util.swing.action.DefaultActionFactory
com.levigo.util.swing.action.DefaultCommandFactory
com.levigo.util.swing.action.DefaultMenuComponentFactory
com.levigo.util.swing.action.MenuComponentFactory
com.levigo.util.swing.action.NamedActionFactory
com.levigo.util.swing.action.NamedCommandFactory
com.levigo.util.swing.action.NamedMenuComponentFactory
com.levigo.util.swing.action.ResourceLocator

org.jadice.util.swing.action.factories.*

com.levigo.util.swing.action.Context
com.levigo.util.swing.action.ContextListener
com.levigo.util.swing.action.ContextUtils

org.jadice.util.swing.action.context.*

com.levigo.util.swing.action.ActionCreationAdapter
com.levigo.util.swing.action.ActionCreationListener
com.levigo.util.swing.action.CommandCreationAdapter
com.levigo.util.swing.action.CommandCreationListener
com.levigo.util.swing.action.MenuComponentCreationAdapter
com.levigo.util.swing.action.MenuComponentCreationListener

org.jadice.util.swing.action.listener.*

com.levigo.util.swing.action.SelfDescribingCommand
com.levigo.util.swing.action.DummyCommand
com.levigo.util.swing.action.DelegateAction
com.levigo.util.swing.action.ContextualAction
com.levigo.util.swing.action.CommandAction
com.levigo.util.swing.action.Command
com.levigo.util.swing.action.ActionOnDoubleClick
com.levigo.util.swing.action.AbstractContextCommand

org.jadice.util.swing.action.commands.*

com.levigo.util.swing.action.ActionJCheckboxMenuItem
com.levigo.util.swing.action.ActionJRadioMenuItem
com.levigo.util.swing.action.IconJMenuItem
com.levigo.util.swing.action.VisibilityEnabledJCheckboxMenuItem
com.levigo.util.swing.action.VisibilityEnabledJMenuItem
com.levigo.util.swing.action.VisibilityEnabledJRadioMenuItem
com.levigo.util.swing.action.GraphicsConfigurationValidateable

com.levigo.util.swing.action.ActionJButton
com.levigo.util.swing.action.ActionJRadioButton
com.levigo.util.swing.action.ActionJToggleButton
com.levigo.util.swing.action.NonUglyActionJToggleButton
com.levigo.util.swing.action.PopupJToggleButton

com.levigo.util.swing.action.EllipseJToolbar

org.jadice.util.swing.action.components.*

com.levigo.util.base.glazedlists.*
com.levigo.util.swing.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ÄnderungAnmerkungen
com.levigo.util.base.collections.FrozenListFactory Methods statt direkter Konstruktion via KonstruktorDie 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 empty() direkt angefordert werden kann.
com.levigo.jadice.swing.BasicViewer.getScrollPane()Rückgabewert JScrollPaneBarSnapInScrollPane wird nicht mehr unterstützt, statt dessen wird JScrollPane verwendet
com.levigo.jadice.document.read.ReaderListener.ReaderEventKorrektur der Vererbungshierarchie: SourceID wird nicht mehr implementiert.Instanzen von ReaderEvent sind nun keine Instanzen von SourceID mehr. Die bisher von SourceID vorgeschriebenen Methoden existieren jedoch nach wie vor. Details unter Der Jira-Server für dieses Makro konnte nicht gefunden werden. Das könnte an der Konfiguration des Anwendungslinks liegen.
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 com.levigo.jadice.swing.printer.SwingPrintManager mit dem entsprechenden Dialog aufgerufen werden.



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.MethodennameAlternative
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.KonstruktorAlternative
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 NameNeuer Name
com.levigo.jadice.format.modca.MODCAReaderSettings#FontMode#MAPPEDcom.levigo.jadice.format.modca.MODCAReaderSettings#FontMode#Mapped
com.levigo.jadice.format.modca.MODCAReaderSettings#FontMode#FOCA_GLYPHcom.levigo.jadice.format.modca.MODCAReaderSettings#FontMode#FocaOutline
com.levigo.jadice.format.modca.MODCAReaderSettings#FontMode#FOCA_RASTERcom.levigo.jadice.format.modca.MODCAReaderSettings#FontMode#FocaRaster
 

'jadice.viewer.afp-size-behaviour-overlay' Parameter in Jadice.properties Datei wird nicht mehr unterstützt

Der Parameter 'jadice.viewer.afp-size-behaviour-overlay' wird in der Jadice.properties Konfigurationsdatei nicht mehr unterstützt und wird von der Klasse com.levigo.jadice.format.modca.MODCAReaderSettings#PageSizeMode abgelöst:

Alte Definition in Jadice.properties DateiNeue DefinitionBeschreibung
0PageSizeMode#AdjustDynamische Anpassung, die Seitenbreite und / oder Seitenhöhe des Overlay wird verwendet, wenn diese größer als die der Hauptseite ist (Standardeinstellung)
1PageSizeMode#NoneOverlay-Seitengröße wird ignoriert
2PageSizeMode#ForceOverlay-Seitengröße (Breite und Höhe) wird verwendet, Seitengröße der Hauptseite wird überschrieben


'jadice.viewer.afp-show-inline-annotation' Parameter in Jadice.properties Datei wird nicht mehr unterstützt

Der Parameter 'jadice.viewer.afp-show-inline-annotation' wird in der Jadice.properties Konfigurationsdatei nicht mehr unterstützt.

Die Einstellung kann in der Klasse com.levigo.jadice.format.modca.MODCAReaderSettings über die Methode setShowAnnotations(boolean) konfiguriert werden.


Page-Size-Modification Parameter in Jadice.properties Datei wird nicht mehr unterstützt

Die Parameter

  • jadice.viewer.afp-page-size-modification
  • jadice.viewer.afp-page-size-modification.ci
  • jadice.viewer.afp-page-size-modification.nci

werden in der Jadice.properties Konfigurationsdatei nicht mehr unterstützt.

Die Einstellungen können nun über die com.levigo.jadice.format.modca.MODCAReaderSettings-Klasse in den Properties-Einstellungen beim Ladevorgang definiert / registiert werden, die Parametername wurden geändert:

Alter Name in Jadice.properties DateiNeuer Name für MODCAReaderSettings-KlasseBeschreibung
jadice.viewer.afp-page-size-modificationpage-size-modificationAllgemeine Definition für CI- / NCI-Dokumente
jadice.viewer.afp-page-size-modification.cipage-size-modification.ciDefinition nur für CI-Dokumente
jadice.viewer.afp-page-size-modification.ncipage-size-modification.nciDefinition nur für NCI-Dokumente

Die Definitionen können als Key-Value-Paar (jeweils Datentyp String) via getProperties()-Methode registiert werden:


Reader reader = new Reader();

// Registration der 'page-size-modification' Definition
reader.getSettings(MODCAReaderSettings.class).getProperties().put("page-size-modification", "220-700x220-700:210x0;209-211x277-279:210x297;192-194x296-298:210x297");

// Registration der 'page-size-modification-ci' Definition
reader.getSettings(MODCAReaderSettings.class).getProperties().put("page-size-modification-ci", "220-700x220-700:210x0;209-211x277-279:210x297;192-194x296-298:210x297");

// Registration der 'page-size-modification-nci' Definition
reader.getSettings(MODCAReaderSettings.class).getProperties().put("page-size-modification-nci", "220-700x220-700:210x0;209-211x277-279:210x297;192-194x296-298:210x297");

Konfiguration von Properties-Dateien beim Ladevorgang

Fontspezifische Properties-Dateien können nun für jeden Ladevorgang über die com.levigo.jadice.format.modca.MODCAReaderSettings-Klasse in den Properties konfiguriert werden.

Hierzu muss die Properties-Datei in ein Java-Properties-Objekt geladen werden und mit entsprechendem Namen registriert werden.

Folgende Properties-Dateien können MODCAReaderSettings-Klasse registriert werden:

  • FocaCodepage.properties
  • FocaFontFace.properties
  • FocaMappedFont.properties
  • FocaCharMap.properties
  • CharMap.properties
  • FontMap.properties
  • CodePage.properties
  • CodedFonts.properties

Codebeispiel für Registrierung anhand 'FontMap.properties' Datei:

// Laden der Properties-Datei
InputStream is = ModcaFormat.class.getResourceAsStream("resources/FontMap.properties");
Properties properties = new Properties();
properties.load(is);
// Registration der 'FontMap.properties' Properties-Instanz
Reader reader = new Reader();
reader.getSettings(MODCAReaderSettings.class).getProperties().put("FontMap.properties", properties); 
Wird keine Properties-Instanz registriert, wird die entsprechende Standard-Properties-Datei aus dem MODCA-Format-Modul (Pfad 'com/levigo/jadice/format/modca/resources') verwendet.


'Fonts.properties' Datei wird nicht mehr unterstützt

Die Fonts.properties Datei wird im Standardprodukt (DOCP MODCA-Format) nicht mehr unterstützt.

Für die Verwendung der Fonts.properties Datei gibt es eine FontFactory-Implementation (com.levigo.jadice.appbase.font.factory.FontsPropertiesFontFactory), die auch als Quellcode zur Verfügung steht, falls anwendungsspezifische Änderungen vorgenommen werden müssen.

Die FontFactory-Implementation muss in in der ReaderSettings-Klasse beim Ladevorgang registriert werden:

Reader reader = new Reader();
// Bereits vorhandene FontFactory holen
FontFactory fontFactory = reader.getSettings(FontFactoryReaderSettings.class).getFontFactory();
// ChainedFontFactory-Instanz erstellen
ChainedFontFactory chainedFontFactory = new ChainedFontFactory(new FontsPropertiesFontFactory(), fontFactory);
// ChainedFontFactory-Instanz registrieren
reader.getSettings(FontFactoryReaderSettings.class).setFontFactory(chainedFontFactory);
Die Funktionalität der Fonts.properties Datei sollte für die bessere Wartbarkeit in eine anwendungsspezifische FontFactory-Implementation umgesetzt werden, die eine FontManager-Instanz verwendet (siehe auch Entwicklerdokumentation).

AFP / MODCA spezifische FontAttributeSet-Attribute für FontFactory-Abfrage

Bei einer Fontabfrage in einer FontFactory-Implementation (siehe Klasse com.levigo.jadice.document.font.factory.FontFactory) vom AFP / MODCA Format aus, werden zusätzliche formatspezifische Fontattribute definiert um einen Font eindeutig identifizieren zu können.

Weitere Hinweise / Erklärungen zum Thema FontFactory / FontAttributeSet / FontManager sind in der Entwicklerdokumentation zu finden.

Übersicht, wann eine Fontabfrage ausgeführt wird (siehe auch Klasse com.levigo.jadice.format.modca.MODCAReaderSettings#FontMode):

  • Bei der Verwendung des Fontmodus FontMode#Raster wird eine Abfrage nur ausgeführt, wenn keine passenden Fontresourcen gefunden werden. In diesem Fall stehen keine Rasterdaten oder ein Vektor- / Outline-Font für die Darstellung zur Verfügung, eine Abfrage zur Ermittlung einer Ersatzschriftart wird ausgeführt.
  • Bei der Verwendung des Fontmodus FontMode#Outline (Rasterfont wird auf Vektor-/Outline-Font gemappt) wird eine Abfrage nur bei einem Rasterfont ausgeführt. Ist der Font in den Fontresourcen ein Vektor-/Outline-Font, wird dieser auch verwendet, es erfolgt keine Abfrage.
  • Bei der Verwendung des Fontmodus FontMode#Mapped wird immer eine Abfrage ausgeführt.
  • Bei Systemfontsubstitutionen wird unabhängig vom Fontmodus immer eine Abfrage ausgeführt

Aufbau und Funktion einer Fontabfrage

Die in der ReaderSettings-Klasse registrierten FontFactory-Implementationen werden mit einer FontAttributeSet-Klasse (siehe com.levigo.jadice.document.font.attribute.FontAttributeSet) abgefragt, die die entsprechenden Attribute und Werte des Fonts beinhalten.

Folgende Attribute werden definiert und in der FontAttributeSet-Abfrage abgelegt:

  • Attribut für Fontname (Klasse com.levigo.jadice.document.font.attribute.name.FontName)
  • Fontspezifische Stilinformationen 'plain / normal' (Klasse com.levigo.jadice.document.font.attribute.style.Plain), 'bold / fett' (Klasse com.levigo.jadice.document.font.attribute.style.Bold), 'italic / kursiv' (Klasse com.levigo.jadice.document.font.attribute.style.Italic)

Zusätzlich werden noch formatspezifische Attribute definiert, abhängig von der vorliegenden Schriftdefinition / Klassifizierung:

  • Name des Characterset, z.B. 'C0N20060' (Klasse com.levigo.jadice.format.modca.fontmanager.attribute.name.CharacterSetName)
  • Coded-Font-Name, z.B. 'X0H21000' (Klasse com.levigo.jadice.format.modca.fontmanager.attribute.nameCodedFontName)
  • Name der Codepage, z.B. 'T1V10273' (Klasse com.levigo.jadice.format.modca.fontmanager.attribute.name.CodepageName)
  • Name der Systemfont-Definition, z.B. '904' (Klasse com.levigo.jadice.format.modca.fontmanager.attribute.name.MappedFontName)
  • Referenzname auf ein Fontobjekt, z.B. 'ArialFett' (Klasse com.levigo.jadice.format.modca.fontmanager.attribute.name.ReferenceName)

Verwendung von jadice Technologien in Applets nicht mehr empfohlen

Immer mehr Browserhersteller verabschieden sich von einer Standard Plug-In Unterstützung. Damit wird die Ausführung von eingebettetem 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.

Neue Systemvoraussetzungen

  • Die unterstützten Versionen der Java Virtual Machine wurden geändert. Vorausgesetzt wird nun eine Oracle Java VM in Version 8 (Java 8). Ältere Versionen oder Oracle Java VM ab Version 9 (Java 9) und neuer werden nicht unterstützt.