{"id":18700980,"url":"https://github.com/rabestro/jetbrains-academy-console-menu-system","last_synced_at":"2025-11-08T23:30:23.110Z","repository":{"id":105045867,"uuid":"291707819","full_name":"rabestro/jetbrains-academy-console-menu-system","owner":"rabestro","description":"The very simple one-class console menu system for JetBrains Academy projects. ","archived":false,"fork":false,"pushed_at":"2020-11-22T09:16:19.000Z","size":163,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-28T05:25:31.287Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rabestro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-31T12:22:16.000Z","updated_at":"2020-11-22T09:10:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"2358e787-1d62-4de7-952f-65ffd7735b30","html_url":"https://github.com/rabestro/jetbrains-academy-console-menu-system","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rabestro%2Fjetbrains-academy-console-menu-system","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rabestro%2Fjetbrains-academy-console-menu-system/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rabestro%2Fjetbrains-academy-console-menu-system/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rabestro%2Fjetbrains-academy-console-menu-system/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rabestro","download_url":"https://codeload.github.com/rabestro/jetbrains-academy-console-menu-system/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239565650,"owners_count":19660154,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T11:40:07.316Z","updated_at":"2025-11-08T23:30:22.982Z","avatar_url":"https://github.com/rabestro.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Console Menu System\n\nA simple class for building menus for console applications.This class was designed to make it easy to create simple console menus for educational projects in particular the project of the JetBrains Academy).\n\n### Usage example:\n\n```java\nimport ui.SimpleMenu;\n\npublic class Main {\n\n    public static void main(String[] args) {\n        final var bigClass = new BigClass(\"Some Configuration\");\n\n        new SimpleMenu()\n                .add(\"Play the guessing game\", new Game(\"Guessing Game\"))\n                .add(\"Play the sudoku\", new Game(\"Sudoku\"))\n                .add(\"Search for an animal\", Main::searchAnimal)\n                .add(\"Entering Submenu\", new SimpleMenu().onlyOnce()\n                        .set(SimpleMenu.Property.TITLE, \"--- Sub-Menu Title ---\")\n                        .set(SimpleMenu.Property.EXIT, \"Back to main menu\")\n                        .add(\"The sub-menu entry\", new SomeTask())\n                        .add(\"A simple sub-menu task\", () -\u003e System.out.println(\"A simple task\"))\n                        .add(\"First Task in Big Class\", bigClass::firstTask)\n                        .add(\"Second Task in Big Class\", bigClass::secondTask))\n                .addExit()\n                .run();\n    }\n\n    static void searchAnimal() {\n        System.out.println(\"Search for an animal\");\n    }\n}            \n```\n\n## Main classes\n\n- Menu - base class for Menu. Uses System.out.println.\n- internal public enum Property - describes properties you can set for menu\n- internal protected class MenuEntry -  describes menu item\n\n### Additional classes\n\n- UI - interface for very simple text UI. Supports println(\"text/format\", ...args)\n- ConsoleUI - implementation for UI\n- LocalUI - implementation with i18n \u0026 l10n support. You can easily add support for many languages.\n- ConsoleMenu - implementation of Menu interface based on ConsoleUI\n- LocalMenu - implementation based on LocalUI. \n\n## UML Diagrams\n\n![Package ui](uml/ui.png)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frabestro%2Fjetbrains-academy-console-menu-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frabestro%2Fjetbrains-academy-console-menu-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frabestro%2Fjetbrains-academy-console-menu-system/lists"}