- add search menu with filter configuration and result actions
- add support for AND and OR filter relations
- add range filters for group number, average grade, and record book number
- update current collection menu to delegate search operations
- test writing to empty and existing CSV files
- verify append behavior and header handling
- test writing arrays of student lists
- verify student order and empty lists
- test IOException for missing files
- add CSV writer for individual students
- support sequential writing of student lists
- preserve existing CSV data and avoid duplicate headers
- reject missing files with IOException
- add bubble and merge sort algorithm selection
- add SortStrategySelectionWindow
- apply selected strategy to normal and parity sorting
- use dedicated comparators for student fields
- remove obsolete EvenOnlyMergeSortStrategy
- update collection menu labels and TODO placeholders
- move MainMenu to the root ui package
- add CurrentCollectionMenu for current collection operations
- move sorting components under collection/sorting
- add CollectionFileSaveWindow for saving collections to file
- update imports and menu delegation
- remove custom data collection and file path from AppState
- add FillStrategy abstraction for collection creation
- add ManualFillSettings and ManualFillStrategy
- add FileFillSettings and FileFillStrategy
- move collection size input into reusable CollectionSizeInputWindow
- update ManualDataSettingsWindow to manage its own editing state
- rename window base class usage to BaseModalWindow and update modal method calls
- add persistent CustomDataSettingsWindow instance to CreateCollectionMenu
- prepare custom data collection dynamically before showing the settings window
- apply custom data to AppState without immediately replacing mainCollection
- create mainCollection from prepared custom student data
- replace student preview message with collection preview window
- update input validation and StudentBuilder state handling
- rename collection-related methods and variables for clearer semantics