EN · DE · RU · FR · ES

#2779: Config.java

projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/Config.java Java-Konfigurationsmodell (FullCalendar) · projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/Config.java 428 Zeilen · 267 Code · 79 Kommentare · 82 Leerzeichen
Das umfassende Konfigurationsmodell für die Wicket-FullCalendar-Komponente – das einzelne Objekt, das alle Kalendereinstellungen erfasst und für den clientseitigen FullCalendar-Initialisierungsaufruf in JSON serialisiert wird. Diese Klasse modelliert jeden konfigurierbaren Aspekt des Kalender-Widgets: Ereignisquellen, Kopfzeilenlayout, Beschriftungen von Schaltflächen, Callback-Skripte (für Drop-, Größenänderungs-, Klick-, Render-, Auswahl- und Ansichtswechsel-Ereignisse), Zeitanzeigeeinstellungen, Spaltenformatzeichenfolgen und Interaktionsflags (bearbeitbar, auswählbar, verschiebbar, in der Größe veränderbar). Jackson-Annotationen steuern die JSON-Serialisierung: @JsonRawValue verhindert doppeltes Escapen von JavaScript-Callback-Text, @JsonIgnore verbirgt interne Wicket-Modelle vor der Serialisierung und @JsonProperty steuert die Feldbenennung.

Architektur

Callback-Skriptverwaltung

Sieben Callback-Modelle verwenden IModel<String> – Wickets Modellabstraktion für dynamische Werte. Jeder Callback-Getter ist mit @JsonRawValue annotiert, was Jackson anweist, den String-Inhalt des Modells direkt ohne Anführungszeichen in die JSON-Ausgabe einzufügen. Dies ist entscheidend, da die Callback-Strings JavaScript-Funktionskörper sind (z. B. function(event, delta, revertFunc) { ... }) und als roher Code in der FullCalendar-Initialisierung erscheinen müssen, nicht als doppelt angeführte Zeichenfolgen. Die Setter-Methoden bieten Komfort (setEventDrop(String) kapselt in Model.of()) und erweiterte Nutzung (setEventDropModel(IModel) für dynamische Modelle).

Wicket-Modell-Integration

Die Verwendung von IModel für Callback-Skripte ermöglicht die dynamische Skriptgenerierung – entscheidend, da diese Skripte Wicket-Ajax-Callback-URLs enthalten, die sich zwischen Anfragen ändern (aufgrund von Anti-Cache-Tokens und Seitenversionierung). Die Methode setupCallbacks() in FullCalendar.java befüllt diese Modelle mit generiertem Skripttext, und Wickets Modellauflösungsmechanismus stellt bei jedem Rendern frische Werte sicher.

Zeitkonfiguration

Verwendet Joda-Time-Typen (LocalTime für minTime/maxTime), die über die benutzerdefinierten Serialisierer in AbstractFullCalendar serialisiert werden. Die Aufzählung ColumnFormat bildet auf FullCalendars Spaltenkopf-Formatoptionen für Tages-, Wochen- und Monatsansichten ab.

Fluent Builder

Die Methode add(EventSource) gibt this zurück und unterstützt verkettete Konfiguration. Mehrere Ereignisquellen können fließend hinzugefügt werden: new Config().add(holidaysSource).add(meetingsSource).

Git-Verlauf

CommitWas wurde geändert
868d6abb7 bis ceb63e8a1Sechs jährliche Aktualisierungen der Copyright-Header. Das Konfigurationsmodell ist stabil – alle von der Anwendung benötigten FullCalendar-Einstellungen werden in dieser Klasse erfasst, und es waren keine neuen Konfigurationsoptionen über das ursprüngliche Design hinaus erforderlich.