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; + } +}