diff --git a/app/pom.xml b/app/pom.xml
index 509e563..5afca24 100644
--- a/app/pom.xml
+++ b/app/pom.xml
@@ -41,6 +41,13 @@
junit-jupiter-params
test
+
+
+ com.googlecode.lanterna
+ lanterna
+ 3.1.5
+
+
@@ -91,5 +98,18 @@
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 3.6.3
+
+
+ ru.project.App
+
+
+
+
diff --git a/app/src/main/java/ru/project/App.java b/app/src/main/java/ru/project/App.java
index 8fd4c39..bf57afc 100644
--- a/app/src/main/java/ru/project/App.java
+++ b/app/src/main/java/ru/project/App.java
@@ -1,10 +1,31 @@
package ru.project;
-/**
- * Hello world!
- */
-public class App {
- public static void main(String[] args) {
- System.out.println("Hello World!");
+import com.googlecode.lanterna.gui2.MultiWindowTextGUI;
+import com.googlecode.lanterna.screen.Screen;
+import com.googlecode.lanterna.screen.TerminalScreen;
+import com.googlecode.lanterna.terminal.DefaultTerminalFactory;
+import ru.project.ui.MainMenu;
+import ru.project.ui.Navigator;
+
+public final class App {
+
+ private App() {}
+
+ public static void main(String[] args) throws Exception {
+ DefaultTerminalFactory factory = new DefaultTerminalFactory();
+
+ Screen screen = new TerminalScreen(factory.createTerminal());
+
+ screen.startScreen();
+
+ try {
+ MultiWindowTextGUI gui = new MultiWindowTextGUI(screen);
+
+ Navigator navigator = new Navigator(gui);
+
+ gui.addWindowAndWait(new MainMenu(navigator));
+ } finally {
+ screen.stopScreen();
}
+ }
}
diff --git a/app/src/main/java/ru/project/ui/CollectionView.java b/app/src/main/java/ru/project/ui/CollectionView.java
new file mode 100644
index 0000000..82b9540
--- /dev/null
+++ b/app/src/main/java/ru/project/ui/CollectionView.java
@@ -0,0 +1,8 @@
+package ru.project.ui;
+
+public class CollectionView extends EmptyMenu {
+
+ public CollectionView() {
+ super("Текущая коллекция");
+ }
+}
diff --git a/app/src/main/java/ru/project/ui/CountOccurrencesMenu.java b/app/src/main/java/ru/project/ui/CountOccurrencesMenu.java
new file mode 100644
index 0000000..db8e0c8
--- /dev/null
+++ b/app/src/main/java/ru/project/ui/CountOccurrencesMenu.java
@@ -0,0 +1,8 @@
+package ru.project.ui;
+
+public class CountOccurrencesMenu extends EmptyMenu {
+
+ public CountOccurrencesMenu() {
+ super("Подсчёт количества вхождений");
+ }
+}
diff --git a/app/src/main/java/ru/project/ui/CreateCollectionMenu.java b/app/src/main/java/ru/project/ui/CreateCollectionMenu.java
new file mode 100644
index 0000000..6ea56fc
--- /dev/null
+++ b/app/src/main/java/ru/project/ui/CreateCollectionMenu.java
@@ -0,0 +1,8 @@
+package ru.project.ui;
+
+public class CreateCollectionMenu extends EmptyMenu {
+
+ public CreateCollectionMenu() {
+ super("Создание новой коллекции");
+ }
+}
diff --git a/app/src/main/java/ru/project/ui/EmptyMenu.java b/app/src/main/java/ru/project/ui/EmptyMenu.java
new file mode 100644
index 0000000..0385780
--- /dev/null
+++ b/app/src/main/java/ru/project/ui/EmptyMenu.java
@@ -0,0 +1,23 @@
+package ru.project.ui;
+
+import com.googlecode.lanterna.gui2.BasicWindow;
+import com.googlecode.lanterna.gui2.Button;
+import com.googlecode.lanterna.gui2.Direction;
+import com.googlecode.lanterna.gui2.Label;
+import com.googlecode.lanterna.gui2.LinearLayout;
+import com.googlecode.lanterna.gui2.Panel;
+
+public abstract class EmptyMenu extends BasicWindow {
+
+ protected EmptyMenu(String title) {
+ super(title);
+
+ Panel panel = new Panel(new LinearLayout(Direction.VERTICAL));
+
+ panel.addComponent(new Label("Раздел находится в разработке"));
+
+ panel.addComponent(new Button("Назад", this::close));
+
+ setComponent(panel);
+ }
+}
diff --git a/app/src/main/java/ru/project/ui/MainMenu.java b/app/src/main/java/ru/project/ui/MainMenu.java
new file mode 100644
index 0000000..361ce13
--- /dev/null
+++ b/app/src/main/java/ru/project/ui/MainMenu.java
@@ -0,0 +1,34 @@
+package ru.project.ui;
+
+import com.googlecode.lanterna.gui2.BasicWindow;
+import com.googlecode.lanterna.gui2.Button;
+import com.googlecode.lanterna.gui2.Direction;
+import com.googlecode.lanterna.gui2.LinearLayout;
+import com.googlecode.lanterna.gui2.Panel;
+
+public class MainMenu extends BasicWindow {
+
+ public MainMenu(Navigator navigator) {
+ super("ГЛАВНОЕ МЕНЮ");
+
+ Panel panel = new Panel(new LinearLayout(Direction.VERTICAL));
+
+ panel.addComponent(new Button("Показать текущую коллекцию", navigator::showCollectionView));
+
+ panel.addComponent(new Button("Создать новую коллекцию", navigator::showCreateCollection));
+
+ panel.addComponent(
+ new Button("Сохранить текущую коллекцию в файл", navigator::showSaveCollection));
+
+ panel.addComponent(new Button("Сортировать текущую коллекцию", navigator::showSortCollection));
+
+ panel.addComponent(new Button("Найти элемент", navigator::showSearchElement));
+
+ panel.addComponent(
+ new Button("Подсчитать количество вхождений", navigator::showCountOccurrences));
+
+ panel.addComponent(new Button("Завершить выполнение программы", this::close));
+
+ setComponent(panel);
+ }
+}
diff --git a/app/src/main/java/ru/project/ui/Navigator.java b/app/src/main/java/ru/project/ui/Navigator.java
new file mode 100644
index 0000000..13489c1
--- /dev/null
+++ b/app/src/main/java/ru/project/ui/Navigator.java
@@ -0,0 +1,41 @@
+package ru.project.ui;
+
+import com.googlecode.lanterna.gui2.BasicWindow;
+import com.googlecode.lanterna.gui2.WindowBasedTextGUI;
+
+public class Navigator {
+
+ private final WindowBasedTextGUI gui;
+
+ public Navigator(WindowBasedTextGUI gui) {
+ this.gui = gui;
+ }
+
+ public void show(BasicWindow window) {
+ gui.addWindowAndWait(window);
+ }
+
+ public void showCollectionView() {
+ show(new CollectionView());
+ }
+
+ public void showCreateCollection() {
+ show(new CreateCollectionMenu());
+ }
+
+ public void showSaveCollection() {
+ show(new SaveCollectionMenu());
+ }
+
+ public void showSortCollection() {
+ show(new SortCollectionMenu());
+ }
+
+ public void showSearchElement() {
+ show(new SearchElementMenu());
+ }
+
+ public void showCountOccurrences() {
+ show(new CountOccurrencesMenu());
+ }
+}
diff --git a/app/src/main/java/ru/project/ui/SaveCollectionMenu.java b/app/src/main/java/ru/project/ui/SaveCollectionMenu.java
new file mode 100644
index 0000000..cc0f36a
--- /dev/null
+++ b/app/src/main/java/ru/project/ui/SaveCollectionMenu.java
@@ -0,0 +1,8 @@
+package ru.project.ui;
+
+public class SaveCollectionMenu extends EmptyMenu {
+
+ public SaveCollectionMenu() {
+ super("Сохранение текущей коллекции");
+ }
+}
diff --git a/app/src/main/java/ru/project/ui/SearchElementMenu.java b/app/src/main/java/ru/project/ui/SearchElementMenu.java
new file mode 100644
index 0000000..7e92c4f
--- /dev/null
+++ b/app/src/main/java/ru/project/ui/SearchElementMenu.java
@@ -0,0 +1,8 @@
+package ru.project.ui;
+
+public class SearchElementMenu extends EmptyMenu {
+
+ public SearchElementMenu() {
+ super("Поиск элемента");
+ }
+}
diff --git a/app/src/main/java/ru/project/ui/SortCollectionMenu.java b/app/src/main/java/ru/project/ui/SortCollectionMenu.java
new file mode 100644
index 0000000..68e6a7a
--- /dev/null
+++ b/app/src/main/java/ru/project/ui/SortCollectionMenu.java
@@ -0,0 +1,8 @@
+package ru.project.ui;
+
+public class SortCollectionMenu extends EmptyMenu {
+
+ public SortCollectionMenu() {
+ super("Сортировка текущей коллекции");
+ }
+}