IHKForm.javaplugins/org.projectforge.plugins.ihk/src/main/java/org/projectforge/plugins/ihk/IHKForm.java Path: plugins/...ihk/src/main/java/.../IHKForm.java · Lines: 248 · Type: Java Wicket Form — extends AbstractStandardForm 248 lines · 182 code · 27 comments · 39 blank
Wicket form for the IHK plugin UI — provides the week selector, configuration editor, and export trigger. Extends
AbstractStandardForm<Object, IHKPage>— ProjectForge's Wicket form base class with Bootstrap grid layout. 248 lines of Java.Form controls
QuickSelectWeekPanel) — calendar widget for choosing the report week. Includes prev/next week navigation and "this week" quick-select buttonLocalDatePanel+LocalDateModel) — shows the Monday and Friday of selected week as read-only fields
Bound toausbildungsbeginn— apprenticeship start date (with date picker)ausbildungsjahr— training year override (numeric input, default -1)teamname— team/department name (text input)IHKCommentObjectvia Wicket'sPropertyModelSingleButtonPanelwithSubmitLink) — triggersIHKExporter.export()and streams the Excel file as HTTP downloadIHKCommentObjectback to JSON and writes it to the address book comment field (AddressDO.comment) viaAddressDaoData loading flow
ThreadLocalUserContext.getLoggedInUser()AddressDaoto find the matching address book entry (match by first/last name)IHKCommentObjectviaJsonUtils.fromJson()Wicket layout
Uses ProjectForge's
flowlayoutpackage for Bootstrap grid-based form layout:FieldsetPanel— groups related fields with a headingDivPanel/DivTextPanel— Bootstrap grid containersGridSize.COL50/COL100— responsive column widthsWicketUtils.getImageIcon()— icons for buttons (download, save)CSSColor— styling constants for info/warning messagesValidation
ausbildungsbeginnmust be a valid date — throwsUserExceptionwith localized message if missing or invalidAddressDOrecord — if no match found, displays a warningRequest cycle
Wicket form submit →
onSubmit()→ callsIHKExporter.export()→ returnsbyte[]→ wraps inIResourceStream→ triggers browser download ofBerichtsheft_KW{week}_{Name}.xlsx.