feat(view): add reusable base and action list views

This commit is contained in:
2026-08-26 23:36:04 +04:00
parent 1ee2fc3d06
commit d615a6e3d6
3 changed files with 91 additions and 0 deletions
@@ -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);
}
}
@@ -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();
}
}
@@ -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;
}
}