From 51e7859520f725b10f4af9fb3b3782ff18f3fd96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=BE=D0=BB=D0=BE=D0=B4=D0=B8=D0=BD=20=D0=93=D0=B5?= =?UTF-8?q?=D1=80=D0=BC=D0=B0=D0=BD?= Date: Thu, 27 Aug 2026 00:10:30 +0400 Subject: [PATCH] feat(fill-method): add fill method selection presenter --- .../java/ru/project/model/FillMethod.java | 7 +++ .../presenter/FillMethodPresenter.java | 44 +++++++++++++++++++ .../java/ru/project/view/FillMethodView.java | 32 ++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 app/src/main/java/ru/project/model/FillMethod.java create mode 100644 app/src/main/java/ru/project/presenter/FillMethodPresenter.java create mode 100644 app/src/main/java/ru/project/view/FillMethodView.java diff --git a/app/src/main/java/ru/project/model/FillMethod.java b/app/src/main/java/ru/project/model/FillMethod.java new file mode 100644 index 0000000..df682af --- /dev/null +++ b/app/src/main/java/ru/project/model/FillMethod.java @@ -0,0 +1,7 @@ +package ru.project.model; + +public enum FillMethod { + CUSTOM, + RANDOM, + FILE +} diff --git a/app/src/main/java/ru/project/presenter/FillMethodPresenter.java b/app/src/main/java/ru/project/presenter/FillMethodPresenter.java new file mode 100644 index 0000000..321326b --- /dev/null +++ b/app/src/main/java/ru/project/presenter/FillMethodPresenter.java @@ -0,0 +1,44 @@ +package ru.project.presenter; + +import com.googlecode.lanterna.gui2.WindowBasedTextGUI; +import java.util.function.Consumer; +import ru.project.model.AppState; +import ru.project.model.FillMethod; +import ru.project.view.FillMethodView; + +public class FillMethodPresenter extends BasePresenter { + + private final FillMethodView view; + private final Consumer onMethodSelected; + + public FillMethodPresenter( + AppState state, + FillMethodView view, + WindowBasedTextGUI gui, + Consumer onMethodSelected) { + + super(state, gui); + + this.view = view; + this.onMethodSelected = onMethodSelected; + } + + @Override + public void start() { + bindActions(); + view.show(gui); + } + + private void bindActions() { + view.setCustomAction(() -> selectMethod(FillMethod.CUSTOM)); + + view.setRandomAction(() -> selectMethod(FillMethod.RANDOM)); + + view.setFileAction(() -> selectMethod(FillMethod.FILE)); + } + + private void selectMethod(FillMethod method) { + onMethodSelected.accept(method); + view.close(); + } +} diff --git a/app/src/main/java/ru/project/view/FillMethodView.java b/app/src/main/java/ru/project/view/FillMethodView.java new file mode 100644 index 0000000..027d7fe --- /dev/null +++ b/app/src/main/java/ru/project/view/FillMethodView.java @@ -0,0 +1,32 @@ +package ru.project.view; + +public class FillMethodView extends ActionListView { + + private Runnable customAction = this::defaultAction; + private Runnable randomAction = this::defaultAction; + private Runnable fileAction = this::defaultAction; + + public FillMethodView() { + super("Настроить способ заполнения"); + + addItem("Пользовательские данные", () -> customAction.run()); + + addItem("Случайные данные", () -> randomAction.run()); + + addItem("Данные из файла", () -> fileAction.run()); + + addItem("Выйти", this::close); + } + + public void setCustomAction(Runnable action) { + customAction = action; + } + + public void setRandomAction(Runnable action) { + randomAction = action; + } + + public void setFileAction(Runnable action) { + fileAction = action; + } +}