Hinweise zur Migration auf jadice web toolkit 5.5
Inhalt
Neue Funktionen und Features
Servlet 3.0 Support
Aufgrund dieses neuen Features sollten – sofern vorhanden – folgende Servlet- und Filtereinträge aus web.xml entfernt werden, da die Klassen jetzt entsprechend annotiert sind:
- TileServlet
- FontDownloadServlet
- CacheFilter
- NoCacheFilter
- TileCacheFilter
- WebtoolkitGwtRpcFilter
- WebtoolkitGwtRpcPlusFilter
Wenn der GWT Development Mode verwendet wird, muss der com.levigo.jadice.web.server.DevModeStartupListener
zur web.xml hinzugefügt werden (siehe Referenzhandbuch, Abschnitt "Servlet 3.0 Support").
Änderungen an der clientseitigen API
- Die Beschaffung einer WebtoolkitServerConnection-Instanz sollte nicht mehr durch direktes Instanziieren einer Implementierung (
GwtRpcWebtoolkitServerConnection
bzw.GwtRpcPlusWebtoolkitServerConnection
) passieren. Der entsprechende Konstruktoraufruf ist durch den Aufruf von com.levigo.jadice.web.conn.client.WebtoolkitServerConnectionProvider.get() zu ersetzen (siehe Referenzhandbuch, Abschnitt "Grundlagen zur Connection API"). - Die GWT-Configuration-Property gwtrpcplus_moduleBaseUrl ist obsolet und sollte aus der Moduldefinitionsdatei (<module>.gwt.xml) entfernt werden. Von Bedeutung war diese Property für solche Integrationsszenarien, wo die HTML-Hostpage nicht Teil der deployten Webtoolkit-Applikation ist. In einem solchen Szenario kann die neue Property jwtBaseURL gesetzt werden, um dem Client bekannt zu machen, auf welchem Server das Webtoolkit zu finden ist.
Beispiel:
<set-configuration-property name="jwtBaseURL" value="{moduleBaseUrl}../" />
Wobei "{moduleBaseUrl}../" nicht explizit gesetzt werden muss, da dies dem Defaultverhalten verspricht.
Änderungen an der serverseitigen API
- Die Methode com.levigo.jadice.web.conn.server.WebtoolkitFilter.getServerContext() wurde entfernt. Die com.levigo.jadice.web.server.WebtoolkitServerContext-Instanz (Singleton) kann bei Bedarf mit Hilfe der Klasse com.levigo.jadice.web.server.WebtoolkitServerContextProvider.getServerContext(ServletContext sc) beschafft werden.
- ServletContextListener-Implementierungen, die von der Klasse com.levigo.jadice.web.conn.server.WebtoolkitServletContextListener abgeleitet waren, sind von der Umbenennung dieser Klasse und von der Umbenennung des Interface com.levigo.jadice.web.conn.server.WebtoolkitServerContext (s.u.) betroffen. Es sind lediglich die Imports nachzuziehen.
- Optional: Die Registrierung der DocumentDataProvider-Implementierungen kann von "programmatisch" auf "automatisch" (siehe Referenzhandbuch, Abschnitt "Dokumente / Automatische Registrierung von DocumentDataProvidern") umgestellt werden. Bei Einsatz des Java-EE- oder Spring-Moduls ist dies besonders einfach und elegant.
Zusammenfassung
alt | neu | Anmerkung | siehe Jira-Ticket |
---|---|---|---|
| web.xml ohne Mappings für
| s.o. | JWT-1163 |
gwtrpcplus_moduleBaseUrl | ggf. Verwendung von jwtBaseURL: <set-configuration-property name="jwtBaseURL" value="{moduleBaseUrl}../" /> | s.o. | |
com.levigo.jadice.web.conn.server.WebtoolkitServerContext com.levigo.jadice.web.conn.server.WebtoolkitServletContextListener | com.levigo.jadice.web.server.WebtoolkitServerContext com.levigo.jadice.web.server.WebtoolkitServletContextListener | Haben nichts mit der Verbindung zwischen Client und Server zu tun und wurden deshalb in ein anderes Modul verlegt. | JWT-1163 |
com.levigo.jadice.web.demo.common.server.util.CacheFilter | com.levigo.jadice.web.server.filter.CacheFilter com.levigo.jadice.web.server.filter.NoCacheFilter com.levigo.jadice.web.server.filter.TileCacheFilter | Aus einem Demo- in ein Kernmodul umgezogen. Filter sind jetzt per Default aktiviert. | |
new GwtRpcWebtoolkitServerConnection(...) new GwtRpcPlusWebtoolkitServerConnection(..) | com.levigo.jadice.web.conn.client.WebtoolkitServerConnectionProvider.get() | JWT-1163 |
Client
GWT 2.8 Support
jadice web toolkit 5.5.0.0 unterstützt GWT 2.8, kann jedoch weiterhin auch mit GWT 2.7 genutzt werden.
Grundsätzlich wird bei Einsatz von GWT 2.8 die Verwendung von GSS empfohlen (http://www.gwtproject.org/articles/gss_migration.html). Demzufolge wurden die CSS-Dateien des jadice web toolkit in GSS-Dateien umgewandelt.
Für die Integration in Kundenanwendungen bedeutet dies: Wenn diese CSS-Dateien in der Integration nicht vollständig überschrieben wurden, müssen auch die CSS-Dateien in der Integration in GSS-Dateien umgewandelt werden.
Unterstützung von Icon Fonts auf dem Client
jadice web toolkit 5.5.0.0 bietet eine Unterstützung für Icon Fonts in UI-Komponenten. Icon Fonts können ganz leicht in die UI Komponenten des JWT eingebunden werden (JadiceButton, ContextMenu). Eine Anleitung findet sich in der Benutzerdokumentation.
Alternativ können weiterhin PNGs wie bisher über den UIStyle eingebunden werden.
In den Klassen, die sich die Icons automatisch ziehen (AnnotationProfileAwareToolbar, DefaultButtons, PropertyProfileEditor) werden standardmäßig PNGs angezogen. Zum Umstellen muss ClientConfigurationManager.getClientConfiguration().setIsIconFontUsed(true)
gesetzt werden.
Modernisierung der Default Icons
Im Zuge der Unterstützung von IconFonts wurden die im jadice web toolkit mitgelieferten Default Icons modernisiert und ergänzt.
Infolgedessen wird nun im Annotationseditor zwischen einem Icon für die Schriftgröße und einem für die Schriftart unterschieden. Diese erfordern eine Anpassung im Annotationsprofil, wo sie über die Properties fontSize
bzw. fontFace
anzugeben sind.
Styling
Mit der Umstellung auf Icon Fonts in den JWT Demoanwendungen gab es einige Styling-Anpassungen.
- Die Styling-Klasse des
ColorEditor
erhielt zwei neue Felder, um die Farbe der Border des ColorPickers und für den Pointer im ColorPicker anzupassen. - Die Icons für die
RolloutSearch
werden nun nicht länger über CSS- bzw. GSS-Ressourcen definiert, sondern über den IconFont bzw. den UIStyle. - Für das
CalibrateResolutionWidget
wurde eine Styling Klasse hinzugefügt, um dessen Design über GSS Ressourcen anpassbar zu machen.
Buttons und Menüs
Das Erzeugen von Buttons und Menüs wurde auf rein clientseitige APIs umgestellt. Demzufolge wurden die Declarative UI und die Parameter-Injection für Commands aus dem Produkt entfernt.
Folgende Mechanismen dienen nun zur komfortablen Bestückung und Konfiguration von Toolbars, Menüs, Kontextmenüs und Buttons:
- Die Klasse
DefaultButtons
wird durch die KlasseDefaultActions
abgelöst.- Actions (repräsentiert durch das Interface
Action
mit den ImplementierungenRegisteredAction
undBasicAction
) verknüpfen Kommandos mit UI-relevanten Informationen wie Accelerator-Keys (nur beiRegisteredActions
), Beschreibungstexten, Labels und Icons. Die DefaultActions
können verwendet werden, um die Toolbars oder Menüs mit Inahlten zu befüllen. (Früher wurden diese mitDefaultButtons
bestückt.)- Sie können auch verwendet werden, um daraus direkt Buttons zu erzeugen. Hierfür sind nun die Klassen
JadiceDefaultButton
undJadiceSubmenuButton
Teil der Public API.
- Actions (repräsentiert durch das Interface
- Menüs können komfortabel über einen
MenuBuilder
erstellt werden, mit demBasicMenuBuilder
als Standardimplementierung.- Ein
MenuBuilder
ermöglicht beispielsweise das Generieren von Toolbars (die von AbstractBar ableiten) und das Erstellen von ContextMenus. - Aus einem
MenuBuilder
können nach Bedarf mehrere Menus mit denselben Inhalten befüllt werden.
- Ein
ActionRegistry
- Jede Action sollte in einem Context (sprich für eine PageView) nur ein Mal generiert werden. Dies hat den Vorteil, dass ToggleButtons, die in mehreren Menükomponenten enthalten sind, denselben Zustand haben, da sie auf dieselben Kontextinformationen zugreifen. Zu diesem Zweck wurde eine
ActionRegistry
eingeführt, die als Sammel- und Zugriffspunkt für alle Actions dient. - In Folge müssen Commands über eine eindeutige ID identifizierbar sein.
- Jede Action sollte in einem Context (sprich für eine PageView) nur ein Mal generiert werden. Dies hat den Vorteil, dass ToggleButtons, die in mehreren Menükomponenten enthalten sind, denselben Zustand haben, da sie auf dieselben Kontextinformationen zugreifen. Zu diesem Zweck wurde eine
KeyStroke
s- Zudem gibt es über die neu hinzugefügte
ActionRegistry
ein festesKeyStroke
-Mapping. Hier werden alle KeyStrokes gespeichert und sobald eine Tastenkombination gedrückt wurde, wird hierüber das Command ausgeführt. Da alle Actions in einer einzigen gegebenen Registry gespeichert werden, ist es nicht möglich, über die Klasse DefaultActions zwei gleiche Actions mit unterschiedlichen Inhalten (z.B. abweichenden KeyStrokes) zu definieren.
- Zudem gibt es über die neu hinzugefügte
Events
In Folge einer Überarbeitung der Eventstruktur feuert der ToolManger außer für die Property statusFeedback
keine PropertyChangeEvents mehr, sondern ToolChangedEvents. Die Eigenschaften propertyName
, oldValue
und newValue
sind hierin unter gleichem Name enthalten. Eine eigene Implementierung des ToolChangedEvent.Handler
kann dem ToolManager
über addToolChangedHandler(handler)
hinzugefügt werden.
Internet Explorer 11 Kompatibilitätsmodus
Hierbei gibt es einige Einschränkungen zu beachten - bitte beachten Sie hierzu die Known Issues in der Entwicklerdokumentation: http://webtoolkit.jadice.com/doc/sect.knownissues.html.
Zusammenfassung
alt | neu | Anmerkung | siehe Jira-Ticket |
---|---|---|---|
Annotationsprofil *.xml:
| Annotationsprofil *.xml:
| s.o. |
Server
alt | neu | Anmerkung | siehe Jira-Ticket |
---|---|---|---|
PredefinedAnnotationRenderStrategy.CLIENT.applyToDocument(...) | ebenso, aber anderer Default | Default der PredefinedRenderStrategy wurde von SERVER_SIDE_MASKING auf CLIENT umgestellt. |
Weitere API-Änderungen und Umbenennungen von Klassen und Packages
alt | neu | Anmerkung | siehe Jira-Ticket |
---|---|---|---|
com.levigo.jadice.web.client.EffectContainer | com.levigo.jadice.web.client.WidgetContainer | ||
com.levigo.jadice.web.client.util.EffectContainers | com.levigo.jadice.web.client.util.WidgetContainers | Die Methode findEffectContainer() wurde in findWidgetContainer() umbenannt | JWT-350 |
- | com.levigo.jadice.web.client.event.JadiceEventBus | Singleton zum Transport von Jadice Events | JWT-942 |
com.levigo.jadice.web.client.events.DocumentChangedEvent | com.levigo.jadice.web.client.event.DocumentChangedEvent | ||
com.levigo.jadice.web.client.events.PageLayoutChangedEvent | com.levigo.jadice.web.client.event.PageLayoutChangedEvent | JWT-942 | |
com.levigo.jadice.web.client.events.PageSelectionChangedEvent | com.levigo.jadice.web.client.event.PageSelectionChangedEvent | JWT-942 | |
com.levigo.jadice.web.client.events.ToolsChangedEvent | com.levigo.jadice.web.client.event.ToolChangedEvent | Abfrage der Zustandsänderung ermöglicht über Enum. Möglich Werte: ACTIVATED, VALUE_CHANGED, EXCLUSIVE, ENABLED, REGISTERED | JWT-942 |
com.levigo.jadice.web.client.events.VisibleRectChangedEvent | com.levigo.jadice.web.client.event.VisibleRectChangedEvent | JWT-942 | |
com.levigo.jadice.web.client.settings.RenderSettingsEvent | Erbt nun auch von com.levigo.jadice.web.client.event.JadiceEvent | JWT-942 | |
com.levigo.jadice.web.client.settings.RenderSettingsListener | com.levigo.jadice.web.client.settings.RenderSettingsEvent.Handler | Erbt nun von JadiceEventHandler | JWT-942 |
com.levigo.jadice.web.client.events.RenderSettingsEvent | -> com.levigo.jadice.web.client.settings.RenderSettingsEvent | Wurde mit com.levigo.jadice.web.client.settings.RenderSettingsEvent zusammengeführt | JWT-942 |
com.levigo.jadice.web.client.event.MouseDragEvent | com.levigo.jadice.web.client.event.input.MouseDragEvent | In separates "input"-Package umgezogen, da es sich um ein Input-Event handelt und nicht um ein JadiceEvent (diese liegen gesammelt im Package "com.levigo.jadice.web.client.event"). | JWT-942 |
com.levigo.jadice.web.client.settings.InventoryRenderSettingsEvent | Erbt nun auch von com.levigo.jadice.web.client.event.JadiceEvent | JWT-942 | |
com.levigo.jadice.web.client.settings.InventoryRenderSettingsListener | com.levigo.jadice.web.client.settings.InventoryRenderSettingsEvent.Handler | Erbt nun von JadiceEventHandler | JWT-942 |
com.jadice.web.util.eventbus.client.WebtoolkitEventBus new com.levigo.jadice.web.client.reader.Reader(WebtoolkitServerConnection, WebtoolkitEventBus) | com.jadice.web.util.eventbus.client.NotificationEventBus new com.levigo.jadice.web.client.reader.Reader(WebtoolkitServerConnection) | Benennung spiegelt den Zweck (Zuständigkeit für Notifications) nun besser wieder. Es entfällt die Möglichkeit, in diversen Konstruktoren einen eigenen WebtoolkitEventBus mitzugeben. Dies wird nun zentral über NotificationEventBus.Instance.set(...) ermöglicht. | JWT-942 |
com.jadice.web.util.eventbus.* | com.jadice.web.util.notifications.* | Das Modul webtoolkit-util-eventbus wurde in webtoolkit-util-notifications umbenannt. | JWT-1316 |
com.levigo.jadice.web.demo.common.client.events.ui.DemoPopup | com.levigo.jadice.web.demo.common.client.events.ui.NotificationPopup | " | JWT-942 |
com.levigo.jadice.web.client.ui.internal.menu.BasicMenuBuilder | com.levigo.jadice.web.client.ui.menu.BasicMenuBuilder | BasicMenuBuilder ist nach Wegfall der Declarative UI nun public API. | JWT-673 |
com.levigo.jadice.web.client.ThumbnailViewBuilder#setTargetPageView() | com.levigo.jadice.web.client.ThumbnailViewBuilder#ThumbnailViewBuilder(PageView) | Methode ist entfallen. Stattdessen wird nun die targetPageview als Parameter im Konstruktor erwartet. | JWT-942 |
com.levigo.jadice.web.client.PageView
| com.levigo.jadice.web.client.PageView
| interne Klasse RenderedPage wurde in LaidOutPage umbenannt. | JWT-886 |
com.levigo.jadice.web.client.ui.DefaultButtons.*Button() | com.levigo.jadice.web.client.ui.DefaultButtons.*Button(KeyStroke) | Accelerator Keys können direkt im Methodenaufruf mit übergeben werden. Ggf. einfach null übergeben. | JWT-673 |
com.levigo.jadice.web.client.util.internal.keys.KeyBinding com.levigo.jadice.web.client.util.internal.keys.Key com.levigo.jadice.web.client.util.internal.keys.Keys | com.levigo.jadice.web.client.util.action.KeyStroke com.levigo.jadice.web.client.util.action.Key com.levigo.jadice.web.client.util.action.Keys | Die Klasse wurde umbenannt und ist nun Teil der öffentlichen API . | JWT-673 |
com.levigo.jadice.web.client.tools.PanForceTool | com.levigo.jadice.web.client.tools.PanForceMouseTool | Die Klasse PanForceTool ist immer noch vorhanden, bildet nun jedoch eine Superklasse für das PanForceMouseTool und das PanForceTouchTool. Künftig sind also explizit die Unterklassen über den ToolManager einzuhängen. | JWT-475 |
com.levigo.jadice.web.client.ui.defaultstyle.Splash.ui.xml | - | Die Datei wurde entfernt, da der Splash Screen nun als ImageRessource angezogen wird. | |
com.levigo.jadice.web.client.ui.defaultstyle.SplashBinder | - | " | |
com.jadice.web.util.client.command.* com.jadice.web.util.client.action.GwtAction | com.levigo.jadice.web.client.util.command.* com.levigo.jadice.web.client.util.action.JwtAction | Modul webtoolkit-util-action-command wurde in webtoolkit-base integriert. Die Klasse GwtAction wurde in JwtAction umbenannt | |
com.levigo.jadice.web.shared.model.settings.gradiation.* | com.levigo.jadice.web.shared.model.settings.gradation.* | Rechtschreibfehler "gradation" korrigiert in korrekte Schreibweise "gradation". | JWT-886 |
com.levigo.jadice.web.client.commands.AnnotationVisibilityCommand#toogleAnnotationVisibility | com.levigo.jadice.web.client.commands.AnnotationVisibilityCommand#toggleAnnotationVisibility | Rechtschreibfehler "toogle" korrigiert in korrekte Schreibweise "toggle". | JWT-886 |
com.levigo.jadice.web.client.util.helper.Annotations
| com.levigo.jadice.annotation.auth.web.AnnotationPermissions
| Methoden in der Klasse Annotations waren bereits deprecated und haben per Javadoc auf die Methoden mit gleicher Signatur in AnnotationPermissions verwiesen. Die Methoden in Annotations wurden daher nun endgültig entfernt. | JWT-886 |
com.levigo.jadice.web.client.util.WidgetContainers.GaleryNavigationTool | com.levigo.jadice.web.client.util.WidgetContainers.GalleryNavigationTool | Rechtschreibfehler "GaleryNavigationTool" korrigiert in korrekte Schreibweise "GalleryNavigationTool". | JWT-886 |
com/levigo/jadice/web/client/ui/buttons/viewer_TB_PAGE_BOOKMARK_TOOGLE.png | com/levigo/jadice/web/client/ui/buttons/viewer_TB_PAGE_BOOKMARK_TOGGLE.png | Rechtschreibfehler "toogle" korrigiert in korrekte Schreibweise "toggle", dementsprechend auch die Resource angepasst | JWT-886 |
- | com.levigo.jadice.web.client.util.command.Command.getID() | Das Interface Command wurde um die Methode getID() erweitert. Diese ID wird benötigt das jedes Command mit seinen Properties eine eindeutige ID hat, mit welcher es im ActionManager gespeichert wird. | JWT-1289 |
com.levigo.jadice.web.client.ui.internal.JadiceDynamicButton com.levigo.jadice.web.client.ui.internal.JadiceSubmenuButton | com.levigo.jadice.web.client.ui.JadiceDefaultButton com.levigo.jadice.web.client.ui.JadiceSubmenuButton | Die Klassen wurden Teil der Public API. Die Klasse JadiceDynamicButton wurde in diesem Zuge in JadiceDefaultButton umbenannt. | JWT-1289 |
com.levigo.jadice.web.client.util.Tiles.getTileType() com.levigo.jadice.web.client.viewer.internal.BasicPageView.getUseIconFont() - | com.levigo.jadice.web.client.config.ClientConfigurationManager.getClientConfiguration().getTileType() com.levigo.jadice.web.client.config.ClientConfigurationManager.getClientConfiguration().isIconFontUsed() com.levigo.jadice.web.client.config.ClientConfigurationManager.getClientConfiguration().getMaxParallelTileRequests() | Neue clientseitige zentrale Konfigurationsklassen ClientConfigurationManager bzw. ClientConfiguration eingeführt. Konfiguration diverser zentraler Eigenschaften erfolgt jetzt über diese Klassen. | |
com.levigo.jadice.web.client.util.Tiles#TileType | com.levigo.jadice.web.client.util.TileType | TileType wurde vollwertige Enum; Hilfsklasse Tiles wurde entfernt. | JWT-562, JWT-1093 |
com.levigo.jadice.web.client.ui.status.PageSnapIn() com.levigo.jadice.web.client.ui.status.PageLayoutSnapIn() | com.levigo.jadice.web.client.ui.status.PageSnapIn(Collection<Object> context) com.levigo.jadice.web.client.ui.status.PageLayoutSnapIn(Collection<Object> context) | Die Konstruktoren wurden um den Context erweitert. | JWT-1488 |
Server | |||
com.levigo.jadice.web.server.WebtoolkitServerContext.getServerCacheConfiguration().setServerCache() com.levigo.jadice.web.server.CacheConfiguration.isTileCachingEnabled() | com.levigo.util.mm.CacheManager.setDefault() com.levigo.jadice.web.server.config.ConfigurationManager.getServerConfiguration().isTileCachingEnabled() com.levigo.jadice.web.server.config.ServerConfiguration | Interface und Implementierung der CacheConfiguration wurde entfernt. Diese Funktionalität wird nun von den Klassen CacheManager, ConfigurationManager bzw. ServerConfiguration abgedeckt. |
Entfernte Klassen und Funktionalitäten
Funktion (Klassen) | Anmerkung | siehe Jira-Ticket |
---|---|---|
DeclarativeUI (Artifact "declarative-ui") mit allen enthaltenen und abhängigen Klassen, u.a.:
| Nachdem die DeclarativeUI-Klassen schon lange deprecated waren, wurden sie nun entfernt. Beispiele für alternative UI-Konfiguration finden sich in der Enterprise Demo und im Showcase. | |
Guice | Das Modul webtoolkit-extension-guice wurde entfernt. Die Serverkonfiguration kann ab sofort über die mit JWT-1163 eingeführten Mechanismen erfolgen. | JWT-1187 |
SwitchToSinglePageOnFit | War bereits deprecated und ist in der ApplyDynamicZoomRule aufgegangen. | JWT-942 |
ServerTransaction inklusiver aller verwandten Klassen
| Ersatz durch ServerOperations + verwandte Klassen:
Anmerkung: ServerOperations als Nachfolger von ServerTransactions waren bereits mit JWT 5.4.0.0 (siehe JWT-424) umgesetzt worden. Bisher waren ServerTransactions nur als deprecated markiert. Sie sind nun endgültig entfernt worden. | JWT-563 |
com.levigo.jadice.web.client.tools.ZoomToRectangleTool | - | JWT-563 |
com.levigo.jadice.web.client.ui.VerticalSubmenu | Diese veraltete Klasse wurde entfernt. Für vertikale Untermenüs sollte die Klasse com.levigo.jadice.web.client.ui.VerticalToolbarSubmenu verwendet werden. | JWT-1289 |