feat(sorting): add selectable sorting algorithms

- 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
This commit is contained in:
2026-08-31 19:11:10 +04:00
parent a143a535ba
commit db66ebbc07
5 changed files with 137 additions and 99 deletions
@@ -7,7 +7,6 @@ import ru.project.ui.base.BaseModalWindow;
import ru.project.ui.collection.sorting.SortCollectionMenu;
import ru.project.ui.common.CollectionDisplayWindow;
import ru.project.ui.common.CollectionFileSaveWindow;
import ru.project.ui.common.MessageWindow;
public class CurrentCollectionMenu extends BaseModalWindow {
@@ -15,6 +14,9 @@ public class CurrentCollectionMenu extends BaseModalWindow {
private final SortCollectionMenu sortCollectionMenu;
// private final SearchCollectionMenu searchCollectionMenu;
// private final CountOccurrencesMenu countOccurrencesMenu;
public CurrentCollectionMenu(WindowBasedTextGUI gui, AppState state) {
super("Меню текущей коллекции", gui);
@@ -23,6 +25,9 @@ public class CurrentCollectionMenu extends BaseModalWindow {
this.sortCollectionMenu = new SortCollectionMenu(gui, state);
// this.searchCollectionMenu = new SearchCollectionMenu(gui, state);
// this.countCollectionMenu = new CountOccurrencesMenu(gui, state);
ActionListBox menu = new ActionListBox();
menu.addItem("Показать коллекцию...", this::showCurrentCollection);
@@ -53,12 +58,14 @@ public class CurrentCollectionMenu extends BaseModalWindow {
}
private void searchCollection() {
// TODO
MessageWindow.showModal(gui, "Не реализовано.");
// SearchCollectionMenu searchCollectionMenu = new SearchCollectionMenu(gui, state);
//
// searchCollectionMenu.showModal();
}
private void countOccurrences() {
// TODO
MessageWindow.showModal(gui, "Не реализовано.");
// CountOccurrencesMenu countOccurrencesMenu = new CountOccurrencesMenu(gui, state);
//
// countOccurrencesMenu.showModal();
}
}