From d615a6e3d6b2a160f44013d1a55e3ca6ec2f2681 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: Wed, 26 Aug 2026 23:36:04 +0400 Subject: [PATCH] feat(view): add reusable base and action list views --- .../java/ru/project/view/ActionListView.java | 21 +++++++++ .../main/java/ru/project/view/BaseView.java | 23 +++++++++ .../main/java/ru/project/view/PanelView.java | 47 +++++++++++++++++++ 3 files changed, 91 insertions(+) create mode 100644 app/src/main/java/ru/project/view/ActionListView.java create mode 100644 app/src/main/java/ru/project/view/BaseView.java create mode 100644 app/src/main/java/ru/project/view/PanelView.java diff --git a/app/src/main/java/ru/project/view/ActionListView.java b/app/src/main/java/ru/project/view/ActionListView.java new file mode 100644 index 0000000..fa2bb07 --- /dev/null +++ b/app/src/main/java/ru/project/view/ActionListView.java @@ -0,0 +1,21 @@ +package ru.project.view; + +import com.googlecode.lanterna.gui2.ActionListBox; + +public class ActionListView extends BaseView { + + protected final ActionListBox actionList; + + public ActionListView(String title) { + this(title, new ActionListBox()); + } + + private ActionListView(String title, ActionListBox actionList) { + super(title, actionList); + this.actionList = actionList; + } + + public void addItem(String text, Runnable action) { + actionList.addItem(text, action); + } +} diff --git a/app/src/main/java/ru/project/view/BaseView.java b/app/src/main/java/ru/project/view/BaseView.java new file mode 100644 index 0000000..1bbf8c8 --- /dev/null +++ b/app/src/main/java/ru/project/view/BaseView.java @@ -0,0 +1,23 @@ +package ru.project.view; + +import com.googlecode.lanterna.gui2.BasicWindow; +import com.googlecode.lanterna.gui2.Component; +import com.googlecode.lanterna.gui2.WindowBasedTextGUI; + +public abstract class BaseView { + + protected final BasicWindow window; + + protected BaseView(String title, Component mainComponent) { + window = new BasicWindow(title); + window.setComponent(mainComponent); + } + + public void show(WindowBasedTextGUI gui) { + gui.addWindowAndWait(window); + } + + public void close() { + window.close(); + } +} diff --git a/app/src/main/java/ru/project/view/PanelView.java b/app/src/main/java/ru/project/view/PanelView.java new file mode 100644 index 0000000..ab36e50 --- /dev/null +++ b/app/src/main/java/ru/project/view/PanelView.java @@ -0,0 +1,47 @@ +package ru.project.view; + +import com.googlecode.lanterna.gui2.Button; +import com.googlecode.lanterna.gui2.Label; +import com.googlecode.lanterna.gui2.LinearLayout; +import com.googlecode.lanterna.gui2.Panel; +import com.googlecode.lanterna.gui2.TextBox; + +public class PanelView extends BaseView { + + protected final Panel panel; + + public PanelView(String title) { + this(new Panel(), title); + } + + private PanelView(Panel panel, String title) { + super(title, panel); + + this.panel = panel; + panel.setLayoutManager(new LinearLayout()); + } + + public Button addButton(String text, Runnable action) { + Button button = new Button(text, action); + + panel.addComponent(button); + + return button; + } + + public Label addLabel(String text) { + Label label = new Label(text); + + panel.addComponent(label); + + return label; + } + + public TextBox addTextBox() { + TextBox textBox = new TextBox(); + + panel.addComponent(textBox); + + return textBox; + } +}