refactor(presenter): extend base presenter and defer menu actions

This commit is contained in:
2026-08-27 00:10:05 +04:00
parent a7a2953980
commit 140128cde0
2 changed files with 18 additions and 29 deletions
@@ -6,26 +6,25 @@ import ru.project.model.AppState;
import ru.project.student.Student; import ru.project.student.Student;
import ru.project.view.CollectionView; import ru.project.view.CollectionView;
public class CollectionPresenter { public class CollectionPresenter extends BasePresenter {
private final AppState state;
private final CollectionView view; private final CollectionView view;
private final WindowBasedTextGUI gui;
public CollectionPresenter(AppState state, CollectionView view, WindowBasedTextGUI gui) { public CollectionPresenter(AppState state, CollectionView view, WindowBasedTextGUI gui) {
this.state = state; super(state, gui);
this.view = view; this.view = view;
this.gui = gui;
} }
@Override
public void start() { public void start() {
MyList<Student> collection = state.getCollection(); MyList<Student> collection = state.getCollection();
if (collection == null || collection.isEmpty()) { if (collection == null || collection.isEmpty()) {
view.showEmptyMessage(gui); view.showEmptyMessage();
return; } else {
view.showCollection(collection);
} }
view.showCollection(gui, collection); view.show(gui);
} }
} }
@@ -1,28 +1,22 @@
package ru.project.presenter; package ru.project.presenter;
import com.googlecode.lanterna.gui2.WindowBasedTextGUI; import com.googlecode.lanterna.gui2.WindowBasedTextGUI;
import com.googlecode.lanterna.gui2.dialogs.MessageDialog;
import com.googlecode.lanterna.gui2.dialogs.MessageDialogButton;
import ru.project.model.AppState; import ru.project.model.AppState;
import ru.project.view.CollectionView;
import ru.project.view.MainView; import ru.project.view.MainView;
public class MainPresenter { public class MainPresenter extends BasePresenter {
private final AppState state;
private final MainView view; private final MainView view;
private final WindowBasedTextGUI gui;
private final CollectionPresenter collectionPresenter;
public MainPresenter(AppState state, MainView view, WindowBasedTextGUI gui) { public MainPresenter(AppState state, MainView view, WindowBasedTextGUI gui) {
this.state = state; super(state, gui);
this.view = view; this.view = view;
this.gui = gui;
this.collectionPresenter = new CollectionPresenter(state, new CollectionView(), gui); bindActions();
} }
@Override
public void start() { public void start() {
bindActions();
view.show(gui); view.show(gui);
} }
@@ -37,34 +31,30 @@ public class MainPresenter {
} }
private void showCollection() { private void showCollection() {
collectionPresenter.start(); // TODO
} }
private void createCollection() { private void createCollection() {
showMessage("Меню создания коллекции."); // TODO
} }
private void saveCollection() { private void saveCollection() {
showMessage("Меню сохранения коллекции."); // TODO
} }
private void sortCollection() { private void sortCollection() {
showMessage("Меню сортировки коллекции."); // TODO
} }
private void searchCollection() { private void searchCollection() {
showMessage("Меню поиска элемента."); // TODO
} }
private void countOccurrences() { private void countOccurrences() {
showMessage("Меню подсчёта количества вхождений."); // TODO
} }
private void exit() { private void exit() {
view.close(); view.close();
} }
private void showMessage(String message) {
MessageDialog.showMessageDialog(gui, "Информация", message, MessageDialogButton.OK);
}
} }